#!/bin/sh # # chkconfig: 2345 99 00 # description: Executes Qubes core scripts at Dom0 boot # ### BEGIN INIT INFO # Provides: qubes-core # Required-Start: xend # Default-Start: 3 4 5 # Default-Stop: 0 1 2 6 # Default-Enabled: yes # Short-Description: Start/stop qubes-core services # Description: Starts and stops the qubes-core serives ### END INIT INFO # Source function library. . /etc/rc.d/init.d/functions setup_dvm_files() { ROOT=/var/lib/qubes/dvmdata/savefile_root DEFAULT=/var/lib/qubes/dvmdata/default_savefile if ! [ -f $DEFAULT ] ; then return ; fi if ! [ -f $ROOT ] ; then return ; fi if [ $ROOT -nt $DEFAULT ] ; then echo DVM require reconfiguration return fi if [ -f /var/lib/qubes/dvmdata/dont_use_shm ] ; then ln -s $DEFAULT /var/run/qubes/current_savefile else mkdir -m 770 /dev/shm/qubes chown root.qubes /dev/shm/qubes cp $DEFAULT /dev/shm/qubes/current_savefile chown root.qubes /dev/shm/qubes/current_savefile chmod 660 /dev/shm/qubes/current_savefile ln -s /dev/shm/qubes/current_savefile /var/run/qubes/current_savefile fi } start() { echo -n $"Executing Qubes Core scripts:" chgrp qubes /etc/xen chmod 710 /etc/xen chgrp qubes /var/run/xend chmod 710 /var/run/xend chgrp qubes /var/run/xend/xen-api.sock /var/run/xend/xmlrpc.sock chmod 660 /var/run/xend/xen-api.sock /var/run/xend/xmlrpc.sock chgrp qubes /var/run/xenstored/* chmod 660 /var/run/xenstored/* xm sched-credit -d 0 -w 65535 printf "\x00\x00\x00\x00" > /var/run/qubes/dispVM_seq chown root:qubes /var/run/qubes/dispVM_seq chmod 660 /var/run/qubes/dispVM_seq xm mem-set 0 1600 cp /var/lib/qubes/qubes.xml /var/lib/qubes/backup/qubes-$(date +%F-%T).xml setup_dvm_files /usr/lib/qubes/qmemman_daemon.py >/var/log/qubes/qmemman.log 2>/var/log/qubes/qmemman.errs & MEM_CHANGE_THRESHOLD_KB=30000 MEMINFO_DELAY_USEC=100000 /usr/lib/qubes/meminfo-writer $MEM_CHANGE_THRESHOLD_KB $MEMINFO_DELAY_USEC & touch /var/lock/subsys/qubes_core success echo } stop() { echo -n $"Shutting down all Qubes VMs:" NETVM=$(qvm-get-default-netvm) qvm-run -q --shutdown --all --wait --exclude $NETVM rm -f /var/lock/subsys/qubes_core success echo } case "$1" in start) start ;; stop) stop ;; *) echo $"Usage: $0 {start|stop}" exit 3 ;; esac exit $RETVAL