将执行从 initrd 传递到真正的 init 以及 /dev/mapper 下缺少设备的问题

将执行从 initrd 传递到真正的 init 以及 /dev/mapper 下缺少设备的问题

对于 Gentoo,我(最终)能够使用 initrd 和 LILO 启动我的加密系统。

我使用了该指南http://whitehathouston.com/documentation/gentoo/initramfs_howto.htm

然而,系统完成启动后,/dev/mapper/cryptvg-root 似乎丢失了。为什么会这样呢?执行 ls -al /dev/mapper 仅显示文件“control”。然而 mount 说 /dev/mapper/cryptvg-root 挂载在 / 处。

我想也许我需要添加一些东西来将 initrd 中的 /dev 文件系统重新映射到真正的根文件系统,然后再传递控制权。所以我添加了这个:

mount -o move /dev /mnt/root/dev

在我执行 switch_root 之前。

但是,当它完成启动时,我仍然没有 /dev/mapper/cryptvg-root 。

我需要做什么才能在 exec switch_root 之前和期间正确传递控制权?

如果重要的话:

/dev/sda1 = /boot (未加密) /dev/sda2 = / (加密)

答案1

我强烈建议使用 dracut 构建 initramfs。我想,除非你是为了学习整个过程。

至于当前的问题,请确保 udev 在 initramfs 中运行以找到您的真实驱动器,然后在切换 root fs 后正确运行以创建所有真实设备节点。

答案2

这已经太晚了,但是 - 如果您在 switch_root 之后触发“dmsetup mknodes”,它应该会为您提供 /dev/mapper 下的设备节点。只需确保在运行 checkfs 和 fsck 之前完成此操作即可。查看 Gentoo 板上的主题 940802 了解详细信息。

相关内容