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:
parent
042b6717a8
commit
6501b26a36
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user