diff --git a/dracut/full-dmroot/qubes_cow_setup.sh b/dracut/full-dmroot/qubes_cow_setup.sh index 13ef76a..f3b77ab 100644 --- a/dracut/full-dmroot/qubes_cow_setup.sh +++ b/dracut/full-dmroot/qubes_cow_setup.sh @@ -87,6 +87,7 @@ EOF echo "0 `cat /sys/class/block/$ROOT_DEV/size` snapshot /dev/$ROOT_DEV /dev/xvdc2 N 16" | \ dmsetup --noudevsync create dmroot || die "Qubes: FATAL: cannot create dmroot!" + dmsetup mknodes dmroot log_end else log_begin "Qubes: Doing R/W setup for TemplateVM..." @@ -99,17 +100,7 @@ EOF fi while ! [ -e /dev/xvdc1 ]; do sleep 0.1; done mkswap /dev/xvdc1 - if [ "$ROOT_DEV" = "xvda1" ]; then - # grub2-probe for some reason can't parse dm-linear pointing at - # partition device directly, but can when it points at it indirectly - # through base device and offset; lets make life easier for users of - # grub2-install - DM_ROOT="/dev/xvda $(cat /sys/class/block/$ROOT_DEV/start)" - else - DM_ROOT="/dev/$ROOT_DEV 0" - fi - echo "0 `cat /sys/class/block/$ROOT_DEV/size` linear $DM_ROOT" | \ - dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; exit 1; } + printf 'KERNEL=="%s", SYMLINK+="mapper/dmroot"' "$ROOT_DEV" >> \ + /etc/udev/rules.d/99-root.rules log_end fi -dmsetup mknodes dmroot diff --git a/dracut/simple/init.sh b/dracut/simple/init.sh index 58e989f..b09a5d6 100644 --- a/dracut/simple/init.sh +++ b/dracut/simple/init.sh @@ -52,6 +52,7 @@ EOF echo "0 `cat /sys/class/block/$ROOT_DEV/size` snapshot /dev/$ROOT_DEV /dev/xvdc2 N 16" | \ dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; exit 1; } + dmsetup mknodes dmroot echo Qubes: done. else echo "Qubes: Doing R/W setup for TemplateVM..." @@ -64,20 +65,9 @@ EOF fi while ! [ -e /dev/xvdc1 ]; do sleep 0.1; done mkswap /dev/xvdc1 - if [ "$ROOT_DEV" = "xvda1" ]; then - # grub2-probe for some reason can't parse dm-linear pointing at - # partition device directly, but can when it points at it indirectly - # through base device and offset; lets make life easier for users of - # grub2-install - DM_ROOT="/dev/xvda $(cat /sys/class/block/$ROOT_DEV/start)" - else - DM_ROOT="/dev/$ROOT_DEV 0" - fi - echo "0 `cat /sys/class/block/$ROOT_DEV/size` linear $DM_ROOT" | \ - dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; exit 1; } + ln -s ../$ROOT_DEV /dev/mapper/dmroot echo Qubes: done. fi -dmsetup mknodes dmroot modprobe ext4