我刚买了一台 MacBook Air。我用 Ubuntu 双引导 mac 操作系统。这是我第一次在 Mac 上进行多重启动。我用另一个 Ubuntu 进行了三次启动。删除第三个发行版后,我遇到了一些 grub 问题。
首先,我按如下方式进行分区:
$ lsblk
sda
sda1 200M /boot/efi
sda2 47.3GB # Mac os
sda3 620MB # Mac rescue
sda4 2GB # Swap partition
sda5 50GB # Ubuntu 1
sda6 50GB # Ubuntu 2
sda10 100GB # ext4 file system
我在sda5
.完成后,它会直接启动 Ubuntu,这很棒。后来我安装了另一个 ubuntu,sda6
因为我想使用其他 ditro 进行测试,并且我想检查是否可以轻松做到这一点。请注意,Ubuntu 版本与我在另一个分区上安装的版本完全相同。安装第二个 Ubuntu 后,我重新启动,grub 屏幕要求我在两个 Ubuntu 之间进行选择。整洁的。然后,由于第二个 ubuntu 没有用,我只是sda6
使用以下命令删除gdisk
:
$ gdisk /dev/sda
> d # delete partition
> 6 # delete partition 6
> w # write changes
> Y # confirmation of writing changes.
> q # quit gdisk
$ lsblk
sda
sda1 200M /boot/efi
sda2 47.3GB # Mac os
sda3 620MB # Mac rescue
sda4 2GB # Swap partition
sda5 50GB # Ubuntu 1
sda10 100GB # ext4 file system
现在重新启动后,我会在黑屏上看到 grub 命令行。我必须指定我的 ubuntu 所在的磁盘。我按照该线程中的一些指示在 Ubuntu 上启动: https://askubuntu.com/questions/159846/tried-to-boot-ubuntu-but-the-grub-rescue-shows-up-instead 并尝试执行以下操作:
grub> ls (hd2,gpt5) # That's my Ubuntu partition
grub> root=(hd2,gpt5)
grub> configfile /boot/grub/grub.cfg
现在我已经成功启动Ubuntu了。登录后,我按照更新 grub 的说明进行操作:
$ sudo update-grub
唉,重新启动时,grub 屏幕再次弹出。所以更新 grub 并没有解决问题。我还尝试使用 grub 2 以防万一:
$ sudo update-grub2
它不会改变任何东西。
我还尝试在 sda6 上重新安装第二版 Ubuntu。同样的方案,当我重新启动时,系统会要求我在 grub 菜单中的两个 Ubuntu 版本之间进行选择,这样就解决了问题。但是,一旦我删除第二个 Ubuntu 分区,第一个分区就不会直接启动,除非我在 grub 命令行屏幕中指定它。
我不知道这是否有用,但这是我的 fstab:
$ cat /etc/fstab
# /etc/fstab: static file system information.
#
# Use 'blkid' to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# <file system> <mount point> <type> <options> <dump> <pass>
# / was on /dev/sda2 during installation
UUID=85ab4560-729a-4f7d-91d9-69af89ea1219 / ext4 errors=remount-ro 0 1
# /boot/efi was on /dev/sda1 during installation
UUID=DAC6-DEC2 /boot/efi vfat defaults 0 1
# swap was on /dev/sda4 during installation
UUID=9c76739a-5996-43d8-a14e-fe690c06870f none swap sw 0 0
我可以做什么来解决这个问题?是EFI的问题吗?为什么删除第二个 Ubuntu 分区会使第一个分区无法被 grub 识别?
请注意,我想找到一个干净的解决方案,所以我想避免重新安装 Ubuntu 来解决它。
答案1
您需要grub.cfg
使用以下命令重新创建:
grub2-mkconfig -o /boot/grub2/grub.cfg
或者
grub-mkconfig -o /boot/grub/grub.cfg
答案2
我通过从该线程中获取提示解决了我的问题:https://superuser.com/questions/376470/how-to-reinstall-grub2-efi
我不需要使用实时安装,我只是通过 grub 窗口启动到我的 ubuntu 会话。然后我重新安装了grub:
$ apt-get install --重新安装 grub-efi-amd64
这也会自动执行 update-grub。它可以工作并更新了 /boot/efi/EFI/ubuntu/grub.cfg 中的 grub.cfg 文件,更新了从以下位置启动 ubuntu 的正确分区:
$ cat /boot/efi/EFI/ubuntu/grub.cfg
search.fs_uuid 17441147-6b9d-45fe-bccd-bed2451f43f8 root hd0,gpt5
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
此前,运行
$ 更新 grub
既不会更新uuid,也不会更新分区,旧分区是最新的ubuntu分区,名为hd0,gpt6。所以看来重新安装grub是有必要的。