出现grub uuid错误的情况一般是由于重新安装操作系统,从而更变了UUID导致grub无法正确识别而无法启动操作系统,这时候需要更新grub配置文件中相应的UUID。
如果通过grub引导出现以下情况,则UUID需要更改:
error:No such device xxxxxxxxxxxxxxxx[Windows 分区 uuid]|xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx[Linux 分区 uuid]; Invalid signature
上面显示的uuid是早前安装的操作系统的uuid,重新安装系统后uuid已经更改,所以需要查看当前系统分区的uuid并修改grub配置文件。
Linux中查看uuid的命令:ls -l /dev/disk/by-uuid
unixing@unixing-desktop:~$ ls -l /dev/disk/by-uuid/
lrwxrwxrwx 1 root root 10 2011-01-16 14:00 2b2041f7-4f49-47ff-bb84-ffbf9b39f82a -> ../../sda5
lrwxrwxrwx 1 root root 10 2011-01-16 14:00 c01300ef-0698-439a-ae45-26de028af9fc -> ../../sda1
grub 2的配置文件为grub.cfg,可用vi或gedit之类编辑器打开编辑。修改前先查看文件的用户权限,一般grub.cfg为只读文件,利用chmod 555 grub.cfg修改为可写。
找到grub.cfg中无法启动的操作系统所在行,查找uuid所在位置[绿色字],替换为前面所查到的相应UUID。
menuentry ‘Ubuntu, with Linux 2.6.35-22-generic’ –class ubuntu –class gnu-linux –class gnu –class os {
recordfail
insmod part_msdos
insmod ext2
set root='(hd0,msdos1)’
search –no-floppy –fs-uuid –set c01300ef-0698-439a-ae45-26de028af9fc
linux /boot/vmlinuz-2.6.35-22-generic root=UUID=c01300ef-0698-439a-ae45-26de028af9fc ro quiet splash
initrd /boot/initrd.img-2.6.35-22-generic
}