mirror of
git://git.yoctoproject.org/poky
synced 2026-05-18 16:15:44 +00:00
When installed, this module mounts a read-write (RW) overlay on top of a root filesystem, which is kept read-only (RO), free from modifications by the user, this might prove to be useful if we want to access or restore the original unmodified rootfs. The existing overlay-etc.bbclass does something similar, it mounts an overlay on top of the /etc directory, however doing the same for root causes the original root to be inaccessible once the system is booted, hence why this module is added to the initramfs boot flow, allowing us to mount the RW overlay, while keeping the original rootfs mounted at /rofs once the system finishes booting. This script is loosely based on that class. This module requires rootrw=<foo> to be passed as a kernel parameter to specify the device/partition to be used as RW by the overlay and has a dependency on overlayfs support being present in the running kernel. It does not require the read-only IMAGE_FEATURE to be enabled. The module needs to be executed after the initramfs-module-rootfs since it relies on it to mount the filesystem at initramfs startup but before the finish module which normally switches root. After overlayroot is executed the usual boot flow continues from the real init process. If something goes wrong while running this module, the rootfs is still mounted RO (with no overlay) and the finish module is executed to continue booting normally. Its worth noting that, on purpose, this isnt installed by default on any images that use initramfs-framework to keep the boot flow unmodified, only when a user manually requests to install it, then it becomes functional. (From OE-Core rev: 4f876982a856c54a8074c85346632e33caa7ef53) Signed-off-by: Alejandro Enedino Hernandez Samaniego <alhe@linux.microsoft.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
119 lines
4.0 KiB
BlitzBasic
119 lines
4.0 KiB
BlitzBasic
SUMMARY = "Modular initramfs system"
|
|
LICENSE = "MIT"
|
|
LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
|
|
RDEPENDS:${PN} += "${VIRTUAL-RUNTIME_base-utils}"
|
|
RRECOMMENDS:${PN} = "${VIRTUAL-RUNTIME_base-utils-syslog}"
|
|
|
|
PR = "r4"
|
|
|
|
inherit allarch
|
|
|
|
SRC_URI = "file://init \
|
|
file://exec \
|
|
file://nfsrootfs \
|
|
file://rootfs \
|
|
file://finish \
|
|
file://mdev \
|
|
file://udev \
|
|
file://e2fs \
|
|
file://debug \
|
|
file://lvm \
|
|
file://overlayroot \
|
|
"
|
|
|
|
S = "${WORKDIR}"
|
|
|
|
do_install() {
|
|
install -d ${D}/init.d
|
|
|
|
# base
|
|
install -m 0755 ${WORKDIR}/init ${D}/init
|
|
install -m 0755 ${WORKDIR}/nfsrootfs ${D}/init.d/85-nfsrootfs
|
|
install -m 0755 ${WORKDIR}/rootfs ${D}/init.d/90-rootfs
|
|
install -m 0755 ${WORKDIR}/finish ${D}/init.d/99-finish
|
|
|
|
# exec
|
|
install -m 0755 ${WORKDIR}/exec ${D}/init.d/89-exec
|
|
|
|
# mdev
|
|
install -m 0755 ${WORKDIR}/mdev ${D}/init.d/01-mdev
|
|
|
|
# udev
|
|
install -m 0755 ${WORKDIR}/udev ${D}/init.d/01-udev
|
|
|
|
# e2fs
|
|
install -m 0755 ${WORKDIR}/e2fs ${D}/init.d/10-e2fs
|
|
|
|
# debug
|
|
install -m 0755 ${WORKDIR}/debug ${D}/init.d/00-debug
|
|
|
|
# lvm
|
|
install -m 0755 ${WORKDIR}/lvm ${D}/init.d/09-lvm
|
|
|
|
# overlayroot needs to run after rootfs module but before finish
|
|
install -m 0755 ${WORKDIR}/overlayroot ${D}/init.d/91-overlayroot
|
|
|
|
# Create device nodes expected by some kernels in initramfs
|
|
# before even executing /init.
|
|
install -d ${D}/dev
|
|
mknod -m 622 ${D}/dev/console c 5 1
|
|
}
|
|
|
|
PACKAGES = "${PN}-base \
|
|
initramfs-module-exec \
|
|
initramfs-module-mdev \
|
|
initramfs-module-udev \
|
|
initramfs-module-e2fs \
|
|
initramfs-module-nfsrootfs \
|
|
initramfs-module-rootfs \
|
|
initramfs-module-debug \
|
|
initramfs-module-lvm \
|
|
initramfs-module-overlayroot \
|
|
"
|
|
|
|
FILES:${PN}-base = "/init /init.d/99-finish /dev"
|
|
|
|
# 99-finish in base depends on some other module which mounts
|
|
# the rootfs, like 90-rootfs. To replace that default, use
|
|
# BAD_RECOMMENDATIONS += "initramfs-module-rootfs" in your
|
|
# initramfs recipe and install something else, or install
|
|
# something that runs earlier (for example, a 89-my-rootfs)
|
|
# and mounts the rootfs. Then 90-rootfs will proceed immediately.
|
|
RRECOMMENDS:${PN}-base += "initramfs-module-rootfs"
|
|
|
|
SUMMARY:initramfs-module-exec = "initramfs support for easy execution of applications"
|
|
RDEPENDS:initramfs-module-exec = "${PN}-base"
|
|
FILES:initramfs-module-exec = "/init.d/89-exec"
|
|
|
|
SUMMARY:initramfs-module-mdev = "initramfs support for mdev"
|
|
RDEPENDS:initramfs-module-mdev = "${PN}-base busybox-mdev"
|
|
FILES:initramfs-module-mdev = "/init.d/01-mdev"
|
|
|
|
SUMMARY:initramfs-module-udev = "initramfs support for udev"
|
|
RDEPENDS:initramfs-module-udev = "${PN}-base udev"
|
|
FILES:initramfs-module-udev = "/init.d/01-udev"
|
|
|
|
SUMMARY:initramfs-module-e2fs = "initramfs support for ext4/ext3/ext2 filesystems"
|
|
RDEPENDS:initramfs-module-e2fs = "${PN}-base"
|
|
FILES:initramfs-module-e2fs = "/init.d/10-e2fs"
|
|
|
|
SUMMARY:initramfs-module-nfsrootfs = "initramfs support for locating and mounting the root partition via nfs"
|
|
RDEPENDS:initramfs-module-nfsrootfs = "${PN}-base"
|
|
FILES:initramfs-module-nfsrootfs = "/init.d/85-nfsrootfs"
|
|
|
|
SUMMARY:initramfs-module-rootfs = "initramfs support for locating and mounting the root partition"
|
|
RDEPENDS:initramfs-module-rootfs = "${PN}-base"
|
|
FILES:initramfs-module-rootfs = "/init.d/90-rootfs"
|
|
|
|
SUMMARY:initramfs-module-debug = "initramfs dynamic debug support"
|
|
RDEPENDS:initramfs-module-debug = "${PN}-base"
|
|
FILES:initramfs-module-debug = "/init.d/00-debug"
|
|
|
|
SUMMARY:initramfs-module-lvm = "initramfs lvm rootfs support"
|
|
RDEPENDS:initramfs-module-lvm = "${PN}-base"
|
|
FILES:initramfs-module-lvm = "/init.d/09-lvm"
|
|
|
|
SUMMARY:initramfs-module-overlayroot = "initramfs support for mounting a RW overlay on top of a RO root filesystem"
|
|
RDEPENDS:initramfs-module-overlayroot = "${PN}-base initramfs-module-rootfs"
|
|
FILES:initramfs-module-overlayroot = "/init.d/91-overlayroot"
|