我的系统是基于 Gentoo Linux 的,从基于 LVM 的根分区启动。
系统通过 initrd 成功启动。它启动主内核的 init,但在尝试检查根驱动器 (/etc/init.d/checkroot) 时失败。
报告的错误是根驱动器(/dev/規格/吕) 不可用于 fsck。任何。
[注:我已经找到了解决这个问题的方法,并发布此文以帮助其他人。如果你知道更好的方法,我很乐意听听!]
答案1
问题可能是 LVM 锁定方案不允许激活卷组。
如果 lvm.conf 有:
/etc/lvm/lvm.conf
locking_type = 1
:
locking_dir = "/var/lock/lvm"
然后,锁定目录必须是可写的,卷组才能被激活。这在 checkroot 阶段是一个问题,因为此时根文件系统只能是只读的。
可以将locking_type设置为0,但这会带来数据丢失的风险。
一些 lvm 命令接受 --ignorelockingfailure 选项,该选项允许暂时避开锁定。这在 initrd 启动脚本中使用。
为了让 checkroot 正常工作,我在它实际启动之前添加了两行。
&& ! is_net_fs / && ! is_union_fs / ; then
+ lvm vgchange -ayl --ignorelockingfailure
+ lvm vgmknodes --ignorelockingfailure
if touch -c / >& /dev/null ; then