From 882052eca0b454629c412ce7efdf4be6ecc08693 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Marczykowski-G=C3=B3recki?= Date: Sun, 8 Nov 2015 00:29:55 +0100 Subject: [PATCH] dracut: split 'full' dracut module into 'full-dmroot' and 'full-modules' When PV Grub will be used, VM initramfs should not contain /lib/modules mounting code, as the VM root.img will already contains kernel modules. Make it possible by splitting the module. QubesOS/qubes-issues#1354 --- dracut/Makefile | 3 ++- dracut/{full => full-dmroot}/Makefile | 2 +- dracut/{full => full-dmroot}/module-setup.sh | 3 +-- dracut/{full => full-dmroot}/qubes_cow_setup.sh | 2 +- dracut/full-modules/Makefile | 4 ++++ dracut/full-modules/module-setup.sh | 9 +++++++++ dracut/{full => full-modules}/mount_modules.sh | 2 +- rpm_spec/qubes-kernel-vm-support.spec | 1 + 8 files changed, 20 insertions(+), 6 deletions(-) rename dracut/{full => full-dmroot}/Makefile (65%) rename dracut/{full => full-dmroot}/module-setup.sh (65%) rename dracut/{full => full-dmroot}/qubes_cow_setup.sh (100%) create mode 100644 dracut/full-modules/Makefile create mode 100644 dracut/full-modules/module-setup.sh rename dracut/{full => full-modules}/mount_modules.sh (100%) diff --git a/dracut/Makefile b/dracut/Makefile index f3b6897..b46c7a2 100644 --- a/dracut/Makefile +++ b/dracut/Makefile @@ -1,3 +1,4 @@ install: $(MAKE) -C simple - $(MAKE) -C full + $(MAKE) -C full-dmroot + $(MAKE) -C full-modules diff --git a/dracut/full/Makefile b/dracut/full-dmroot/Makefile similarity index 65% rename from dracut/full/Makefile rename to dracut/full-dmroot/Makefile index 272669f..4dc2e80 100644 --- a/dracut/full/Makefile +++ b/dracut/full-dmroot/Makefile @@ -1,4 +1,4 @@ install: install -d $(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm - install module-setup.sh mount_modules.sh qubes_cow_setup.sh \ + install module-setup.sh qubes_cow_setup.sh \ $(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm/ diff --git a/dracut/full/module-setup.sh b/dracut/full-dmroot/module-setup.sh similarity index 65% rename from dracut/full/module-setup.sh rename to dracut/full-dmroot/module-setup.sh index 652fe8a..ecb316e 100644 --- a/dracut/full/module-setup.sh +++ b/dracut/full-dmroot/module-setup.sh @@ -1,7 +1,7 @@ #!/bin/bash check() { - if xenstore-read qubes-vm-type &>/dev/null; then + if xenstore-read qubes-vm-type &>/dev/null || qubesdb-read qubes-vm-type &>/dev/null; then return 0 else return 255 @@ -10,7 +10,6 @@ check() { install() { inst_hook pre-udev 90 $moddir/qubes_cow_setup.sh - inst_hook pre-pivot 50 $moddir/mount_modules.sh inst_multiple \ sfdisk \ mkswap diff --git a/dracut/full/qubes_cow_setup.sh b/dracut/full-dmroot/qubes_cow_setup.sh similarity index 100% rename from dracut/full/qubes_cow_setup.sh rename to dracut/full-dmroot/qubes_cow_setup.sh index 2e7e8d5..9d859f1 100644 --- a/dracut/full/qubes_cow_setup.sh +++ b/dracut/full-dmroot/qubes_cow_setup.sh @@ -1,8 +1,8 @@ +#!/bin/sh # # This file should be places in pre-mount directory in dracut's initramfs # -#!/bin/sh echo "Qubes initramfs script here:" if [ -e /dev/mapper/dmroot ] ; then diff --git a/dracut/full-modules/Makefile b/dracut/full-modules/Makefile new file mode 100644 index 0000000..fd38368 --- /dev/null +++ b/dracut/full-modules/Makefile @@ -0,0 +1,4 @@ +install: + install -d $(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm-modules + install module-setup.sh mount_modules.sh \ + $(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm-modules/ diff --git a/dracut/full-modules/module-setup.sh b/dracut/full-modules/module-setup.sh new file mode 100644 index 0000000..614ecd2 --- /dev/null +++ b/dracut/full-modules/module-setup.sh @@ -0,0 +1,9 @@ +#!/bin/bash + +check() { + return 255 +} + +install() { + inst_hook pre-pivot 50 $moddir/mount_modules.sh +} diff --git a/dracut/full/mount_modules.sh b/dracut/full-modules/mount_modules.sh similarity index 100% rename from dracut/full/mount_modules.sh rename to dracut/full-modules/mount_modules.sh index 3bc795e..129de59 100644 --- a/dracut/full/mount_modules.sh +++ b/dracut/full-modules/mount_modules.sh @@ -1,8 +1,8 @@ +#!/bin/sh # # This file should be places in pre-pivot directory in dracut's initramfs # -#!/bin/sh if ! [ -d $NEWROOT/lib/modules/`uname -r` ]; then echo "Waiting for /dev/xvdd device..." diff --git a/rpm_spec/qubes-kernel-vm-support.spec b/rpm_spec/qubes-kernel-vm-support.spec index a1e468c..925bbe9 100644 --- a/rpm_spec/qubes-kernel-vm-support.spec +++ b/rpm_spec/qubes-kernel-vm-support.spec @@ -61,6 +61,7 @@ make install-kernel-support DESTDIR=%{buildroot} %files /usr/lib/dracut/modules.d/90qubes-vm +/usr/lib/dracut/modules.d/90qubes-vm-modules /usr/lib/dracut/modules.d/90qubes-vm-simple /usr/src/u2mfn-%{version}/ /usr/sbin/qubes-prepare-vm-kernel