本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
GRUB是一个用于引导操作系统启动的程序。其配置文件中支持使用设备名称或UUID来标识磁盘分区。本文介绍如何将GRUB配置文件中的磁盘分区标识方式修改为UUID。
背景信息
在GRUB配置文件中,若使用设备名称(例如/dev/vda1)来标识磁盘分区,其设备名称可能会因为导入镜像后启动实例等操作而发生改变。如果指定的UUID与磁盘分区实际的UUID不匹配,也可能导致系统启动时内核无法正确加载文件系统,从而造成系统启动失败。
操作步骤
为了确保GRUB配置文件中根文件系统磁盘分区标识能够被程序成功读取,建议在配置时采用UUID方式来标识磁盘分区。具体操作步骤如下。
修改GRUB配置为高危操作,如果操作不当很可能导致实例无法启动,在操作之前,请务必确认您已为实例创建快照,以确保数据安全。
确认GRUB版本信息
目前,GRUB程序分为GRUB2和GRUB Legacy两个版本,后者除修复错误外,已不再进行开发和维护。确认当前使用GRUB版本的操作步骤如下。
参考如下方法,以确认GRUB版本信息。
GRUB2
运行如下命令,查看当前系统的
GRUB配置文件结构。sudo ls /etc/grub.d/回显信息示例如下,如果其中包含
00_header、40_custom等内容,表明您使用的是GRUB2。00_header 05_debian_theme 10_linux 20_linux_xen 30_os-prober 30_uefi-firmware 40_custom 41_customGRUB Legacy
运行如下命令,查看
/boot目录下的配置文件结构。sudo ls /boot/grub/如果存在
/boot/grub目录,且在该目录下存在menu.lst文件,那么您使用的是GRUB Legacy。
确认GRUB配置文件信息
GRUB2和GRUB Legacy对应的配置文件存在一些差异。
GRUB2:配置文件通常位于/boot/grub/grub.cfg或/boot/grub2/grub.cfg中。GRUB Legacy:配置文件通常位于/boot/grub/menu.lst或/boot/grub/grub.conf中。
您可以参考上述示例,进入/boot目录以确认GRUB配置文件信息。
获取当前磁盘信息
您需要获取当前实例的磁盘分区信息,以便后续修改GRUB配置文件。具体操作如下。
运行如下命令,查看当前实例磁盘分区信息。
sudo blkid回显信息示例如下。
/dev/vda1: LABEL="/" UUID="e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645" TYPE="ext4" PARTUUID="0efbxxxx-01"以上示例显示,
/dev/vda1设备的UUID为e7e8xxxx-xxxx-xxxx-xxxx-xxxxb9263645。
修改GRUB配置文件
运行如下命令,备份当前
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运行如下命令,打开
GRUB配置文件。sudo vim /boot/grub2/grub.cfg按
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编辑完成后,按
Esc键退出编辑模式,输入:wq保存并退出。(可选)运行如下命令,查看修改后的配置文件。从而确保
GRUB中配置的磁盘分区标识都被修改为UUID方式。sudo cat /boot/grub2/grub.cfg
相关文档
关于fstab文件中配置挂载数据盘的操作,请参见在fstab文件中配置UUID方式自动挂载数据盘。