如何处理由于 checkroot 上的“锁定类型初始化失败”导致 Gentoo 无法启动?

如何处理由于 checkroot 上的“锁定类型初始化失败”导致 Gentoo 无法启动?

我的系统是基于 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

相关内容