
# 修改grub文件磁盘标识方式为UUID
#### 操作场景
为了确保Linux系统在启动文件系统时能够正确识别磁盘，在创建Linux私有镜像前，需要在弹性云服务器上修改grub文件磁盘标识方式为UUID。
![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/notice_3.0-zh-cn.png)
修改GRUB属于高危操作，配置错误可能导致系统无法启动。在开始之前，强烈建议对当前虚拟机或服务器创建快照/备份，以便在操作失误时能够快速回滚。
#### 操作步骤
1. 使用root用户登录弹性云服务器。
2. 确认GRUB版本与配置文件路径。Linux系统通常使用GRUB2或GRUB Legacy，它们的配置文件路径不同。
   - GRUB2（目前绝大多数现代Linux发行版如：CentOS 7/8、Ubuntu 18.04+均使用）：配置文件通常位于 /boot/grub2/grub.cfg 或 /boot/grub/grub.cfg。
   
   - GRUB Legacy（较老的系统）：配置文件通常位于 /boot/grub/menu.lst 或 /boot/grub/grub.conf。可通过查看目录结构来确认，执行**ls /etc/grub.d/**，如果包含 00_header、10_linux 等文件，说明使用的是GRUB2。
    
3. 执行以下命令，列出当前系统中所有已挂载文件系统的类型以及对应设备的UUID，复制对应的 UUID="xxxx-xxxx-..." 值。
   ```
   blkid
   ```
   回显信息如下所示：
   ```
   /dev/vda1: UUID="ec51d860-34bf-4374-ad46-a0c3e337fd34" TYPE="ext4"
   /dev/vda2: UUID="7a44a9ce-9281-4740-b95f-c8de33ae5c11" TYPE="ext4"
   ```
   
4. 执行以下命令，查看"grub.cfg"文件（本文以 /boot/grub/grub.cfg为例，请您结合实际情况进行调整）。
   ```
   cat /boot/grub/grub.cfg | grep 'root='
   ```
   回显信息如下所示：
   ```
   linux /boot/vmlinuz-3.13.0-24-generic root=/dev/xvda1 ro
   ```
   
5. 根据"/boot/grub/grub.cfg"配置文件里标记的root分区，查找是否包括"root=/dev/vda1"或者"root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34"信息。
   - 若存在"root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34"，即root分区以UUID的表示形式，无需修改。
   
   - 若存在"root=/dev/vda1"，即root分区以设备名称表示的形式，请执行后续步骤。
    
6. 根据"root=/dev/vda1"，即root分区对应的设备名称，以及**blkid**命令获取的分区信息，找到root分区设备名称对应的UUID。
7. 执行以下命令，打开"grub.cfg"文件。
   ```
   vi /boot/grub/grub.cfg
   ```
   
8. 按"i"进入编辑模式，将root分区改成UUID形式，本例中将"root=/dev/vda1"修改为"root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34"。
   ![](https://support.huaweicloud.com/usermanual-ims/public_sys-resources/caution_3.0-zh-cn.png)
   请将"UUID值"替换为[步骤3]中获取的实际 UUID 字符串，不需要保留引号。
   
9. 按"Esc"后，输入**:wq**，按"Enter"。 保存设置并退出vi编辑器。
10. 执行以下命令，确认修改结果。
    ```
    cat /boot/grub/grub.cfg | grep 'root='
    ```
    回显信息如下所示表示修改成功，即root分区以UUID的形式表示。
    ```
    linux /boot/vmlinuz-3.13.0-24-generic root=UUID=ec51d860-34bf-4374-ad46-a0c3e337fd34 ro
    ```
    
 
