这是关于 Windows 10 和 Ubuntu 18.04 双启动系统的问题。双启动设置如下:伍比尤菲。
我将启动盘克隆到新磁盘,然后用新磁盘替换它。此后 Ubuntu 停止启动。我想让它恢复正常。
当我启动我的电脑时,我得到一个带有 4 个选项的 grub 菜单:
- Ubuntu
- Ubuntu 的高级选项
- Windows 启动管理器(在 /dev/sdb2 上)
- 系统设置
如果我选择 Ubuntu 选项,我会得到以下文本:
Booting a command list
error: no such device: B0ACCB58ACCB17AC
Press any key to continue..
按下任意键系统就会挂起。
如果我选择 Windows 选项,我会得到:
error: no such device: 62A5-4B98.
error: file `/EFI/Microsoft/Boot/bootmgfw.efi' not found.
Press any key to continue...
如果在启动过程中我选择 BIOS 启动选项,我仍然可以登录 Windows。当我这样做时,我看到菜单:
- P0:西数 WD40EZRZ-00WN9B0
- P2:西数 WD4005FZEX-00Z4SA0
- Windows 启动管理器
- P1:CT1000MX500SSD1
- 徐本图
- 进入设置
如果我选择 P0、P1 或 P2 选项,我会收到一条有关缺少引导记录的消息。如果我选择 Xubuntu,我会进入上面描述的 grub 菜单。如果我选择 Windows 启动管理器,我可以成功启动到 Windows。
这是我e
在 grub 中的 Ubunutu 行上选择时看到的内容:
setparams 'Ubuntu'
gfxmode $linux_gfx_mode
insmod gzio
insmod ntfs
set root='hd1,gpt4'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt4 --hint-efi=hd1,gpt4 --hint-baremetal=ahci1,gpt4 B0ACCB58ACCB17AC
else
search --no-floppy --fs-uuid --set=root B0ACCB58ACCB17AC
fi
loopback loop0 /ubuntu/disks/root.disk
set root=(loop0)
linux /boot/vmlinuz-4.15.0-39-generic root=UUID=B0ACCB58ACCB17AC loop=/ubuntu/disks/root.disk ro rootflags=sync quiet splash $vt_handoff
initrd /boot/initrd.img-4.15.0-39-generic
我该如何修复我的 grub 以便可以再次通过 grub 启动 Windows 和 Linux?
注意:以上所有内容都是我手动输入的(没有从启动屏幕复制粘贴),因此对于任何拼写错误我深表歉意
答案1
您的问题是,克隆磁盘后文件系统 UUID 值发生了变化,具体来说,有两个变化对您有影响,即 Windows 文件系统 UUID 和 Ubuntu 文件系统 UUID。修复此问题所需的大部分信息包含在这个有用的问题,让我们补充一下缺失的细节。
当您启动并出现 grub 屏幕时,转到“高级...”并选择恢复模式。启动过程完成后,选择 root shell。您的目标是找出新的 windows 值(以前是)62A5-4B98
和新的 linux 值(以前是)B0ACCB58ACCB17AC
。
进入 root shell 后使用以下两个命令:
fdsik -l
blkid
第一个将显示现有分区,您应该查找具有“EFI 系统”或类似描述的分区。这就是您在输出中寻找的分区blkid
。这将为您提供 Windows 的 UUID。请注意,根据您的配置,您可能有多个这样的分区。如果不了解更多信息,我无法告诉您应该选择哪一个,假设您知道您的磁盘包含什么,并且应该能够分辨出您的 PC 上可能有哪些其他磁盘无关紧要。UUID 将具有熟悉的XXXX-XXXX
格式,因此应该很容易识别。
同样,您需要找出哪个分区用于引导 Linux。我猜如果剩余的分区位于同一磁盘上,则该分区应该打开。找出哪个分区的最佳方法是临时插入旧磁盘驱动器(确保在执行此操作之前关闭 PC)并在其上运行 blkid。它应该会显示B0ACCB58ACCB17AC
其中一个分区,您应该能够推断出新驱动器上的哪个分区与该分区相对应。这有点不精确,但如果不从屏幕上看到所有内容,就很难给出精确的说明。
再次重启,在 grub 菜单中按下e
“Ubuntu”行。B0ACCB58ACCB17AC
用你找到的每个值替换它,然后按下F10
继续启动。
但是启动会失败,因为你使用了 wubiuefi,需要挂载 Windows 磁盘才能加载 Linux 磁盘。在终端中,Ctrl-Alt-F2
你应该会看到一个提示,提示你按 Enter 键进入恢复会话。照做。编辑/etc/fstab
并用62A5-4B98
你找到的新值替换。保存、重新启动,再次执行相同的替换顺序B0ACCB58ACCB17AC
,现在你应该终于能够启动 Linux 了。
登录后,编辑/boot/grub/grub.cfg
并查找/替换所有内容,B0ACCB58ACCB17AC
并将其全部替换62A5-4B98
为各自的新值。保存并运行update-grub
。
现在您应该能够通过 grub 菜单登录到 Windows 或 Linux。