ubuntu 下 grub 的重装

Table of Contents

解决由于在 EFI 分区里面的 grub 引导被替换成了 windows bootmgr 导致的无法引导 ubuntu 的问题。

问题

因为某些原因,需要在电脑上安装一个 windows 7. 但是因为硬盘用的 GPT 格式并用 ESP 分区引导,导致原装 windows 安装盘的 windows 安装程序无法使用。

于是用了某些装机工具。于是 GRUB 引导被该工具删除并写入了 Windows bootmgr 引导。

解决办法

还好我上次装 Ubuntu 用的 USB Live CD 没有被我格式化掉。于是用 usb 引导进 live CD 系统,然后执行如下命令。

sudo apt-get update
sudo apt-get install grub
sudo mount /dev/sda5 /mnt #挂载 ubuntu 系统所在的分区到任意一个文件夹,一般用 /mnt 就可以
sudo mount /dev/sda1 /mnt/boot/efi #挂在 ESP 分区到 /boot/efi 目录,这是我失败好久之后才发现必须要做的。
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
#在新的根目录下
grub-install /dev/sda #一般的话,这样就足够了,如果有特殊情况,有时候需要单独加别的参数
update-grub #更新 grub 配置文件到 ESP 分区

执行玩上述命令后重启系统后拔掉 U 盘从硬盘引导,一般就能进入系统了。

注:上述命令仅限于硬盘使用 ESP 分区引导的情况,如果使用 legacy 设置活动分区的方式引导的话,上述命令是无效的。

最后的小问题

因为某些原因,我一怒之下把原来的 ESP 分区格式化了,导致了分区的 UUID 发生了一些变化,以至于每次进入硬盘系统的时候都会有一个错误提示(虽然不影响系统的使用,不过很烦)。

所以我必须把这个问题解决了,后来发现解决办法其实很简单,使用 blkid 命令查看 ESP 分区的 UUID, 并将其替换到 /etc/fstab 文件中 /boot/efi 挂载分区的 UUID 处即可。

PS:因为格式化分区之后 UUID 发生了变化,而系统根据 fstab 里面的 UUID 来挂载分区,导致 EFI 分区挂载失败,所以开机会有错误提示,修正后就消失了。

补充:还有一点忘记提了,因为格式化 ESP 分区后,只装了 GRUB,所以现在我又没法进入 WINDOWS 系统了,唉。还要想办法把 windows bootmgr 弄回来,烦。

Date: <2016-05-06 Fri>

Author: Matrikslee

Created: 2017-05-29 Mon 17:56

Emacs 25.2.1 (Org mode 8.2.10)