77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
if [ $# != 1 -a $# != 2 ] ; then
 | 
						|
	echo 'Usage: qvm-create-default-dvm templatename|--default-template|--used-template [script-name|--default-script]'
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
export ROOT=/var/lib/qubes/dvmdata/savefile-root
 | 
						|
TEMPLATENAME=$1
 | 
						|
if [ "$TEMPLATENAME" = --used-template ] ; then
 | 
						|
	if [ -e $ROOT ] ; then
 | 
						|
		TEMPLATENAME=$(readlink $ROOT | sed -e 's/.root.img//' -e 's/.*\///')
 | 
						|
	else
 | 
						|
		TEMPLATENAME=--default-template
 | 
						|
	fi
 | 
						|
fi
 | 
						|
if [ "$TEMPLATENAME" = --default-template ] ; then
 | 
						|
	TEMPLATENAME=$(qubes-prefs --get default-template)
 | 
						|
	if [ "X"$TEMPLATENAME = "X" ] ; then
 | 
						|
		echo No default template ?
 | 
						|
		exit 1
 | 
						|
	fi
 | 
						|
fi
 | 
						|
 | 
						|
if [ "X""$2" = "X""--default-script" ] ; then
 | 
						|
	SCRIPTNAME="vm-default"
 | 
						|
else
 | 
						|
	SCRIPTNAME=$2
 | 
						|
fi
 | 
						|
 | 
						|
if ! [ -d "/var/lib/qubes/vm-templates/$TEMPLATENAME" ] ; then
 | 
						|
	echo /var/lib/qubes/vm-templates/$TEMPLATENAME is not a directory
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
DVMTMPL="$TEMPLATENAME"-dvm
 | 
						|
DVMTMPLDIR="/var/lib/qubes/appvms/$DVMTMPL"
 | 
						|
if ! [ -d "$DVMTMPLDIR" ] ; then
 | 
						|
	# unfortunately, currently there are reliability issues with save of a domain
 | 
						|
	# with multiple CPUs and/or more than 4000M RAM
 | 
						|
	if ! qvm-create --force-root --vcpus=1 --internal -t "$TEMPLATENAME" -l gray "$DVMTMPL" ; then exit 1 ; fi
 | 
						|
	MAXMEM=`qvm-prefs --force-root $DVMTMPL|grep ^maxmem|awk '{print $3}'`
 | 
						|
	if [ "$MAXMEM" -ge 4000 ]; then
 | 
						|
		qvm-prefs --force-root -s $DVMTMPL maxmem 4000
 | 
						|
	fi
 | 
						|
fi
 | 
						|
if ! /usr/lib/qubes/qubes-prepare-saved-domain.sh \
 | 
						|
	"$DVMTMPL" "/var/lib/qubes/appvms/$DVMTMPL/dvm-savefile" $SCRIPTNAME ; then
 | 
						|
	exit 1
 | 
						|
fi
 | 
						|
DEFAULT=/var/lib/qubes/dvmdata/default-savefile
 | 
						|
DEFAULTCONF=/var/lib/qubes/dvmdata/default-dvm.conf
 | 
						|
CURRENT=/var/run/qubes/current-savefile
 | 
						|
CURRENTCONF=/var/run/qubes/current-dvm.conf
 | 
						|
SHMDIR=/dev/shm/qubes
 | 
						|
SHMCOPY=$SHMDIR/current-savefile
 | 
						|
rm -f $ROOT $DEFAULT $CURRENT $DEFAULTCONF $CURRENTCONF
 | 
						|
ln -s "/var/lib/qubes/appvms/$DVMTMPL/dvm-savefile" $DEFAULT
 | 
						|
ln -s "/var/lib/qubes/vm-templates/$TEMPLATENAME/root.img" $ROOT
 | 
						|
ln -s $DVMTMPLDIR/dvm.conf $DEFAULTCONF
 | 
						|
ln -s $DVMTMPLDIR/dvm.conf $CURRENTCONF
 | 
						|
if [ -f /var/lib/qubes/dvmdata/dont-use-shm ] ; then
 | 
						|
            ln -s $DEFAULT $CURRENT
 | 
						|
else
 | 
						|
	mkdir -m 770 $SHMDIR 2>/dev/null
 | 
						|
	chgrp qubes $SHMDIR 2>/dev/null
 | 
						|
	rm -f $SHMCOPY
 | 
						|
	cp $DEFAULT $SHMCOPY || exit 1
 | 
						|
	chgrp qubes $SHMCOPY
 | 
						|
	chmod 660 $SHMCOPY
 | 
						|
	ln -s $SHMCOPY $CURRENT
 | 
						|
fi 
 | 
						|
 | 
						|
if [ $(whoami) = "root" ] ; then
 | 
						|
	chgrp qubes "$DVMTMPLDIR" "$DVMTMPLDIR"/*
 | 
						|
	chmod 660 "$DVMTMPLDIR"/*
 | 
						|
	chmod 770 "$DVMTMPLDIR"
 | 
						|
fi
 | 
						|
 |