一、确认 GRUB 文件路径
GRUB 有两个常见版本,分别是 GRUB(GRUB Legacy) 和 GRUB2,GRUB 和 GRUB2 的配置文件位于不同的路径:
·对于 GRUB:配置文件通常位于 /boot/grub/menu.lst 或 /boot/grub/grub.conf。
·对于 GRUB2:配置文件通常位于 /boot/grub/grub.cfg 或 /boot/grub2/grub.cfg。
如果你在 /boot/grub 目录下找到了 menu.lst 或 grub.conf 文件,那么你可能正在使用 GRUB(GRUB Legacy)。如果你在 /boot/grub 或 /boot/grub2 目录下找到了 grub.cfg 文件,那么你可能正在使用 GRUB2。
二、获取 UUID
要获取分区的 UUID,可以使用 blkid 命令。blkid 命令会显示所有可用分区的详细信息,包括其 UUID。在终端中运行以下命令:
sudo blkid
请使用鼠标选中并复制设备对应的 UUID 值(例如示例中的 c0b9ecd8-f922-4e5d-bccb-83fbc94ad23b),建议将 UUID 保存到临时文这篇件中,后续步骤需要多次粘贴该值。
得到类似如下输出,该输出表示设备/dev/vda1关联的 UUID 是 c0b9ecd8-f922-4e5d-bccb-83fbc94ad23b。
/dev/vda1: UUID="c0b9ecd8-f922-4e5d-bccb-83fbc94ad23b" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="bcfcb5cb-01"
三、修改 GRUB 配置文件
本章节以修改位于/boot/grub/grub.cfg 的 GRUB2 配置文件为例,若你使用的是 GRUB 或者发行版的 GRUB2 配置文件在/boot/grub2/grub.cfg,请你结合实际情况进行配置调整。
1. 将当前/boot/grub/grub.cfg 文件备份至 /home 目录。
sudo cp /boot/grub/grub.cfg /home/grub.cfg.bak
2. 使用 vi 编辑器,打开/boot/grub/grub.cfg 文件,确认配置文件中标记的 root 分区。在本例中,root 分区位于/dev/vda1设备。
sudo vi /boot/grub/grub.cfg
操作说明:
·按键盘 i 键进入编辑模式(屏幕底部会出现 — INSERT — 提示)。
·使用方向键或搜索命令(如输入 /root=/dev/vda1)定位需要修改的行。
3. 将文件中所有 root=/dev/vda1替换为 root=UUID=xxx 格式(xxx 为 blkid 命令获取的 UUID)。
示例修改对比:
# 修改前…echo 'Loading Linux 6.1.0-13-amd64 …'linux /boot/vmlinuz-6.1.0-13-amd64 root=/dev/vda1 roecho 'Loading initial ramdisk …'…# 修改后…echo 'Loading Linux 6.1.0-13-amd64 …'linux /boot/vmlinuz-6.1.0-13-amd64 root=UUID=c0b9ecd8-f922-4e5d-bccb-83fbc94ad23b roecho 'Loading initial ramdisk …'…
4. 保存并退出:
·按 Esc 键退出编辑模式
·输入 :wq 并回车保存退出
5. (可选)验证配置文件。
·执行以下命令检查修改内容是否已保存:
sudo cat /boot/grub/grub.cfg | grep "root=UUID"
·预期输出应包含类似以下内容(UUID 值需与 blkid 命令获取的一致):
linux /boot/vmlinuz-6.1.0-13-amd64 root=UUID=c0b9ecd8-f922-4e5d-bccb-83fbc94ad23b ro
6. (可选)备份文件管理。
·恢复操作(若修改导致系统异常):
sudo cp /home/grub.cfg.bak /boot/grub/grub.cfg
·删除备份(确认系统正常启动后执行):
sudo rm /home/grub.cfg.bak