统信uos迁移后grub报“no such device”或“uuid not found”,因配置仍引用旧硬盘uuid;需在grub>下用ls定位/boot分区,set root后以root=/dev/sda3(或nvme对应设备名)临时启动,进系统后用blkid查新uuid,更新/etc/fstab,并设grub_disable_linux_uuid=true后执行sudo update-grub和sudo grub-install /dev/sda。

统信UOS系统迁移到新硬盘后开机卡在GRUB界面并提示“no such device: XXXX-XXXX”或“UUID not found”,说明GRUB配置中仍引用旧硬盘的分区UUID,而新硬盘的/boot或根分区已拥有全新UUID,必须手动修正引导参数才能启动。
确认新硬盘各分区UUID
在GRUB命令行(grub>)下执行:
ls -l /dev/disk/by-uuid/
若报错不支持ls -l,改用:ls (hd0,gpt1)/ → ls (hd0,gpt2)/ → 逐一分区查找/boot和/所在位置;找到后输入cat (hd0,gpt2)/etc/fstab查看原fstab中记录的UUID——但注意:迁移后该文件未更新,仅作参考。真正有效的UUID需进系统后用blkid确认。
这一步不能跳过:迁移工具(如dd、Clonezilla或UOS自带克隆)不会自动重写/etc/fstab和GRUB中的UUID,所有引用旧盘的路径都会失效。
临时绕过UUID启动进入系统
方法一:用设备名替代UUID启动(最快见效)
在grub>下依次执行:
ls → 找到含/boot的分区(如(hd0,gpt2))→ set root=(hd0,gpt2)
linux (hd0,gpt2)/vmlinuz-* rw root=/dev/sda3
initrd (hd0,gpt2)/initrd.img-*
boot
【root=/dev/sda3必须替换成你实际根分区的设备名,NVMe盘请用/dev/nvme0n1p3;填错将触发kernel panic】
方法二:从GRUB编辑模式临时修改启动项(适用于能看到菜单但选中即报UUID错误)
开机时按Shift调出GRUB菜单 → 方向键高亮目标项 → 按e进入编辑 → 找到以linux开头的行 → 将其中root=UUID=xxxx-xxxx替换为root=/dev/sda3 → Ctrl+X启动。
进系统后永久修复UUID引用
第一步:打开终端,执行sudo blkid,记录新/boot分区和根分区的准确UUID(例如/boot在/dev/sda2,UUID为a1b2c3d4-e5f6-7890-g1h2-i3j4k5l6m7n8;根在/dev/sda3,UUID为b2c3d4e5-f6g7-8901-h2i3-j4k5l6m7n8o9)。
第二步:编辑fstab确保挂载正确
sudo nano /etc/fstab → 将原文件中所有旧UUID替换为新UUID,尤其检查/boot和/两行;保存退出。
第三步:强制更新GRUB配置并重装引导
sudo nano /etc/default/grub → 确保GRUB_DISABLE_LINUX_UUID=true(此项让GRUB生成时用设备名而非UUID,避免再次迁移失效)→ 保存后执行:
sudo update-grub → sudo grub-install /dev/sda
【grub-install /dev/sda中的/dev/sda必须是整块磁盘设备,不是分区;若用NVMe盘则必须为/dev/nvme0n1,填错将导致系统彻底无法识别启动盘】











