我在 SSD 上安装了 3 个 Linux 发行版(Ubuntu、Parrot、Kali)。它们都是彼此分开的,这意味着它们不共享/home
分区或类似的东西。我也没有交换分区。
我想到了一个便携式驱动器(在我的例子中是 SSD),其中包含几个发行版,我可以随身携带,只需插入任何计算机即可从那里开始工作。用于此 SSD 的 grub 由 Ubuntu 管理。现在我遇到的问题是,到目前为止我使用的所有计算机也都插入了其他 SSD。因此,每次我切换设备时,现有的 Grub 条目都无效,因为有时我的 SSD 挂载到 /dev/sda/,有时挂载到 /dev/sdb/ 等。唯一始终有效的条目当然是 Ubuntu 条目。此外,大多数情况下,发生这种情况时,我仍然可以选择其他启动项,但随后系统会提示我进入 initramfs 救援控制台,通知我我的内存不知怎么损坏了。然后我会通过执行来解决问题blkid <uuid> -y
我将能够启动进入操作系统。显然我的内存既没有损坏,也不会解决问题,因为它再次不允许我使用另一个设备启动它,而不执行 initramfs 控制台的事情。
我现在的问题是,是否可以创建类似“永久”的 grub 条目,无论 SSD 安装在何处都可以正常工作?例如,据我所知,使用 uuid 应该始终保持不变。
(我什至尝试分别为每个 Linux 发行版安装一个 grub,这样我就可以进入启动选项并简单地从每个发行版中选择 grub。但是,尽管 EFI 分区上存在这些 EFI 文件,但我的主计算机无法识别它们(Ubuntu 除外)。也许是因为第二台计算机创建了它们?我确信有比在一个地方安装 n 个 grub 更好的解决方案。)
在阅读了一些评论后,我终于能够解决这个问题。按照@oldfred的建议,我在文件中添加了一些自定义条目
/etc/grub.d/40_custom
,以便控制操作系统在驱动器上的启动位置。此外,根据 @Tom Yan 的评论,我set root=(x,y)
用指向 UUID 的指令替换了所有类似的内容,而不是除此之外的任何内容。关于自定义条目的创建,我只是将错误条目复制到
/boot/grub/grub.cfg
并40_custom
进行编辑。这是 kalis 新条目的示例: