da5a960584
Don't use blkdev program, as isn't installed by default by dracut in FC17. Actually it isn't necessary to get 'ro' and 'size' parameters, as they can be read directly from sysfs.
32 lines
992 B
Bash
Executable File
32 lines
992 B
Bash
Executable File
#
|
|
# 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
|
|
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
|