grub rescue模式下修复grub启动项

主要是双系统下windows升级把grub启动项破坏了, 一开机直接进入grub rescue模式 , 在救援模式下只有很少的命令可以用:

(1) set 查看环境变量 , 这里可以查看启动路径和分区

(2) ls 查看设备

(3) insmod 加载模块

(4) root 指定用于启动系统的分区 , 在救援模式下设置grub启动分区

(5) prefix 设置grub启动路径

具体步骤:

1. 查看设备分区

grub rescue> ls

(hd0) (hd0,msdos9) (hd0,msdos8) (hd0,msdos7) (hd0,msdos6) (hd0,msdos5) (hd0,msdos2) (hd0,msdos1)

每个人都不一样, 但原理都是一样的.

2. 找到你的linux的boot装在哪个分区

grub rescue> ls (hd0,msdos1)/

  • 若出现unknown filesystem字样,则尝试下一个

  • 若出现的是你的ubuntu主文件夹下的文件夹和文件的名字,那就是的要找的分区了。

3. 手动指定启动分区和路径

这里我的启动分区是(hd0,msdos8) , 每个人的都不太一样 , 自己替换


grub rescue>set root=(hd0,msdos8)
grub rescue>set prefix=(hd0,msdos8)/boot/grub
grub rescue>insmod normal  
grub rescue>normal         // 输入这个后就会进入之前的grub启动项了 , 但是grub还是没有修改 , 只是临时的修改了启动项 , 所以还要在选择启动项界面按C键进入grub命令行模式
 

4. 修改grub配置

grub >set root=hd0,msdos8

grub >set prefix=(hd0,msdos8)/boot/grub

grub >linux /boot/vmlinuz-xxx-xxx.img root=/dev/nvme0n1p5 (这里的vmlinuz-xxx-xxx根据自己的机器按tab补全 , 而/dev/nvme0n1p5这个分区 , 因为我的linux是装在我的nvme的固态盘的 , 在linux下这个分区就被映射成nvme0n1p5了 , 这个照自己的机器修改 , 注意这个和上面的hd0不是同一个意义啊 , 自己查看自己机器)

grub >initrd /boot/initrd.img-xxx-xxx.img (同上 , 不赘述了)

grub >boot   启动linux , 即可成功进入linux , 还有一步要做

 

5. 更新grub配置

在linux下更新grub配置

如果是有update-grub命令的(比如ubuntu) , 直接输入

sudo update-grub

sudo grub-install /dev/sda (将grub安装在linux分区 , 注意是sda,硬盘号,而不是具体某个分区号,如sda1)

不支持update-grub命令的可以输入

sudo grub2-mkconfig -o /boot/grub2/grub.cfg (这句相当于上面的第一句 , 有些是grub不是grub2 , 自己都试试就知道了)

sudo grub-install /dev/sda

 

 

 

你可能感兴趣的:(玩机)