From 046634e17a7ac16fcfb7912b83adafff442e50e8 Mon Sep 17 00:00:00 2001 From: Jan Luebbe Date: Thu, 6 Aug 2015 14:42:40 +0200 Subject: [PATCH] image-rauc-ubi: change rescue slot layout Splitt of the actual rescue root filesystem to image-rauc-rescue-initramfs and build image-rauc-ubi using kernel+initramfs (like normal rauc slots). Signed-off-by: Jan Luebbe --- .../images/image-rauc-rescue-initramfs.bb | 41 +++++++++++ recipes-core/images/image-rauc-slot-rescue.bb | 71 ------------------- recipes-core/images/image-rauc-ubi.bb | 71 +++++++++++++++++++ 3 files changed, 112 insertions(+), 71 deletions(-) create mode 100644 recipes-core/images/image-rauc-rescue-initramfs.bb delete mode 100644 recipes-core/images/image-rauc-slot-rescue.bb create mode 100644 recipes-core/images/image-rauc-ubi.bb diff --git a/recipes-core/images/image-rauc-rescue-initramfs.bb b/recipes-core/images/image-rauc-rescue-initramfs.bb new file mode 100644 index 0000000..2a14739 --- /dev/null +++ b/recipes-core/images/image-rauc-rescue-initramfs.bb @@ -0,0 +1,41 @@ +DESCRIPTION = "rescue initramfs" + +PACKAGE_INSTALL = "task-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${ROOTFS_PKGMANAGE} rauc dropbear" + +IMAGE_LINGUAS = "" + +LICENSE = "MIT" + +# cpio config +XZ_COMPRESSION_LEVEL = "-e -9 --lzma2=dict=512KiB" +XZ_THREADS = "-T 0" +XZ_INTEGRITY_CHECK = "crc32" + +IMAGE_FSTYPES = "cpio.xz" + +BAD_RECOMMENDATIONS_append = " busybox-syslog" +BAD_RECOMMENDATIONS_append_sysmobts-v2 = " e2fsprogs-e2fsck" +BAD_RECOMMENDATIONS_append_sysmocom-odu = " e2fsprogs-e2fsck" + +inherit core-image +require recipes-apps/images/image-manifest.inc + +shrink_rescue() { + # The kernel should not be in the initramfs + rm -rf ${IMAGE_ROOTFS}/boot + + # In case of the sysmoBTS.. remove files + rm -rf ${IMAGE_ROOTFS}/lib/firmware/sysmobts* + rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/staging/sysmobts/msgqueue.ko + rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/fpgadl.ko + rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/staging/sysmobts/rtfifo.ko + rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/dspdl.ko + rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/dspdl_dm644x.ko + rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/fpgadl_par.ko + + # Who cares about udev? + rm -rf ${IMAGE_ROOTFS}/lib/udev/hwdb.d/* + rm -rf ${IMAGE_ROOTFS}/etc/udev/hwdb.bin +} + +IMAGE_PREPROCESS_COMMAND += "shrink_rescue; " diff --git a/recipes-core/images/image-rauc-slot-rescue.bb b/recipes-core/images/image-rauc-slot-rescue.bb deleted file mode 100644 index 00537cc..0000000 --- a/recipes-core/images/image-rauc-slot-rescue.bb +++ /dev/null @@ -1,71 +0,0 @@ -DESCRIPTION = "rescue initramfs" - -PACKAGE_INSTALL = "task-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${ROOTFS_PKGMANAGE} rauc dropbear" - -IMAGE_LINGUAS = "" - -LICENSE = "MIT" - -inherit core-image -require recipes-apps/images/image-manifest.inc - -# cpio config -XZ_COMPRESSION_LEVEL = "-e -9 --lzma2=dict=512KiB" -XZ_THREADS = "-T 0" -XZ_INTEGRITY_CHECK = "crc32" - -# ubifs config (override IMAGE_CMD_ubi to create custome volumes) -IMAGE_CMD_ubi () { - echo \[rescue\] > ubinize.cfg - echo mode=ubi >> ubinize.cfg - echo image=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubifs >> ubinize.cfg - echo vol_id=0 >> ubinize.cfg - echo vol_size=32MiB >> ubinize.cfg - echo vol_type=dynamic >> ubinize.cfg - echo vol_name=rescue >> ubinize.cfg - echo \[system0\] >> ubinize.cfg - echo mode=ubi >> ubinize.cfg - echo vol_id=1 >> ubinize.cfg - echo vol_size=32MiB >> ubinize.cfg - echo vol_type=dynamic >> ubinize.cfg - echo vol_name=system0 >> ubinize.cfg - echo \[system1\] >> ubinize.cfg - echo mode=ubi >> ubinize.cfg - echo vol_id=2 >> ubinize.cfg - echo vol_size=32MiB >> ubinize.cfg - echo vol_type=dynamic >> ubinize.cfg - echo vol_name=system1 >> ubinize.cfg - echo \[data\] >> ubinize.cfg - echo mode=ubi >> ubinize.cfg - echo vol_id=3 >> ubinize.cfg - echo vol_size=4MiB >> ubinize.cfg - echo vol_type=dynamic >> ubinize.cfg - echo vol_name=data >> ubinize.cfg - echo vol_flags=autoresize >> ubinize.cfg - mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubifs ${MKUBIFS_ARGS} && ubinize -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ubi ${UBINIZE_ARGS} ubinize.cfg -} - -IMAGE_FSTYPES_sysmocom-idu = "cpio.xz" -IMAGE_FSTYPES_sysmobts-v2 = "ubi" - -BAD_RECOMMENDATIONS_append = " busybox-syslog" -BAD_RECOMMENDATIONS_append_sysmobts-v2 = " e2fsprogs-e2fsck" -BAD_RECOMMENDATIONS_append_sysmocom-odu = " e2fsprogs-e2fsck" - - -shrink_rescue() { - # In case of the sysmoBTS.. remove files - rm -rf ${IMAGE_ROOTFS}/lib/firmware/sysmobts* - rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/staging/sysmobts/msgqueue.ko - rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/fpgadl.ko - rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/staging/sysmobts/rtfifo.ko - rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/dspdl.ko - rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/dspdl_dm644x.ko - rm -rf ${IMAGE_ROOTFS}/lib/modules/*/kernel/drivers/misc/fpgadl_par.ko - - # Who cares about udev? - rm -rf ${IMAGE_ROOTFS}/lib/udev/hwdb.d/* - rm -rf ${IMAGE_ROOTFS}/etc/udev/hwdb.bin -} - -IMAGE_PREPROCESS_COMMAND += "shrink_rescue; " diff --git a/recipes-core/images/image-rauc-ubi.bb b/recipes-core/images/image-rauc-ubi.bb new file mode 100644 index 0000000..56514fc --- /dev/null +++ b/recipes-core/images/image-rauc-ubi.bb @@ -0,0 +1,71 @@ +DESCRIPTION = "ubi with rescue slot" + +LICENSE = "MIT" + +PACKAGES = "" +PACKAGE_ARCH = "${MACHINE_ARCH}" + +DEPENDS = "mtd-utils-native" + +do_fetch[cleandirs] = "${S}" +do_patch[noexec] = "1" +do_configure[noexec] = "1" +do_compile[noexec] = "1" +do_install[noexec] = "1" +do_populate_sysroot[noexec] = "1" +do_package[noexec] = "1" +do_package_write_ipk[noexec] = "1" +do_package_write_deb[noexec] = "1" +do_package_write_rpm[noexec] = "1" + +do_fetch[depends] = "virtual/kernel:do_build image-rauc-rescue-initramfs:do_build" + +S = "${WORKDIR}" + +do_fetch() { + mkdir -p "${S}/fs" + + cp "${DEPLOY_DIR_IMAGE}/uImage-${MACHINE}.bin" "${S}/fs/kernel" + cp "${DEPLOY_DIR_IMAGE}/image-rauc-rescue-initramfs-${MACHINE}.cpio.xz" "${S}/fs/initramfs" +} + +IMAGE_ROOTFS = "${S}/fs" +IMAGE_NAME = "${PN}-${MACHINE}-${DATETIME}" +# Don't include the DATETIME variable in the sstate package sigantures +IMAGE_NAME[vardepsexclude] = "DATETIME" +IMAGE_LINK_NAME = "${PN}-${MACHINE}" + +do_deploy() { + echo \[rescue\] > ubinize.cfg + echo mode=ubi >> ubinize.cfg + echo image=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rescue.ubifs >> ubinize.cfg + echo vol_id=0 >> ubinize.cfg + echo vol_size=32MiB >> ubinize.cfg + echo vol_type=dynamic >> ubinize.cfg + echo vol_name=rescue >> ubinize.cfg + echo \[system0\] >> ubinize.cfg + echo mode=ubi >> ubinize.cfg + echo vol_id=1 >> ubinize.cfg + echo vol_size=32MiB >> ubinize.cfg + echo vol_type=dynamic >> ubinize.cfg + echo vol_name=system0 >> ubinize.cfg + echo \[system1\] >> ubinize.cfg + echo mode=ubi >> ubinize.cfg + echo vol_id=2 >> ubinize.cfg + echo vol_size=32MiB >> ubinize.cfg + echo vol_type=dynamic >> ubinize.cfg + echo vol_name=system1 >> ubinize.cfg + echo \[data\] >> ubinize.cfg + echo mode=ubi >> ubinize.cfg + echo vol_id=3 >> ubinize.cfg + echo vol_size=4MiB >> ubinize.cfg + echo vol_type=dynamic >> ubinize.cfg + echo vol_name=data >> ubinize.cfg + echo vol_flags=autoresize >> ubinize.cfg + + mkfs.ubifs -r ${IMAGE_ROOTFS} -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rescue.ubifs ${MKUBIFS_ARGS} + ubinize -o ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.ubi ${UBINIZE_ARGS} ubinize.cfg + ln -sf ${IMAGE_NAME}.ubi ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.ubi +} + +addtask deploy after do_fetch before do_build