我该在 V22.03 LTS grub 配置中编辑什么来指定根文件系统?

我该在 V22.03 LTS grub 配置中编辑什么来指定根文件系统?

我正在对升级后的 Slackware 系统进行现代化升级。我已将该系统设置为拥有一个小型启动驱动器和一个每日更新的镜像驱动器,后者是启动驱动器的精确副本。这两个驱动器都安装在热插拔支架上,因此只需将镜像放入启动槽并重新启动,即可在几秒钟内更换发生故障的驱动器。

我正在使用 Ubuntu 22.04 LTS 服务器设置镜像系统。我已经安装、配置并备份了启动驱动器,现在正在设置镜像。我使用 dd 将启动驱动器的前 1GiB 左右复制到镜像驱动器,使用 fdisk 删除然后重新定义镜像的根文件系统分区,在该分区上 mkfs 一个干净的文件系统,然后 cp -rpd 将启动驱动器文件系统的所有内容复制到镜像上。镜像的进一步维护是使用由 cron 作业和脚本激活的 rsync 完成的。

我在为这两个磁盘指定 GPT 分区时似乎给自己带来了问题,导致安装过程配置 GRUB,使其使用 4096(:-D) 位 GPT 磁盘 ID 来定位包含应作为 root 安装的文件系统的磁盘。为了实现这一点,我需要两个驱动器上的 grub 始终转到 /dev/sda 来查找其文件系统。

我在网上找到了大量关于 Debian 的 grub 2 版本的信息,但从我安装的系统的 /boot 目录中看到的内容来看,Ubuntu 的版本有很大不同,配置要求也不同。

有人能给我指出合适的文档并提出解决方案吗?Peter

答案1

谢谢 ubfan1:您的评论促使我采取了明确禁止的行为。我编辑了 grub.cfg。首先将其复制到 grub.cfg.original 作为安全措施。(拥有这些热插拔安装和备用 Linux 启动盘可以打开选项!)grub 命令解释器使用 (hdX,gptY) 指定 gpt 分区,其中 X 是硬盘编号(从 0 开始),Y 是分​​区编号(从 1 开始)。我保留了所有这些。当解释器加载 Linux 系统映像“vmlinuz”时,命令行会传递给 vmlinuz,包括 root=UUID="GPT_DISK_ID"。我用“root=/dev/sda2”替换了所有这些。我也在几次搜索中删除了所有 gpt ID。

重启后一切正常。使用 dd 创建的镜像驱动器也能完美启动。

答案2

事实证明,这是一个只需一次(数一数 - 仅一次)重启即可解决的问题,之后 crub.cfg 被重写为与我编辑之前完全相同。

事实证明我应该编辑文件 /etc/grub.d/10_linux。

我注释掉了一行:#GRUB_DISABLE_LINUX_PARTUUID=${GRUB_DISABLE_LINUX_PARTUUID-true}

并在其下方添加两行新内容: GRUB_DISABLE_LINUX_UUID=true GRUB_DISABLE_LINUX_PARTUUID=true

这似乎起了作用,我希望这次的解决方案是永久性的。彼得

相关内容