Merge branch 'master' of git://git.qubes-os.org/marmarek/core

This commit is contained in:
Joanna Rutkowska 2013-02-27 09:04:20 +00:00
commit 6ec0a4a2f4
5 changed files with 59 additions and 3 deletions

View File

@ -0,0 +1,36 @@
#!/bin/sh
if [ "`id -u`" != "0" ]; then
exec sudo $0 $*
fi
set -e
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
kpartx -s -a "$FILENAME"
loopdev=`losetup -j "$FILENAME"|tail -n 1 |cut -d: -f1`
looppart=`echo $loopdev|sed 's:dev:dev/mapper:'`
mkswap -f ${looppart}p1 > /dev/null
kpartx -s -d ${loopdev}
losetup -d ${loopdev} || :
chown --reference `dirname "$FILENAME"` "$FILENAME"

View File

@ -106,6 +106,7 @@ dom0_vm = None
qubes_appmenu_create_cmd = "/usr/lib/qubes/create_apps_for_appvm.sh" qubes_appmenu_create_cmd = "/usr/lib/qubes/create_apps_for_appvm.sh"
qubes_appmenu_remove_cmd = "/usr/lib/qubes/remove_appvm_appmenus.sh" qubes_appmenu_remove_cmd = "/usr/lib/qubes/remove_appvm_appmenus.sh"
qubes_pciback_cmd = '/usr/lib/qubes/unbind_pci_device.sh' qubes_pciback_cmd = '/usr/lib/qubes/unbind_pci_device.sh'
prepare_volatile_img_cmd = '/usr/lib/qubes/prepare_volatile_img.sh'
yum_proxy_ip = '10.137.255.254' yum_proxy_ip = '10.137.255.254'
yum_proxy_port = '8082' yum_proxy_port = '8082'
@ -1238,6 +1239,15 @@ class QubesVm(object):
# Only makes sense on template based VM # Only makes sense on template based VM
if source_template is None: if source_template is None:
# For StandaloneVM create it only if not already exists (eg after backup-restore)
if not os.path.exists(self.volatile_img):
if verbose:
print >> sys.stderr, "--> Creating volatile image: {0}...".format (self.volatile_img)
f_root = open (self.root_img, "r")
f_root.seek(0, os.SEEK_END)
root_size = f_root.tell()
f_root.close()
subprocess.check_call([prepare_volatile_img_cmd, self.volatile_img, str(root_size / 1024 / 1024)])
return return
if verbose: if verbose:
@ -1400,7 +1410,7 @@ class QubesVm(object):
notify_function ("info", "Starting the '{0}' VM...".format(self.name)) notify_function ("info", "Starting the '{0}' VM...".format(self.name))
elif verbose: elif verbose:
print >> sys.stderr, "Starting the VM '{0}'...".format(self.name) print >> sys.stderr, "Starting the VM '{0}'...".format(self.name)
xid = self.start(verbose=verbose, notify_function=notify_function) xid = self.start(verbose=verbose, start_guid = gui, notify_function=notify_function)
except (IOError, OSError, QubesException) as err: except (IOError, OSError, QubesException) as err:
raise QubesException("Error while starting the '{0}' VM: {1}".format(self.name, err)) raise QubesException("Error while starting the '{0}' VM: {1}".format(self.name, err))

View File

