修改GRUB配置文件中的磁盘分区标识方式为UUID

更新时间:2025-03-14 09:54:02
重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

GRUB是一个用于引导操作系统启动的程序。其配置文件中支持使用设备名称或UUID来标识磁盘分区。本文介绍如何将GRUB配置文件中的磁盘分区标识方式修改为UUID

背景信息

GRUB配置文件中,若使用设备名称(例如/dev/vda1)来标识磁盘分区,其设备名称可能会因为导入镜像后启动实例等操作而发生改变。如果指定的UUID与磁盘分区实际的UUID不匹配,也可能导致系统启动时内核无法正确加载文件系统,从而造成系统启动失败。

操作步骤

为了确保GRUB配置文件中根文件系统磁盘分区标识能够被程序成功读取,建议在配置时采用UUID方式来标识磁盘分区。具体操作步骤如下。

警告

修改GRUB配置为高危操作,如果操作不当很可能导致实例无法启动,在操作之前,请务必确认您已为实例创建快照,以确保数据安全。

确认GRUB版本信息

目前,GRUB程序分为GRUB2GRUB Legacy两个版本,后者除修复错误外,已不再进行开发和维护。确认当前使用GRUB版本的操作步骤如下。

  1. 使用Workbench工具以SSH协议登录Linux实例

  2. 参考如下方法,以确认GRUB版本信息。

    GRUB2
    GRUB Legacy

    运行如下命令,查看当前系统的GRUB配置文件结构。

    sudo ls /etc/grub.d/

    回显信息示例如下,如果其中包含00_header40_custom等内容,表明您使用的是GRUB2

    00_header  05_debian_theme  10_linux  20_linux_xen  30_os-prober  30_uefi-firmware  40_custom  41_custom

    运行如下命令,查看/boot目录下的配置文件结构。

    sudo ls /boot/grub/

    如果存在/boot/grub目录,且在该目录下存在menu.lst文件,那么您使用的是GRUB Legacy

确认GRUB配置文件信息

GRUB2GRUB Legacy对应的配置文件存在一些差异。

  • GRUB2:配置文件通常位于/boot/grub/grub.cfg/boot/grub2/grub.cfg中。

  • GRUB Legacy:配置文件通常位于/boot/grub/menu.lst/boot/grub/grub.conf中。

您可以参考上述示例,进入/boot目录以确认GRUB配置文件信息。

获取当前磁盘信息

您需要获取当前实例的磁盘分区信息,以便后续修改GRUB配置文件。具体操作如下。

  1. 运行如下命令,查看当前实例磁盘分区信息。

    sudo blkid

    回显信息示例如下。

    /dev/vda1: LABEL="/" UUID="e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645" TYPE="ext4" PARTUUID="0efbxxxx-01"

    以上示例显示,/dev/vda1设备的UUIDe7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645

修改GRUB配置文件

重要

下述示例以GRUB2配置文件是/boot/grub2/grub.cfg为例。如果您使用的是GRUB Legacy,或您的系统对GRUB配置文件进行了个性化定制。则需根据实际情况,对步骤1步骤2中涉及的命令进行适当调整。

  1. 运行如下命令,备份当前GRUB配置文件。

    sudo cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg.bak
    重要

    如果修改GRUB配置文件后,想要恢复到修改前的状态,您可以运行如下命令。

    sudo cp -f /boot/grub2/grub.cfg.bak /boot/grub2/grub.cfg

  2. 运行如下命令,打开GRUB配置文件。

    sudo vim /boot/grub2/grub.cfg
  3. i进入编辑模式,将配置文件中所有包含root=/dev/vda1的内容全部替换为root=UUID=e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645

    linux   /boot/vmlinuz-3.16.0-4-amd64 root=/dev/vda1 ro single debian-installer=en_US net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8

    修改后的内容如下所示。

    linux   /boot/vmlinuz-3.16.0-4-amd64 root=UUID=e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645 ro single debian-installer=en_US net.ifnames=0 vga=792 console=tty0 console=ttyS0,115200n8
  4. 编辑完成后,按Esc键退出编辑模式,输入:wq保存并退出。

  5. (可选)运行如下命令,查看修改后的配置文件。从而确保GRUB中配置的磁盘分区标识都被修改为UUID方式。

    sudo cat /boot/grub2/grub.cfg

相关文档

关于fstab文件中配置挂载数据盘的操作,请参见fstab文件中配置UUID方式自动挂载数据盘

  • 本页导读 (1)
  • 背景信息
  • 操作步骤
  • 确认GRUB版本信息
  • 确认GRUB配置文件信息
  • 获取当前磁盘信息
  • 修改GRUB配置文件
  • 相关文档