Ubuntu安装于NVMe SSD后启动失败,提示UUID不存在并进入BusyBox shell
Ubuntu安装于NVMe SSD后启动失败,提示UUID不存在并进入BusyBox shell
看你的问题描述和日志,核心原因应该是两块完全相同的NVMe SSD出现了全局ID重复——启动日志里的nvme nvme1: globally duplicate IDs for nsid 1已经给出了明确提示。因为两块SSD品牌、容量都一样,系统启动时偶尔会搞混它们的设备命名(一会儿把Ubuntu盘识别成nvme0n1,一会儿又变成nvme1n1),导致GRUB里指定的UUID找不到对应分区,直接掉进BusyBox。
下面是一步步的解决办法,都是新手也能操作的:
解决步骤
1. 先正常进入Ubuntu系统
既然拔掉Windows所在的第二块SSD就能正常启动,先这么做,进入系统后再处理后续配置。
2. 修改GRUB配置,用PARTUUID替代UUID
UUID依赖系统正确识别磁盘,而磁盘命名混乱时,用更稳定的PARTUUID(分区唯一标识)会更靠谱:
- 打开终端,编辑GRUB的默认配置文件:
sudo nano /etc/default/grub - 找到
GRUB_CMDLINE_LINUX_DEFAULT这一行,把里面的root=UUID=fa525e4b-5faa-46eb-bbfe-0c53dac962fa替换成你Ubuntu根分区的PARTUUID。从你成功启动后的blkid输出看,根分区的PARTUUID是11009117-55ca-4835-8ac3-4628878570db,替换后这行应该是:GRUB_CMDLINE_LINUX_DEFAULT="quiet splash vt.handoff=7 root=PARTUUID=11009117-55ca-4835-8ac3-4628878570db" - 按
Ctrl+O保存,回车确认,再按Ctrl+X退出编辑器。 - 更新GRUB使配置生效:
sudo update-grub
3. 修复initramfs(可选但推荐)
有时候系统初始化镜像里的磁盘信息会有缓存,更新一下确保它能正确识别磁盘:
sudo update-initramfs -u -k all
4. 同步修改fstab文件
检查系统挂载配置文件/etc/fstab,如果里面根分区用的是UUID,也替换成PARTUUID,避免开机挂载失败:
- 打开fstab:
sudo nano /etc/fstab - 找到根分区的那一行,把
UUID=fa525e4b-5faa-46eb-bbfe-0c53dac962fa替换成PARTUUID=11009117-55ca-4835-8ac3-4628878570db,保存退出即可。
5. 进阶:给其中一块SSD修改Namespace ID(可选)
如果上面的方法还是偶尔出问题,可以尝试修改其中一块SSD的Namespace ID,从根源解决重复问题:
- 先查看所有NVMe设备:
sudo nvme list - 找到Windows所在的SSD(比如
/dev/nvme1n1),执行以下命令修改它的nsid(操作前请备份重要数据,别搞错设备!):sudo nvme ns-rescan /dev/nvme1 sudo nvme ns-create /dev/nvme1 --nsid=2 --size=$(sudo nvme id-ns /dev/nvme1n1 | grep 'nsze' | awk '{print $2}')
补充说明
为什么会出现这个问题?因为同型号的NVMe SSD可能默认使用相同的Namespace ID,系统启动时无法区分两块磁盘,偶尔会把Ubuntu盘的设备名搞反,导致GRUB找不到指定的UUID分区。用PARTUUID或者修改nsid,都是为了让系统能稳定识别到你的Ubuntu分区。
备注:内容来源于stack exchange,提问作者Ziyaad
相关产品推荐
相关产品推荐

