我已经为一个问题苦苦挣扎了好几个小时:
在升级 Ubuntu 后,首先从 15.04 升级到 15.10,然后从 15.10 升级到 16.04,我无法使用新内核启动。第二次升级后,我剩下内核 4.4.0-36 和 3.16.0-33(没有任何 4.2.x 的痕迹)。这让我认为我从 15.10 升级到 16.04 时仍在运行 3.16.0-33。这可能是我的问题的原因。
在启动时(4.4.0-36),我收到:“警告!/dev/mapper/ubuntu--vg-root 不存在。进入 shell!”
使用 3.16.0-33 启动就可以了。
我尝试过的:
- 重新安装了内核(4.4.0-36)。没有变化。
- 在 busybox 中我尝试输入“vgchange -ay”但没有成功:我的键盘在 busybox 中不起作用。
- 安装了 4.4.0-38。结果相同。
- 尝试遵循指示http://pifuge.com/ubuntu/V0Wn-cant-find-lvm-root-dropped-back-to-initramfs但是,文件 /usr/share/initramfs-tools/scripts/local-top/lvm2 不包含任何“modprobe -q”,因此我可以添加任何内容。
任何帮助将不胜感激!
华纳
更多细节:
- 正在运行 LVM2。它(显然)已安装。
- 无多重启动。只有 Ubuntu。
- 没有加密(据我所知)
- 奇怪的是,Busybox 不响应输入。无论我如何启动,情况都是如此(除非我运行 3.16.0-33,然后系统才能正常启动)
- 它会尝试挂载根目录约 20 次,然后才会进入 shell(busybox)。它给出的输出如下:
开始:运行根文件系统... 开始:运行 /scripts/local-top... lvmetad 尚未激活,在 sysinit 期间使用直接激活 无法找到逻辑卷“ubuntu-vg/root” 完成。 开始:运行 /scripts/local-premount... 完成 开始:等待根文件系统... 开始:运行 /scripts/local-block... lvmetad 尚未激活,在 sysinit 期间使用直接激活 无法找到逻辑卷“ubuntu-vg/root” 完成。
(最后一个重复 20 次)
放弃等待根设备。常见问题:启动参数(cat /proc/cmdline)检查 rootdelays(系统是否等待了足够长的时间?)检查 root=(系统是否等待了错误的设备?)缺少模块(cat /proc/modules:ls /dev)“警告!/dev/mapper/ubuntu--vg-root 不存在。进入 shell!”
答案1
- 将 grub.cfg “root=/dev/mapper/ubuntu--vg-root” 更改为 “root=UUID=XXXX”
- 在 mountroot 之前的某处添加了“vgchange -a y”
基本上,根本原因是“/dev/mapper/ubuntu--vg-root”在检查根时尚未完全准备就绪。在某种程度上,vgchange 命令可以触发 lvm 更新并显示在 /dev/mapper 中。建议使用“UUID”而不是使用 dev mapper 名称以使其更通用。
答案2
我最近安装了 16.04 Ubuntu Server,在加密的 lvm 上具有 root 权限。使用内核 4.4.0-34 时,它启动正常,但使用 4.4.0-36 时,我遇到了同样的问题。重复有关 lvmetad 的消息,然后转到 shell。作为一种解决方法,我将 4.4.0-34 声明为默认启动选项并关闭自动更新。因此,安装 4.4.0-34 可能会帮助您获得一个可以正常工作的 4.4 内核。我还没有找到长期解决方案。