在安装windows和linux双系统的电脑上,如果在windows内更改了分区,分区的编号发生改变,grub将不能正常启动,进去grub resuce,这里介绍恢复的办法,不同的系统可能有些地方有差别,这里安装的linux是Archlinux,分区格式是GPT,使用UEFI引导。
正常引导进入系统
- 使用
ls
命令找到linux所在的分区,如:
grub rescue> ls
(hd0),(hd0,gpt5),(hd0,gpt4),(hd0,gpt3),(hd0,gpt2),(hd0,gpt1) //非gpt分区格式可能是(hd0,5)...
grub rescue> ls (hd0,gpt4)/boot/grub //非efi的没有x86_64-efi
fonts grub.cfg grub.cfg.example grubenv locale themes x86_64-efi
- 假如上一步确定linux安装在
(hd0,gpt5)
,接下来使用以下命令正常启动
grub rescue> set root=(hd0,gpt5)
grub resuce> set prefix=(hd0,gpt5)/boot/grub
grub resuce> insmod /boot/grub/x86_64-efi/normal.mod //可能位置不一样
grub resuce> normal
对grub进行修复
- 更新grub启动菜单
> sudo grub-mkconfig -o /boot/grub/grub.cfg
Ubuntu上不一样,应该是
> sudo update-grub
- 重新安装grub
> sudo grub-install --efi-directory=/boot/efi/ --bootloader-id=arch
Ubuntu上不一样,应该是
> sudo grub-install /dev/sda
安装完成之后可以重启测试是否成功
swap分区调整
如果使用了swap分区,可能需要调整fstab
> lsblk -f //查看所有分区
或者
> lsblk -no GUID /dev/sda8 //查看特定分区的UUID
然后需要更改/etc/fstab,
UUID=1b82fd04-9b8e-46d2-bd2b-1c81ab5161c6 none swap defaults 0 0
或者
/dev/sda8 none swap defaults 0 0