我一直在尝试在 iMX6 Quad eMMC 上进行全盘加密(我使用的版本是 EmbeddedAr
tists
imx6qea C OM 在他们的载板上)
我所做的是:
- 重建 fsl-image-mfgtool-initramfs 以支持内核中的磁盘加密和映像本身中的 cryptsetup。
- 通过将初始 RAM 文件系统映像 (initramfs) 添加到我的 local.conf 并重建 core-image-minimal,将其附加到 imx6q 内核
INITRAMFS_IMAGE = "核心图像最小"
INITRAMFS_IMAGE_BUNDLE = "1"
IMAGE_FSTYPES = "cpio.gz tar.bz2"
- 使用 mfgtools 刷新新创建的 core-image-minimal 并使用以下命令加密 rootfs 部分:
发送密钥文件加密和格式化 rootfs 分区加密和格式化 rootfs 分区加密和格式化 rootfs 分区发送和写入 rootfsFinishing rootfs write
- 引导进入内核及其附加的 initramfs 是成功的。
通过执行上述步骤,我能够使用 cryptsetup 加密 rootfs。启动到 initramfs 后,我使用 mfgtools 提供的密码成功解密并挂载了 rootfs 分区
$ cryptsetup --debug -v luksOpen /dev/mmcblk3p2 rootfs
$ mkdir /mnt/rootfs && mount -t ext3 /dev/mapper/rootfs /mnt/rootfs
我无法做的是自动挂载加密的 rootfs 而不是内核附加的 initramfs rootfs 。
- 首先,用于自动挂载加密分区的 crypttab 基础设施及其脚本 cryptdisks、cryptdisks_start、cryptdisks_stop 等在 yocto 项目中完全缺失。当您在普通 Linux 发行版上安装 cryptsetup 时,您会自动获得这些脚本,但不会在 yocto 上获得。
- 另一种方法是使用 mkinitcpio 脚本,但它也不是 yocto 的一部分。
- 最后,我想我还需要更新 initramfs,然后将其配置为挂载另一个根分区(luks 加密的分区),这是使用命令 update-initramfs 完成的,该命令会生成一个带有新的 initramfs 图像的新的 conflagrations ..不幸的是,我在 bitbaking 之后找不到与更新 initramfs 相关的任何内容,或者我们必须在 yocto 中预先设置所有内容,因此 initramfs 应该配置为自动挂载加密的 rootfs,然后进行 bitbake。我不确定上述步骤是否是在 yocto 上进行全盘加密的正确方法,还是有另一种方法?