我有一张安装了 Ubuntu 12.04 的磁盘,可以通过 UEFI 和 grub(可能是 grub2)启动。我尝试使用它来启动一个物理上不同但其他方面完全相同的系统(主板、CPU 和 BIOS 版本),但 BIOS 无法找到可启动的操作系统。
我推测要么需要将一些可启动 FS 信息写入主板 NVRAM,要么需要将一些主板序列号写入磁盘。但是,错误出在哪里以及如何修复它却一点也不明显。
如果系统出现主板故障(甚至怀疑出现故障),能够更换主板非常有用。尤其是当可以替换相同的系统时。
我可以从安装映像(实际上是 13.04)启动并运行 efibootmgr - 它不显示该磁盘的 Linux/Ubuntu 条目。简单来说efibootmgr -d /dev/sdb -c
没什么区别。
主板是英特尔 DQ77KB。
答案1
例如,我知道 grub 和硬盘的 UUID。我刚刚了解到,如果我读到的内容属实,它们在另一个主板上的生成方式会有所不同。因此,您很可能需要/etc/fstab
用实际设备替换硬盘的 UUID。/dev/sd*
您可以查看此输出并找出如何在 UUID 发生变化时输入新的 UUID
sudo fdisk -l
sudo blkid
cat /etc/fstab
如果您遇到问题,请向我们展示此操作的输出。此外,如果您有自定义 grub 文件,请查看,然后update-grub
在挂载磁盘后对其进行操作。您可能还需要在该磁盘上 chroot。或者从 livecd 运行一些 grub 修复程序,或者使用 superbootdisk/supergrubdisk?或类似的东西。但我不确定他们是否正在修复 fstab。
为什么你会期望一切都正常?Ubuntu 已针对旧主板进行了配置,可能需要针对新主板以不同的方式进行配置。
实时 CD/DVD 可能会起作用,因为它可以在启动时检测硬件而无需加载任何特定设置。
我只需要备份旧系统,安装一个新的 ubuntu,并覆盖旧系统的一些设置(可能只是整个主文件夹和 /etc 中的某些内容...)
答案2
UEFI 机器有两种启动机制:1) NVRAM 具有内部硬盘选项列表和 2) 可移动媒体,使用 /EFI/Boot/bootx64.efi。您可以通过再次运行 grub-install 将您的 Ubuntu 添加到 NVRAM(查看手册页以了解适合您特定情况的开关,--uefi***something(例如安全启动)。和/或将 grubx64.efi/shim.efi(取决于您是否使用安全启动)复制到 /EFI/Boot/bootx64.efi。如果您之前一直使用磁盘进行启动,它应该仍可使用相同的 uuid(它们依赖于文件系统,并且您具有相同的文件系统)。
您可以通过在 USB 启动设备上设置 EFI 分区来避免使用任何 NVRAM,并使用硬盘安装 grub。另一种“后备”启动机制是在硬盘上将 /EFI/Boot/bootx64.efi 设置为 shim,并将 grubx64.efi 的副本也放在那里。然后在某些情况下,当启动失败时,会在启动顺序中的下一个条目之前尝试启动。