ref: 1bffc0c7e7563ba9ce6471979cfe18616d36423e
parent: 0316297f063026a385758a2c1167891e51ef1fcb
author: omni <omni+alpine@hack.org>
date: Thu Jan 14 17:01:30 CST 2021
make overlaytmpfs configurable with overlaytmpfsflags - default mode=0755 for overlaytmpfs, setting with overlaytmpfsflags overrides - enable rootflags & rootfstype options for underlying rootfs - force read-only mount of "lowerdir" (root-ro) and read-write mode of "upperdir" (root-rw) to mitigate user foot gunnery
--- a/initramfs-init.in
+++ b/initramfs-init.in
@@ -346,8 +346,8 @@
myopts="alpine_dev autodetect autoraid chart cryptroot cryptdm cryptheader cryptoffset
cryptdiscards cryptkey debug_init dma init init_args keep_apk_new modules ovl_dev
pkgs quiet root_size root usbdelay ip alpine_repo apkovl alpine_start splash
- blacklist overlaytmpfs rootfstype rootflags nbd resume s390x_net dasd ssh_key
- BOOTIF zfcp"
+ blacklist overlaytmpfs overlaytmpfsflags rootfstype rootflags nbd resume s390x_net
+ dasd ssh_key BOOTIF zfcp"
for opt; do
case "$opt" in
@@ -526,12 +526,21 @@
fi
if [ "$KOPT_overlaytmpfs" = "yes" ]; then
+ # Create mountpoints
mkdir -p /media/root-ro /media/root-rw $sysroot/media/root-ro \
$sysroot/media/root-rw
- mount -o ro $KOPT_root /media/root-ro
- mount -t tmpfs root-tmpfs /media/root-rw
+ # Mount read-only underlying rootfs
+ rootflags="${KOPT_rootflags:+$KOPT_rootflags,}ro"
+ mount ${KOPT_rootfstype:+-t $KOPT_rootfstype} -o $rootflags \
+ $KOPT_root /media/root-ro
+ # Mount writable overlay tmpfs
+ overlaytmpfsflags="mode=0755,${KOPT_overlaytmpfsflags:+$KOPT_overlaytmpfsflags,}rw"
+ mount -t tmpfs -o $overlaytmpfsflags root-tmpfs /media/root-rw
+ # Create additional mountpoints and do the overlay mount
mkdir -p /media/root-rw/work /media/root-rw/root
- mount -t overlay -o lowerdir=/media/root-ro,upperdir=/media/root-rw/root,workdir=/media/root-rw/work overlayfs $sysroot
+ mount -t overlay -o \
+ lowerdir=/media/root-ro,upperdir=/media/root-rw/root,workdir=/media/root-rw/work \
+ overlayfs $sysroot
else
if [ "$rootfstype" = "zfs" ]; then
prepare_zfs_root
--- a/mkinitfs-bootparam.7.in
+++ b/mkinitfs-bootparam.7.in
@@ -67,8 +67,13 @@
Comma-sparated list of kernel modules to load explicitly.
.TP
\fBoverlaytmpfs\fR
-When booting from an read-only partition, you can specify this flag to have
-your changes written to an in-memory overlayfs.
+When booting from a read-only filesystem, you can specify this flag to have
+your changes written to an in-memory temporary overlayfs. The underlying
+filesystem will always be mounted read-only, the overlay always writable.
+.TP
+\fBoverlaytmpfsflags=\fIOPTIONS\fR
+Optional comma-separated list of tmpfs(5) mount options when \fBoverlaytmpfs\fR
+is used. The default is \fBmode=0755,rw\fR, you cannot override \fBrw\fR.
.TP
\fBquiet\fR
Generate less output.