Yocto Initramfs 事务错误添加 cryptsetup 包
Yocto Initramfs Transaction Error adding cryptsetup package
我在 Ubuntu 18.04 LTS 上使用 Yocto Warrior 和 meta-tegra 层 ( https://github.com/madisongh/meta-tegra ) 为我的 NVIDIA Jetson Nano 构建根文件系统。
我想加密我的 SD 卡上的某个分区,所以我需要 cryptsetup 包,它在 openembedded 层中可用。我已经将它添加到我的映像中,并且生成的根文件系统已经安装了它。
问题是我需要将它添加到我的 initramfs 以便在启动时自动解密我的加密卷。
我得到的错误显示为:
Transaction Summary
================================================================================
Install 50 Packages
Total size: 13 M
Installed size: 52 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Error: Transaction check error:
file /proc conflicts between attempted installs of tegra-minimal-init-1.0-r0.aarch64 and base-files-3.0.14-r89.jetson_nano
file /sys conflicts between attempted installs of tegra-minimal-init-1.0-r0.aarch64 and base-files-3.0.14-r89.jetson_nano
Error Summary
-------------
我将 cryptsetup 添加到 initramfs 配方的 bbappend 文件中,如下所示(显示的是整个 bbappend 文件):
PACKAGE_INSTALL_append = " e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks"
PACKAGE_INSTALL_append = " i2c-tools"
PACKAGE_INSTALL_append = " openssl"
PACKAGE_INSTALL_append = " cryptsetup"
如果我注释掉 cryptsetup 行,initramfs 任务完成得很好。
这是来自 meta-tegra 的 initramfs 的非附加原始配方文件:
DESCRIPTION = "Minimal initramfs image for Tegra platforms"
LICENSE = "MIT"
TEGRA_INITRD_INSTALL ??= ""
INITRD_FSTYPES ??= "${INITRAMFS_FSTYPES}"
PACKAGE_INSTALL = "\
tegra-firmware-xusb \
tegra-minimal-init \
${TEGRA_INITRD_INSTALL} \
"
IMAGE_FEATURES = ""
IMAGE_LINGUAS = ""
COPY_LIC_MANIFEST = "0"
COPY_LIC_DIRS = "0"
COMPATIBLE_MACHINE = "(tegra)"
KERNELDEPMODDEPEND = ""
IMAGE_ROOTFS_SIZE = "8192"
#IMAGE_ROOTFS_SIZE = "16384"
inherit core-image
IMAGE_FSTYPES = "${INITRD_FSTYPES}"
如何成功地将 cryptsetup 添加到 initramfs 配方?谢谢
我收到了完全相同的错误消息,只是它是由不同的配方触发的(不是 cryptsetup,而是一些自定义配方)。
问题是两个配方(tegra-minimal-init_1.0.bb) and base-files_3.0.14.bb 都尝试创建 '/sys 和 '/proc' 目录,但权限不同(一个是 0755,另一个是 0555)。
解决它的方法是简单地删除 tegra-minimal-init_1 中的目录创建。0.bb:
[eliranl@somehost]$ git diff
diff --git a/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb b/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb
index ac16ff1..e7021bb 100644
--- a/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb
+++ b/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb
@@ -12,7 +12,7 @@ S = "${WORKDIR}"
do_install() {
install -m 0755 ${WORKDIR}/init-boot.sh ${D}/init
- install -d ${D}/proc ${D}/sys ${D}/dev ${D}/tmp ${D}/mnt ${D}/run ${D}/usr
+ install -d ${D}/dev ${D}/tmp ${D}/mnt ${D}/run ${D}/usr
mknod -m 622 ${D}/dev/console c 5 1
install -d ${D}${sysconfdir}
if [ -e ${WORKDIR}/platform-preboot-cboot.sh ]; then
或者,您可以升级到 'dunfell',因为已通过更改 tegra-minimal-init_1.0.bb 来创建具有相同权限的“/proc”和“/sys”来修复它在基本文件中,或者只是从 the specific commit:
向后移植这部分
- install -d ${D}/proc ${D}/sys ${D}/dev ${D}/tmp ${D}/mnt ${D}/run ${D}/usr
+ install -m 0555 -d ${D}/proc ${D}/sys
+ install -m 0755 -d ${D}/dev ${D}/mnt ${D}/run ${D}/usr
+ install -m 1777 -d ${D}/tmp
我在 Ubuntu 18.04 LTS 上使用 Yocto Warrior 和 meta-tegra 层 ( https://github.com/madisongh/meta-tegra ) 为我的 NVIDIA Jetson Nano 构建根文件系统。
我想加密我的 SD 卡上的某个分区,所以我需要 cryptsetup 包,它在 openembedded 层中可用。我已经将它添加到我的映像中,并且生成的根文件系统已经安装了它。
问题是我需要将它添加到我的 initramfs 以便在启动时自动解密我的加密卷。
我得到的错误显示为:
Transaction Summary
================================================================================
Install 50 Packages
Total size: 13 M
Installed size: 52 M
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Error: Transaction check error:
file /proc conflicts between attempted installs of tegra-minimal-init-1.0-r0.aarch64 and base-files-3.0.14-r89.jetson_nano
file /sys conflicts between attempted installs of tegra-minimal-init-1.0-r0.aarch64 and base-files-3.0.14-r89.jetson_nano
Error Summary
-------------
我将 cryptsetup 添加到 initramfs 配方的 bbappend 文件中,如下所示(显示的是整个 bbappend 文件):
PACKAGE_INSTALL_append = " e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-tune2fs e2fsprogs-badblocks"
PACKAGE_INSTALL_append = " i2c-tools"
PACKAGE_INSTALL_append = " openssl"
PACKAGE_INSTALL_append = " cryptsetup"
如果我注释掉 cryptsetup 行,initramfs 任务完成得很好。
这是来自 meta-tegra 的 initramfs 的非附加原始配方文件:
DESCRIPTION = "Minimal initramfs image for Tegra platforms"
LICENSE = "MIT"
TEGRA_INITRD_INSTALL ??= ""
INITRD_FSTYPES ??= "${INITRAMFS_FSTYPES}"
PACKAGE_INSTALL = "\
tegra-firmware-xusb \
tegra-minimal-init \
${TEGRA_INITRD_INSTALL} \
"
IMAGE_FEATURES = ""
IMAGE_LINGUAS = ""
COPY_LIC_MANIFEST = "0"
COPY_LIC_DIRS = "0"
COMPATIBLE_MACHINE = "(tegra)"
KERNELDEPMODDEPEND = ""
IMAGE_ROOTFS_SIZE = "8192"
#IMAGE_ROOTFS_SIZE = "16384"
inherit core-image
IMAGE_FSTYPES = "${INITRD_FSTYPES}"
如何成功地将 cryptsetup 添加到 initramfs 配方?谢谢
我收到了完全相同的错误消息,只是它是由不同的配方触发的(不是 cryptsetup,而是一些自定义配方)。
问题是两个配方(tegra-minimal-init_1.0.bb) and base-files_3.0.14.bb 都尝试创建 '/sys 和 '/proc' 目录,但权限不同(一个是 0755,另一个是 0555)。
解决它的方法是简单地删除 tegra-minimal-init_1 中的目录创建。0.bb:
[eliranl@somehost]$ git diff
diff --git a/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb b/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb
index ac16ff1..e7021bb 100644
--- a/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb
+++ b/meta-tegra/recipes-core/initrdscripts/tegra-minimal-init_1.0.bb
@@ -12,7 +12,7 @@ S = "${WORKDIR}"
do_install() {
install -m 0755 ${WORKDIR}/init-boot.sh ${D}/init
- install -d ${D}/proc ${D}/sys ${D}/dev ${D}/tmp ${D}/mnt ${D}/run ${D}/usr
+ install -d ${D}/dev ${D}/tmp ${D}/mnt ${D}/run ${D}/usr
mknod -m 622 ${D}/dev/console c 5 1
install -d ${D}${sysconfdir}
if [ -e ${WORKDIR}/platform-preboot-cboot.sh ]; then
或者,您可以升级到 'dunfell',因为已通过更改 tegra-minimal-init_1.0.bb 来创建具有相同权限的“/proc”和“/sys”来修复它在基本文件中,或者只是从 the specific commit:
向后移植这部分- install -d ${D}/proc ${D}/sys ${D}/dev ${D}/tmp ${D}/mnt ${D}/run ${D}/usr
+ install -m 0555 -d ${D}/proc ${D}/sys
+ install -m 0755 -d ${D}/dev ${D}/mnt ${D}/run ${D}/usr
+ install -m 1777 -d ${D}/tmp