使用grub手动引导linux和windows

Grub无法启动内核时,便会进入Grub Rescue模式,应该是像这样的:

使用grub手动引导linux和windows_第1张图片

确定内核位置

ls命令可以列出Grub能搜索到的所有设备,其中(hdX, Y)指硬盘驱动器X中的分区Y。 然后继续ls来确认要启动的Linux内核所在的路径。

# 查看可选驱动器
ls 
# 试试哪个里面是 Linux
ls (hdX,Y)/boot/grub 

环境设置

set命令是用来设置Grub环境变量的。比如设置prefix之后我们便不需要写完整路径了,只需要给出以根路径开始的绝对路径即可(见下文)。 insmod用来载入一些Grub的动态模块,比如linux.mod

set prefix=(hdX,Y)/boot/grub
insmod (hdX,Y)/boot/grub/linux.mod # 可选,为了方便接下来的命令
set root=(hdX,Y)

启动内核

linux命令用来从文件载入一个内核,载入之后用initrd命令载入初始化内核的内存(还可以在内存中设置一些参数)。 最后用boot命令启动它!

# 也可以选用别的内核,如/boot/vmlinuz.0.62.XXX
linux /vmlinuz root=/dev/sda5       
initrd /initrd.img
boot

配置文件

系统启动之后我们便可以解决问题了,重新配置内核或者重新配置Grub。 Grub配置文件路径:

grub1:/boot/grub/grub.cfg
grub2:/etc/default/grub

一般只需要更新Grub配置文件中的内核列表,根据你的系统环境不同,执行下面三者之一即可:

update-grub                             #ubuntu grub
update-grub2                            #ubuntu grub2
grub-mkconfig -o /boot/grub/grub.cfg    #archlinux

在Grub配置文件中,可以设置开机时启动列表的顺序,这个可能比较有用:

# 如果是saved, 旧版grub需设 GRUB_SAVEDEFAULT=true() #需要更新内核列表
GRUB_DEFAULT=0,1,2...saved    

写入MBR

上文通过Grub Rescue来手动引导内核的前提是Grub可以正常启动,只是Grub找不到内核了。但对于安装Windows导致的MBR被重写,Grub也是无法启动的。 这时需要用一个Linux启动盘来进入系统,然后将Grub启动记录写入MBR:

# Linux系统所在分区
mount /dev/sda7 /mnt/linuxsys           
# 如果/boot 单独分区
mount /dev/sda6 / mnt/linuxsys/boot     
# grub1.99与以后(grub2)
grub-install --boot-directory=/mnt/linuxsys/boot /dev/sda     
# grub1.98与以前(grub1)
grub-install --root-directory=/mnt/linuxsys /dev/sda          

引导windows(小编未亲测)

重启进入到grub菜单界面时,按“c”键进入grub命令模式。

grub> rootnoverify (hd0,0)
grub> chainloader +1
grub> makeactive
grub> boot

转自:https://harttle.land/2015/10/02/grub-rescue.html

你可能感兴趣的:(使用grub手动引导linux和windows)