vm-initramfs: use sysfs directly to get block device parameters

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.
This commit is contained in:
Marek Marczykowski 2012-06-15 13:19:44 +02:00
parent f27df0e0bb
commit da5a960584

View File

@ -14,18 +14,18 @@ modprobe xenblk || modprobe xen-blkfront || echo "Qubes: Cannot load Xen Block F
echo "Waiting for /dev/xvda* devices..." echo "Waiting for /dev/xvda* devices..."
while ! [ -e /dev/xvda ]; do sleep 0.1; done while ! [ -e /dev/xvda ]; do sleep 0.1; done
if [ `blockdev --getro /dev/xvda` = 1 ] ; then if [ `cat /sys/block/xvda/ro` = 1 ] ; then
echo "Qubes: Doing COW setup for AppVM..." echo "Qubes: Doing COW setup for AppVM..."
while ! [ -e /dev/xvdc ]; do sleep 0.1; done while ! [ -e /dev/xvdc ]; do sleep 0.1; done
while ! [ -e /dev/xvdc2 ]; do sleep 0.1; done while ! [ -e /dev/xvdc2 ]; do sleep 0.1; done
echo "0 `blockdev --getsz /dev/xvda` snapshot /dev/xvda /dev/xvdc2 N 16" | \ echo "0 `cat /sys/block/xvda/size` snapshot /dev/xvda /dev/xvdc2 N 16" | \
dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; } dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; }
echo Qubes: done. echo Qubes: done.
else else
echo "Qubes: Doing R/W setup for TemplateVM..." echo "Qubes: Doing R/W setup for TemplateVM..."
echo "0 `blockdev --getsz /dev/xvda` linear /dev/xvda 0" | \ echo "0 `cat /sys/block/xvda/size` linear /dev/xvda 0" | \
dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; exit 1; } dmsetup create dmroot || { echo "Qubes: FATAL: cannot create dmroot!"; exit 1; }
echo Qubes: done. echo Qubes: done.
fi fi