Ubuntu server 12.04 系统修复EFI(GPT)+GRUB启动菜单的方法
准备好一张ubuntu server 12.04 live USB,最好选择与当前系统相同的版本。开机启动 Live USB,进入救援模式。等待各种输出结束,当进行到挂载根分区阶段时,选择系统所在的根分区,然后选择“在安装程序环境中运行shell”,打开终端。也可以使用ubuntu desktop 12.04的live usb启动并进入Try Ubuntu (试用模式),打开终端。下面是利用ubuntu server 12.04 Live USB启动并进入“救援模式”后的终端处理步骤(#后为注释):
1.提权# sudo -i #提权
2.查看硬盘分区状况,获取 Linux 系统安装分区编号用parted和blkid命令查gpt分区情况:# parted# blkid
假如我的 ubuntu 的 / 分区是sda2,又假如 /boot/efi 分区是 sda1。
3.挂载ubuntu安装根分区和EFI启动分区:# mkdir target
# mount /dev/sda2 /target
# mount /dev/sda1 /target/boot/efi
4.挂载其他所需的目录(使用 --bind)如果grub.cfg己丢失,需要重建 grub.cfg 配置文件,还需要挂载以下所需的目录(使用 --bind):
mount --bind /dev /target/devmount --bind /proc /target/proc #经测试,此步可省略
mount --bind /sys /target/sys #经测试,此步可省略
5.Chroot 到硬盘上的 Linux 系统
# chroot /target
6.重新生成 /boot/grub/grub.cfg配置文件:# grub-mkconfig -o /boot/grub/grub.cfg
7.安装&更新 Grub
然后将 GRUB安装到/boot/efi分区:# grub-install /boot/efi
注:如果将 GRUB 安装到一个 GPT 磁盘,硬盘中有一个专门的EFI分区,此时,/boot/efi 一般是EFI分区的挂载点。启动时,UEFI固件在这里加载引导代码。你的系统的引导文件存放在 /boot/efi/EFI/ubuntu 中。
请确保计算机包含一个EFI引导分区。没有该分区,GRUB 可能拒绝安装或者安装后仍不可启动。如果您将 GRUB 安装到一个基于 EFI 的计算机,那么可以省略设备规范,确保您的 ESP 挂载在 /boot/efi 上。grub-install 自动将必要的文件复制到这个目录(进而布置到 ESP)。
如果你的分区是MBR模式,您可能需要将 GRUB 安装到 /dev/sda 以外的设备,比如 /dev/sdb。一般不建议将 GRUB 2 安装到某个分区。
8.Grub 已经修复成功,我们还需要退出 chroot 环境、卸载已经挂载的设备与目录(以下操作可省略):
# exit #退出 chroot 环境# umount /target/dev# umount /target/proc# umount /target/sys# umount /target
9.重启!
上面就是使用Ubuntu LiveUSB修复grub的方法介绍了,经本人多次测试可行,如果你ubuntu 系统在启动中出现Grub引导错误,不妨使用该方法进行修复吧。
ubuntu 12.04中的启动文件 /boot/grub里有一个efi文件夹和grub.cfg,/boot/efi/EFI/ubuntu里又有几个efi文件和grub.cfg,查看结果如下:
#ls /boot/grub
fonts grub.cfg grubenv locale unicode.pf2 x86_64-efi
#ls /boot/efi/EFI/ubuntu
grub.cfg grubx64.efi MokManager.efi shimx64.efi
对于GPT分区表,硬盘中有一个专门的EFI分区,此时,/boot/efi 一般是EFI分区的挂载点。启动时,UEFI固件在这里加载引导代码。系统的引导文件存放在 /boot/efi/EFI/ubuntu 中。至于为什么 /boot/grub 中会有efi文件夹和grub.cfg 这个我也不清楚。 :victory:
页:
[1]