@ -1364,5 +1364,8 @@ def backup_restore_do(backup_dir, restore_info, host_collection = None, print_ca
retcode = subprocess.call (["cp", "-nrp", backup_dom0_home_dir + '/' + f, home_file]) retcode = subprocess.call (["cp", "-nrp", backup_dom0_home_dir + '/' + f, home_file])
if retcode != 0: if retcode != 0:
error_callback("*** Error while copying file {0} to {1}".format(backup_dom0_home_dir + '/' + f, home_file)) error_callback("*** Error while copying file {0} to {1}".format(backup_dom0_home_dir + '/' + f, home_file))
retcode = subprocess.call(['sudo', 'chown', '-R', local_user, home_dir])
if retcode != 0:
error_callback("*** Error while setting home directory owner")
# vim:sw=4:et: # vim:sw=4:et:

View File

@ -26,6 +26,7 @@ YUM_OPTS=
GUI= GUI=
CHECK_ONLY= CHECK_ONLY=
ALL_OPTS=$* ALL_OPTS=$*
QVMRUN_OPTS=
# Filter out some yum options and collect packages list # Filter out some yum options and collect packages list
while [ $# -gt 0 ]; do while [ $# -gt 0 ]; do
case "$1" in case "$1" in
@ -60,6 +61,10 @@ if [ "$GUI" == "1" -a -n "$PKGS" ]; then
exit 1 exit 1
fi fi
if [ "$GUI" != "1" ]; then
QVMRUN_OPTS=--nogui
fi
# Do not start VM automaticaly when running from cron (only checking for updates) # Do not start VM automaticaly when running from cron (only checking for updates)
if [ "$CHECK_ONLY" == "1" ] && ! xl domid $UPDATEVM > /dev/null 2>&1; then if [ "$CHECK_ONLY" == "1" ] && ! xl domid $UPDATEVM > /dev/null 2>&1; then
echo "ERROR: UpdateVM not running, not starting it in non-interactive mode" >&2 echo "ERROR: UpdateVM not running, not starting it in non-interactive mode" >&2
@ -73,11 +78,11 @@ qvm-sync-clock
echo "Checking for dom0 updates" >&2 echo "Checking for dom0 updates" >&2
# Start VM if not running already # Start VM if not running already
qvm-run -a $UPDATEVM true || exit 1 qvm-run $QVMRUN_OPTS -a $UPDATEVM true || exit 1
/usr/lib/qubes/qrexec_client -d "$UPDATEVM" -l 'tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf 2>/dev/null' 'user:tar x -C /var/lib/qubes/dom0-updates' 2> /dev/null /usr/lib/qubes/qrexec_client -d "$UPDATEVM" -l 'tar c /var/lib/rpm /etc/yum.repos.d /etc/yum.conf 2>/dev/null' 'user:tar x -C /var/lib/qubes/dom0-updates' 2> /dev/null
qvm-run --pass-io $UPDATEVM "/usr/lib/qubes/qubes_download_dom0_updates.sh --doit --nogui $ALL_OPTS" qvm-run $QVMRUN_OPTS --pass-io $UPDATEVM "/usr/lib/qubes/qubes_download_dom0_updates.sh --doit --nogui $ALL_OPTS"
RETCODE=$? RETCODE=$?
if [ "$CHECK_ONLY" == "1" ]; then if [ "$CHECK_ONLY" == "1" ]; then
exit $RETCODE exit $RETCODE

View File

@ -145,6 +145,7 @@ cp aux-tools/remove_appvm_appmenus.sh $RPM_BUILD_ROOT/usr/lib/qubes
cp aux-tools/cleanup_dispvms $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/cleanup_dispvms $RPM_BUILD_ROOT/usr/lib/qubes
cp aux-tools/startup-dvm.sh $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/startup-dvm.sh $RPM_BUILD_ROOT/usr/lib/qubes
cp aux-tools/startup-misc.sh $RPM_BUILD_ROOT/usr/lib/qubes cp aux-tools/startup-misc.sh $RPM_BUILD_ROOT/usr/lib/qubes
cp aux-tools/prepare_volatile_img.sh $RPM_BUILD_ROOT/usr/lib/qubes
cp qmemman/server.py $RPM_BUILD_ROOT/usr/lib/qubes/qmemman_daemon.py cp qmemman/server.py $RPM_BUILD_ROOT/usr/lib/qubes/qmemman_daemon.py
cp ../misc/meminfo-writer $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../misc/meminfo-writer $RPM_BUILD_ROOT/usr/lib/qubes/
cp ../qrexec/qrexec_daemon $RPM_BUILD_ROOT/usr/lib/qubes/ cp ../qrexec/qrexec_daemon $RPM_BUILD_ROOT/usr/lib/qubes/
@ -440,6 +441,7 @@ fi
/usr/lib/qubes/fix_dir_perms.sh /usr/lib/qubes/fix_dir_perms.sh
/usr/lib/qubes/startup-dvm.sh /usr/lib/qubes/startup-dvm.sh
/usr/lib/qubes/startup-misc.sh /usr/lib/qubes/startup-misc.sh
/usr/lib/qubes/prepare_volatile_img.sh
%attr(4750,root,qubes) /usr/lib/qubes/qfile-dom0-unpacker %attr(4750,root,qubes) /usr/lib/qubes/qfile-dom0-unpacker
%if %{use_systemd} %if %{use_systemd}
%{_unitdir}/qubes-block-cleaner.service %{_unitdir}/qubes-block-cleaner.service