dracut: Provide minimalistic initramfs files - no udev, no systemd
Provide simple script to run under busybox, this is all we need in the VM.
This commit is contained in:
parent
c64b94e9d6
commit
15cc3b2d51
@ -1,4 +1,3 @@
|
|||||||
install:
|
install:
|
||||||
install -d $(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm
|
$(MAKE) -C simple
|
||||||
install module-setup.sh mount_modules.sh qubes_cow_setup.sh \
|
$(MAKE) -C full
|
||||||
$(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm/
|
|
||||||
|
4
dracut/full/Makefile
Normal file
4
dracut/full/Makefile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
install:
|
||||||
|
install -d $(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm
|
||||||
|
install module-setup.sh mount_modules.sh qubes_cow_setup.sh \
|
||||||
|
$(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm/
|
@ -11,3 +11,4 @@ if ! [ -d $NEWROOT/lib/modules/`uname -r` ]; then
|
|||||||
mount -n -t ext3 /dev/xvdd $NEWROOT/lib/modules
|
mount -n -t ext3 /dev/xvdd $NEWROOT/lib/modules
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
killall udevd systemd-udevd
|
4
dracut/simple/Makefile
Normal file
4
dracut/simple/Makefile
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
install:
|
||||||
|
install -d $(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm-simple
|
||||||
|
install module-setup.sh init.sh \
|
||||||
|
$(DESTDIR)/usr/lib/dracut/modules.d/90qubes-vm-simple/
|
48
dracut/simple/init.sh
Normal file
48
dracut/simple/init.sh
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
echo "Qubes initramfs script here:"
|
||||||
|
|
||||||
|
mkdir -p /proc /sys /dev
|
||||||
|
mount -t proc proc /proc
|
||||||
|
mount -t sysfs sysfs /sys
|
||||||
|
mount -t devtmpfs devtmpfs /dev
|
||||||
|
|
||||||
|
if [ -e /dev/mapper/dmroot ] ; then
|
||||||
|
die "Qubes: FATAL error: /dev/mapper/dmroot already exists?!"
|
||||||
|
fi
|
||||||
|
|
||||||
|
modprobe xenblk || modprobe xen-blkfront || echo "Qubes: Cannot load Xen Block Frontend..."
|
||||||
|
|
||||||
|
echo "Waiting for /dev/xvda* devices..."
|
||||||
|
while ! [ -e /dev/xvda ]; do sleep 0.1; done
|
||||||
|
|
||||||
|
if [ `cat /sys/block/xvda/ro` = 1 ] ; then
|
||||||
|
echo "Qubes: Doing COW setup for AppVM..."
|
||||||
|
|
||||||
|
while ! [ -e /dev/xvdc ]; do sleep 0.1; done
|
||||||
|
while ! [ -e /dev/xvdc2 ]; do sleep 0.1; done
|
||||||
|
|
||||||
|
echo "0 `cat /sys/block/xvda/size` snapshot /dev/xvda /dev/xvdc2 N 16" | \
|
||||||
|
dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; }
|
||||||
|
echo Qubes: done.
|
||||||
|
else
|
||||||
|
echo "Qubes: Doing R/W setup for TemplateVM..."
|
||||||
|
echo "0 `cat /sys/block/xvda/size` linear /dev/xvda 0" | \
|
||||||
|
dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; exit 1; }
|
||||||
|
echo Qubes: done.
|
||||||
|
fi
|
||||||
|
dmsetup mknodes dmroot
|
||||||
|
|
||||||
|
mkdir -p /sysroot
|
||||||
|
mount /dev/mapper/dmroot /sysroot -o ro
|
||||||
|
|
||||||
|
if ! [ -d $NEWROOT/lib/modules/`uname -r` ]; then
|
||||||
|
echo "Waiting for /dev/xvdd device..."
|
||||||
|
while ! [ -e /dev/xvdd ]; do sleep 0.1; done
|
||||||
|
|
||||||
|
mount -n -t ext3 /dev/xvdd $NEWROOT/lib/modules
|
||||||
|
fi
|
||||||
|
|
||||||
|
|
||||||
|
umount /dev /sys /proc
|
||||||
|
|
||||||
|
exec switch_root /sysroot /sbin/init
|
14
dracut/simple/module-setup.sh
Normal file
14
dracut/simple/module-setup.sh
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
check() {
|
||||||
|
return 255
|
||||||
|
}
|
||||||
|
|
||||||
|
depends() {
|
||||||
|
echo busybox dm
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
install() {
|
||||||
|
inst $moddir/init.sh /init
|
||||||
|
}
|
@ -28,7 +28,7 @@ basedir=/var/lib/qubes/vm-kernels
|
|||||||
function recompile_u2mfn() {
|
function recompile_u2mfn() {
|
||||||
kver=$1
|
kver=$1
|
||||||
u2mfn_ver=`dkms status u2mfn|tail -n 1|cut -f 2 -d ' '|tr -d ':,'`
|
u2mfn_ver=`dkms status u2mfn|tail -n 1|cut -f 2 -d ' '|tr -d ':,'`
|
||||||
dkms install u2mfn/$u2mfn_ver -k $kver
|
dkms install u2mfn/$u2mfn_ver -k $kver --no-initrd
|
||||||
}
|
}
|
||||||
|
|
||||||
function build_modules_img() {
|
function build_modules_img() {
|
||||||
@ -50,8 +50,8 @@ function build_initramfs() {
|
|||||||
output_file=$2
|
output_file=$2
|
||||||
|
|
||||||
/sbin/dracut --nomdadmconf --nolvmconf --force \
|
/sbin/dracut --nomdadmconf --nolvmconf --force \
|
||||||
--modules "bash dm kernel-modules rootfs-block base fs-lib shutdown" \
|
--modules "kernel-modules qubes-vm-simple" \
|
||||||
--modules "qubes-vm" --conf /dev/null --confdir /var/empty \
|
--conf /dev/null --confdir /var/empty \
|
||||||
-d "xenblk xen-blkfront cdrom ext4 jbd2 crc16 dm_snapshot" \
|
-d "xenblk xen-blkfront cdrom ext4 jbd2 crc16 dm_snapshot" \
|
||||||
$output_file $kver
|
$output_file $kver
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ URL: http://www.qubes-os.org
|
|||||||
|
|
||||||
Requires: dracut
|
Requires: dracut
|
||||||
Requires: dkms
|
Requires: dkms
|
||||||
|
Requires: busybox
|
||||||
|
|
||||||
%define _builddir %(pwd)
|
%define _builddir %(pwd)
|
||||||
|
|
||||||
@ -60,6 +61,7 @@ make install-kernel-support DESTDIR=%{buildroot}
|
|||||||
|
|
||||||
%files
|
%files
|
||||||
/usr/lib/dracut/modules.d/90qubes-vm
|
/usr/lib/dracut/modules.d/90qubes-vm
|
||||||
|
/usr/lib/dracut/modules.d/90qubes-vm-simple
|
||||||
/usr/src/u2mfn-%{version}/
|
/usr/src/u2mfn-%{version}/
|
||||||
/usr/sbin/qubes-prepare-vm-kernel
|
/usr/sbin/qubes-prepare-vm-kernel
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user