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:
parent
61f6054ce3
commit
6cd22a42bb
@ -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"
|
||||||
|
@ -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"
|
||||||
|
Loading…
Reference in New Issue
Block a user