删除另一个发行版分区后重新启动时的 Grub 菜单

删除另一个发行版分区后重新启动时的 Grub 菜单

我刚买了一台 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是有必要的。

相关内容