这个问题有些复杂,但请耐心听我说,其实它并没有那么复杂。
所以,我有两个硬盘,我怀疑其中一个有时会出现故障,但在我完全更换它之前(我还不知道哪一个!)我在每一个硬盘上都放了一个引导加载程序。
我们将硬盘称为 /dev/sda 和 /dev/sdb。我安装了 3 个操作系统,其中两个安装在 /dev/sda 上,另一个安装在 /dev/sdb 上。所有操作系统都是不同风格的 Linux。现在,安装到 /dev/sda 的最后一个操作系统在其上放置了一个引导加载程序,该加载程序可以看到 /dev/sdb 上的另外两个操作系统,但旧的引导加载程序只能看到 /dev/sdb 上的两个操作系统(它本身就在那里)。
那么,有没有办法以某种方式更新磁盘 /dev/sdb 上的引导加载程序以查看创建后安装的操作系统?
提前致谢!
编辑
好的,我在 grub.cfg 中找到了它:
menuentry 'My Ubuntu version' --class ubuntu --class gnu-linux --class gnu --class os {
recordfail
insmod ext2
set root='(hd0,6)'
search --no-floppy --fs-uuid --set some-guid
linux /boot/vmlinuz-version root=UUID=some guid ro quiet splash
initrd /boot/initrd.img-version
}
如果我只是复制这个(确保这是我在另一个引导加载程序中需要的系统条目),这就是我需要做的全部事情吗?或者除了这些行之外我还需要什么吗?对不起,我有点害怕做这个改变,所以想确定一下。
答案1
您需要做的就是更新 grub 的已安装操作系统列表并将其重新安装到每个磁盘的 MBR:
$ update-grub
$ grub-install /dev/sdb
这假设 sda 上的引导加载程序已经看到所有操作系统并且可以不管它。我不确定你的哪个磁盘是哪个,因为你在问题中将它们混淆了一点。如果 sda 上的引导加载程序也需要更新,请运行:
$ grub-install /dev/sda
答案2
您当然可以将配置条目从一个引导加载程序复制到另一个引导加载程序。或者(或另外),您也可以将引导加载程序链式加载到其他引导加载程序。
详细信息将根据您使用的引导加载程序(例如:grub)和版本而有所不同。