From: Richard Weinberger Date: Tue, 5 Jul 2022 11:36:53 +0000 (+0200) Subject: Add example for squashfs+overlayfs X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=refs%2Fheads%2Fkas_squashfs_overlayfs;p=users%2Frw%2Fkaktus.git Add example for squashfs+overlayfs Signed-off-by: Richard Weinberger --- diff --git a/kaktus.yml b/kaktus.yml index a4b59fe..41a5c8b 100644 --- a/kaktus.yml +++ b/kaktus.yml @@ -1,6 +1,6 @@ header: version: 11 -machine: raspberrypi3-64 +machine: raspberrypi5 distro: kaktus target: kaktus-image repos: @@ -30,3 +30,7 @@ local_conf_header: KERNEL_MODULE_AUTOLOAD += " brcmfmac" CMDLINE_SERIAL = "console=serial0,115200" RPI_EXTRA_CONFIG = "dtoverlay=disable-bt\n" + WKS_FILE = "sdimage-kaktus.wks" + IMAGE_BOOT_FILES = "${BOOTFILES_DIR_NAME}/* \ + ${@make_dtb_boot_files(d)} \ + Image-initramfs-${MACHINE}.bin;kernel8.img" diff --git a/meta-kaktus/recipes-kaktus/images/kaktus-image.bb b/meta-kaktus/recipes-kaktus/images/kaktus-image.bb index 6857461..9a40afd 100644 --- a/meta-kaktus/recipes-kaktus/images/kaktus-image.bb +++ b/meta-kaktus/recipes-kaktus/images/kaktus-image.bb @@ -1,5 +1,5 @@ DESCRIPTION = "kaktus base image" -IMAGE_FSTYPES = "wic.bz2" +IMAGE_FSTYPES = "squashfs wic.bz2" require recipes-core/images/core-image-minimal.bb diff --git a/meta-kaktus/recipes-kaktus/images/kaktus-initramfs.bb b/meta-kaktus/recipes-kaktus/images/kaktus-initramfs.bb new file mode 100644 index 0000000..a820344 --- /dev/null +++ b/meta-kaktus/recipes-kaktus/images/kaktus-initramfs.bb @@ -0,0 +1,13 @@ +PACKAGE_INSTALL = "\ + busybox \ + rpi-initramfs-init \ +" + +IMAGE_FEATURES = "" +IMAGE_LINGUAS = "" + +IMAGE_FSTYPES = "${INITRAMFS_FSTYPES}" +inherit core-image + +IMAGE_ROOTFS_SIZE = "8192" +IMAGE_ROOTFS_EXTRA_SPACE = "0" diff --git a/meta-kaktus/recipes-kaktus/rpi-initramfs-init/files/init.sh b/meta-kaktus/recipes-kaktus/rpi-initramfs-init/files/init.sh new file mode 100644 index 0000000..8639d81 --- /dev/null +++ b/meta-kaktus/recipes-kaktus/rpi-initramfs-init/files/init.sh @@ -0,0 +1,32 @@ +#!/bin/sh +mkdir -p /proc +mkdir -p /ro +mkdir -p /rw +mkdir -p /new_root + +mount -t proc none /proc +mount -t devtmpfs none /dev + +sqfs="/dev/mmcblk0p2" +rwfs="/dev/mmcblk0p3" + +while [ ! -e ${rwfs} ]; do + echo "Waiting for ${rwfs}" + sleep 1 +done + +mount -t ext4 ${rwfs} /rw + +# Insert update concept here +if [ -r /rw/root.sfs ] ; then + mount -t squashfs -o loop /rw/root.sfs /ro +else + mount -t squashfs ${sqfs} /ro +fi + +mkdir -p /rw/overlay +mkdir -p /rw/overlay_work + +mount -t overlay overlay -o lowerdir=/ro,upperdir=/rw/overlay,workdir=/rw/overlay_work /new_root/ + +exec switch_root /new_root /sbin/init diff --git a/meta-kaktus/recipes-kaktus/rpi-initramfs-init/rpi-initramfs-init.bb b/meta-kaktus/recipes-kaktus/rpi-initramfs-init/rpi-initramfs-init.bb new file mode 100644 index 0000000..d788a27 --- /dev/null +++ b/meta-kaktus/recipes-kaktus/rpi-initramfs-init/rpi-initramfs-init.bb @@ -0,0 +1,13 @@ +SUMMARY = "init for kaktus initramfs" +LICENSE = "MIT" +LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420" +SRC_URI = "file://init.sh" +S = "${WORKDIR}" + +FILES:${PN} = "/init /dev" + +do_install () { + install -m 0755 ${WORKDIR}/init.sh ${D}/init + install -d ${D}/dev + mknod -m 622 ${D}/dev/console c 5 1 +} diff --git a/meta-kaktus/recipes-kernel/linux-raspberrypi/linux-raspberrypi_%.bbappend b/meta-kaktus/recipes-kernel/linux-raspberrypi/linux-raspberrypi_%.bbappend new file mode 100644 index 0000000..bdf4d6e --- /dev/null +++ b/meta-kaktus/recipes-kernel/linux-raspberrypi/linux-raspberrypi_%.bbappend @@ -0,0 +1,2 @@ +INITRAMFS_IMAGE = "kaktus-initramfs" +INITRAMFS_IMAGE_BUNDLE = "1" diff --git a/meta-kaktus/wic/sdimage-kaktus.wks b/meta-kaktus/wic/sdimage-kaktus.wks new file mode 100644 index 0000000..f810ba9 --- /dev/null +++ b/meta-kaktus/wic/sdimage-kaktus.wks @@ -0,0 +1,3 @@ +part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 4096 --size 64 +part /sfs_root --source rootfs --ondisk mmcblk0 --fstype=squashfs --align 4096 --fixed-size 256 --fsoptions "noauto" +part /data --ondisk mmcblk0 --fstype=ext4 --label data --align 4096 --size 512