1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- #!/bin/sh
- if [ "`id -u`" != "0" ]; then
- exec sudo $0 $*
- fi
- set -e
- if ! echo $PATH | grep -q sbin; then
- PATH=$PATH:/sbin:/usr/sbin
- fi
- FILENAME=$1
- ROOT_SIZE=$2
- SWAP_SIZE=$[ 1024 ]
- if [ -z "$ROOT_SIZE" -o -z "$FILENAME" ]; then
- echo "Usage: $0 <filename> <root.img size in MB>"
- exit 1
- fi
- if [ -e "$FILENAME" ]; then
- echo "$FILENAME already exists, not overriding"
- exit 1
- fi
- TOTAL_SIZE=$[ $ROOT_SIZE + $SWAP_SIZE + 512 ]
- truncate -s ${TOTAL_SIZE}M "$FILENAME"
- sfdisk --no-reread -u M "$FILENAME" > /dev/null 2> /dev/null <<EOF
- 0,${SWAP_SIZE},S
- ,${ROOT_SIZE},L
- EOF
- (
- flock 200
- loopdev=`losetup -f --show --partscan "$FILENAME"`
- udevadm settle
- created=
- if [ ! -e ${loopdev}p1 ]; then
- # device wasn't created automatically, probably udev isn't running;
- # create devs manually
- for partdev in /sys/block/$(basename ${loopdev})/loop*p*; do
- mknod /dev/$(basename ${partdev}) b $(cat ${partdev}/dev | tr : ' ')
- done
- created=yes
- fi
- mkswap -f ${loopdev}p1 > /dev/null
- if [ "$created" = "yes" ]; then
- rm -f ${loopdev}p*
- fi
- losetup -d ${loopdev} || :
- chown --reference `dirname "$FILENAME"` "$FILENAME"
- ) 200>"/var/run/qubes/prepare-volatile-img.lock"
|