对于 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 了解详细信息。