2014-07-17 00:27:33 +00:00
|
|
|
#!/bin/sh
|
|
|
|
echo "Qubes initramfs script here:"
|
|
|
|
|
2015-03-21 03:14:01 +00:00
|
|
|
mkdir -p /proc /sys /dev
|
|
|
|
mount -t proc proc /proc
|
|
|
|
mount -t sysfs sysfs /sys
|
|
|
|
mount -t devtmpfs devtmpfs /dev
|
|
|
|
|
2014-07-17 00:27:33 +00:00
|
|
|
if [ -e /dev/mapper/dmroot ] ; then
|
2015-03-22 02:25:01 +00:00
|
|
|
echo "Qubes: FATAL error: /dev/mapper/dmroot already exists?!"
|
2014-07-17 00:27:33 +00:00
|
|
|
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
|
2015-03-20 09:33:23 +00:00
|
|
|
dmsetup mknodes dmroot
|
2015-03-21 03:14:01 +00:00
|
|
|
|
2015-03-22 02:25:01 +00:00
|
|
|
modprobe ext4
|
|
|
|
|
2015-03-21 03:14:01 +00:00
|
|
|
mkdir -p /sysroot
|
|
|
|
mount /dev/mapper/dmroot /sysroot -o ro
|
2015-03-22 02:25:01 +00:00
|
|
|
NEWROOT=/sysroot
|
2015-03-21 03:14:01 +00:00
|
|
|
|
|
|
|
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
|
|
|
|
|
2015-03-22 02:25:01 +00:00
|
|
|
exec switch_root $NEWROOT /sbin/init
|