initrd: mount / rw for the overlayfs setup time

overlayfs refuse to use R/O upperdir. Since dmroot is properly set
already, it's ok to mount it R/W.
But remount it later R/O, to not confuse startup scripts.

Fixes QubesOS/qubes-issues#5087

(cherry picked from commit 84188910cf)
This commit is contained in:
Marek Marczykowski-Górecki 2019-06-09 22:10:06 +02:00
parent 042b6717a8
commit 6501b26a36
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724

View File

@ -86,7 +86,7 @@ fi
/sbin/modprobe ext4 /sbin/modprobe ext4
mkdir -p /sysroot mkdir -p /sysroot
mount /dev/mapper/dmroot /sysroot -o ro mount /dev/mapper/dmroot /sysroot -o rw
NEWROOT=/sysroot NEWROOT=/sysroot
kver="`uname -r`" kver="`uname -r`"
@ -99,18 +99,14 @@ if ! [ -d "$NEWROOT/lib/modules/$kver/kernel" ]; then
if /sbin/modprobe overlay; then if /sbin/modprobe overlay; then
# if overlayfs is supported, use that to provide fully writable /lib/modules # if overlayfs is supported, use that to provide fully writable /lib/modules
if ! [ -d "$NEWROOT/lib/.modules_work" ]; then if ! [ -d "$NEWROOT/lib/.modules_work" ]; then
mount "$NEWROOT" -o remount,rw
mkdir -p "$NEWROOT/lib/.modules_work" mkdir -p "$NEWROOT/lib/.modules_work"
mount "$NEWROOT" -o remount,ro
fi fi
mount -t overlay none $NEWROOT/lib/modules -o lowerdir=/tmp/modules,upperdir=$NEWROOT/lib/modules,workdir=$NEWROOT/lib/.modules_work mount -t overlay none $NEWROOT/lib/modules -o lowerdir=/tmp/modules,upperdir=$NEWROOT/lib/modules,workdir=$NEWROOT/lib/.modules_work
else else
# otherwise mount only `uname -r` subdirectory, to leave the rest of # otherwise mount only `uname -r` subdirectory, to leave the rest of
# /lib/modules writable # /lib/modules writable
if ! [ -d "$NEWROOT/lib/modules/$kver" ]; then if ! [ -d "$NEWROOT/lib/modules/$kver" ]; then
mount "$NEWROOT" -o remount,rw
mkdir -p "$NEWROOT/lib/modules/$kver" mkdir -p "$NEWROOT/lib/modules/$kver"
mount "$NEWROOT" -o remount,ro
fi fi
mount --bind "/tmp/modules/$kver" "$NEWROOT/lib/modules/$kver" mount --bind "/tmp/modules/$kver" "$NEWROOT/lib/modules/$kver"
fi fi
@ -119,5 +115,6 @@ if ! [ -d "$NEWROOT/lib/modules/$kver/kernel" ]; then
fi fi
umount /dev /sys /proc umount /dev /sys /proc
mount "$NEWROOT" -o remount,ro
exec /sbin/switch_root $NEWROOT /sbin/init exec /sbin/switch_root $NEWROOT /sbin/init