diff --git a/dracut/full-modules/mount_modules.sh b/dracut/full-modules/mount_modules.sh index afa617e7..49690b8a 100644 --- a/dracut/full-modules/mount_modules.sh +++ b/dracut/full-modules/mount_modules.sh @@ -11,7 +11,7 @@ if ! [ -d "$NEWROOT/lib/modules/$kver/kernel" ]; then # Mount only `uname -r` subdirectory, to leave the rest of /lib/modules writable mkdir -p /tmp/modules - mount -n -t ext3 /dev/xvdd /tmp/modules + mount -r -n -t ext3 /dev/xvdd /tmp/modules if ! [ -d "$NEWROOT/lib/modules/$kver" ]; then mount "$NEWROOT" -o remount,rw mkdir -p "$NEWROOT/lib/modules/$kver" diff --git a/dracut/simple/init.sh b/dracut/simple/init.sh index 1d6f6b1d..0e318cac 100644 --- a/dracut/simple/init.sh +++ b/dracut/simple/init.sh @@ -1,6 +1,8 @@ #!/bin/sh echo "Qubes initramfs script here:" +PATH=/sbin:/bin + mkdir -p /proc /sys /dev mount -t proc proc /proc mount -t sysfs sysfs /sys @@ -85,10 +87,15 @@ EOF echo Qubes: done. fi -/sbin/modprobe ext4 +rootfs_type=$(blkid --output value --match-tag TYPE /dev/mapper/dmroot) +/sbin/modprobe "$rootfs_type" mkdir -p /sysroot -mount /dev/mapper/dmroot /sysroot -o rw +if [ "$rootfs_type" = "btrfs" ]; then + mount /dev/mapper/dmroot /sysroot -o rw,subvol=root +else + mount /dev/mapper/dmroot /sysroot -o rw +fi NEWROOT=/sysroot kver="`uname -r`" @@ -97,7 +104,7 @@ if ! [ -d "$NEWROOT/lib/modules/$kver/kernel" ]; then while ! [ -e /dev/xvdd ]; do sleep 0.1; done mkdir -p /tmp/modules - mount -n -t ext3 /dev/xvdd /tmp/modules + mount -r -n -t ext3 /dev/xvdd /tmp/modules if /sbin/modprobe overlay; then # if overlayfs is supported, use that to provide fully writable /lib/modules if ! [ -d "$NEWROOT/lib/.modules_work" ]; then diff --git a/dracut/simple/module-setup.sh b/dracut/simple/module-setup.sh index 2dd6d1f9..8f0413c7 100644 --- a/dracut/simple/module-setup.sh +++ b/dracut/simple/module-setup.sh @@ -23,6 +23,7 @@ install() { modprobe \ ln \ switch_root \ + blkid \ mount \ umount \ mkdir \