initramfs: use units of sectors in sfdisk call

New version of sfdisk have different syntax for other units (suffixes
beside the numbers, instead of global --unit). The only common unit is
sector, so use that.

Fixes QubesOS/qubes-issues#1427
This commit is contained in:
Marek Marczykowski-Górecki 2015-11-25 03:38:51 +01:00
parent 61f6054ce3
commit 6cd22a42bb
No known key found for this signature in database
GPG Key ID: 063938BA42CFA724
2 changed files with 19 additions and 16 deletions

View File

@ -56,19 +56,20 @@ log_begin "Waiting for /dev/xvda* devices..."
while ! [ -e /dev/xvda ]; do sleep 0.1; done while ! [ -e /dev/xvda ]; do sleep 0.1; done
log_end log_end
SWAP_SIZE=$(( 1024 * 1024 * 2 )) # sectors, 1GB
if [ `cat /sys/block/xvda/ro` = 1 ] ; then if [ `cat /sys/block/xvda/ro` = 1 ] ; then
log_begin "Qubes: Doing COW setup for AppVM..." log_begin "Qubes: Doing COW setup for AppVM..."
while ! [ -e /dev/xvdc ]; do sleep 0.1; done while ! [ -e /dev/xvdc ]; do sleep 0.1; done
VOLATILE_SIZE=$(sfdisk -s /dev/xvdc) VOLATILE_SIZE=$(cat /sys/block/xvdc/size) # sectors
ROOT_SIZE=$(sfdisk -s /dev/xvda) # kbytes ROOT_SIZE=$(cat /sys/block/xvda/size) # sectors
SWAP_SIZE=$(( 1024 * 1024 )) # kbytes if [ $VOLATILE_SIZE -lt $SWAP_SIZE ]; then
if [ $VOLATILE_SIZE -lt $(($ROOT_SIZE + $SWAP_SIZE)) ]; then die "volatile.img smaller than 1GB, cannot continue"
ROOT_SIZE=$(($VOLATILE_SIZE - $SWAP_SIZE))
fi fi
sfdisk -q --unit B /dev/xvdc >/dev/null <<EOF sfdisk -q --unit S /dev/xvdc >/dev/null <<EOF
0,$SWAP_SIZE,S 1,$SWAP_SIZE,S
,$ROOT_SIZE,L ,,L
EOF EOF
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
die "Qubes: failed to setup partitions on volatile device" die "Qubes: failed to setup partitions on volatile device"

View File

@ -12,22 +12,24 @@ fi
modprobe xenblk || modprobe xen-blkfront || echo "Qubes: Cannot load Xen Block Frontend..." modprobe xenblk || modprobe xen-blkfront || echo "Qubes: Cannot load Xen Block Frontend..."
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
SWAP_SIZE=$(( 1024 * 1024 * 2 )) # sectors, 1GB
if [ `cat /sys/block/xvda/ro` = 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
VOLATILE_SIZE=$(sfdisk -s /dev/xvdc) VOLATILE_SIZE=$(cat /sys/block/xvdc/size) # sectors
ROOT_SIZE=$(sfdisk -s /dev/xvda) # kbytes ROOT_SIZE=$(cat /sys/block/xvda/size) # sectors
SWAP_SIZE=$(( 1024 * 1024 )) # kbytes if [ $VOLATILE_SIZE -lt $SWAP_SIZE ]; then
if [ $VOLATILE_SIZE -lt $(($ROOT_SIZE + $SWAP_SIZE)) ]; then die "volatile.img smaller than 1GB, cannot continue"
ROOT_SIZE=$(($VOLATILE_SIZE - $SWAP_SIZE))
fi fi
sfdisk -q --unit B /dev/xvdc >/dev/null <<EOF sfdisk -q --unit S /dev/xvdc >/dev/null <<EOF
0,$SWAP_SIZE,S 1,$SWAP_SIZE,S
,$ROOT_SIZE,L ,,L
EOF EOF
if [ $? -ne 0 ]; then if [ $? -ne 0 ]; then
echo "Qubes: failed to setup partitions on volatile device" echo "Qubes: failed to setup partitions on volatile device"