找回密码
 注册
首页 ≡≡网络技术≡≡ 服务器 Ubuntu server 12.04 系统修复EFI(GPT)+GRUB启动菜单的 ...

linux Ubuntu server 12.04 系统修复EFI(GPT)+GRUB启动菜单的方法

灰儿 2016-6-10 20:48:44
准备好一张ubuntu server 12.04 live USB,最好选择与当前系统相同的版本。开机启动 Live USB,进入救援模式。等待各种输出结束,当进行到挂载根分区阶段时,选择系统所在的根分区,然后选择“在安装程序环境中运行shell”,打开终端。也可以使用ubuntu desktop 12.04的live usb启动并进入Try Ubuntu (试用模式),打开终端。
01.jpg

下面是利用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/dev
mount --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引导错误,不妨使用该方法进行修复吧。

灰儿 楼主 2016-6-10 22:24:35
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 这个我也不清楚。
您需要登录后才可以回帖 登录 | 注册
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。
学习中心
站长自定义文字内容,利用碎片时间,随时随地获取优质内容。
Q设计语言 了解更多
Q Design 提供商家设计所需的指导与资源,帮商家快速完成产品设计、降低生产成本。