19983edc3c
This works also when the device is recreated, which is the case in DispVM (during xl restore).
136 lines
4.1 KiB
Bash
Executable File
136 lines
4.1 KiB
Bash
Executable File
#!/bin/sh
|
|
#
|
|
# chkconfig: 345 90 90
|
|
# description: Executes Qubes core scripts at VM boot
|
|
#
|
|
# Source function library.
|
|
. /etc/rc.d/init.d/functions
|
|
|
|
start()
|
|
{
|
|
echo -n $"Executing Qubes Core scripts:"
|
|
|
|
if ! [ -x /usr/bin/xenstore-read ] ; then
|
|
echo "ERROR: /usr/bin/xenstore-read not found!"
|
|
exit 1
|
|
fi
|
|
|
|
# Set permissions to /proc/xen/xenbus, so normal user can use xenstore-read
|
|
chmod 666 /proc/xen/xenbus
|
|
# Set permissions to files needed to listen at vchan
|
|
chmod 666 /proc/u2mfn
|
|
|
|
mkdir -p /var/run/xen-hotplug
|
|
|
|
name=$(/usr/bin/xenstore-read name)
|
|
if ! [ -f /etc/this_is_dvm ] ; then
|
|
# we don't want to set hostname for DispVM
|
|
# because it makes some of the pre-created dotfiles invalid (e.g. .kde/cache-<hostname>)
|
|
# (let's be frank: nobody's gonna use xterm on DispVM)
|
|
hostname $name
|
|
sed -i "s/^\(127\.0\.0\.1 .*\) \($name \)\?\(.*\)/\1\2 $name/" /etc/hosts
|
|
fi
|
|
|
|
timezone=`/usr/bin/xenstore-read qubes-timezone 2> /dev/null`
|
|
if [ -n "$timezone" ]; then
|
|
ln -f /usr/share/zoneinfo/$timezone /etc/localtime
|
|
echo "# Clock configuration autogenerated based on Qubes dom0 settings" > /etc/sysconfig/clock
|
|
echo "ZONE=\"$timezone\"" >> /etc/sysconfig/clock
|
|
fi
|
|
|
|
yum_proxy_setup=$(/usr/bin/xenstore-read qubes-service/yum-proxy-setup 2> /dev/null)
|
|
type=$(/usr/bin/xenstore-read qubes_vm_type)
|
|
if [ "$yum_proxy_setup" != "0" ] || [ -z "$yum_proxy_setup" -a "$type" == "TemplateVM" ]; then
|
|
echo proxy=http://10.137.255.254:8082/ > /etc/yum.conf.d/qubes-proxy.conf
|
|
else
|
|
echo > /etc/yum.conf.d/qubes-proxy.conf
|
|
fi
|
|
|
|
# Set IP address again (besides action in udev rules); this is needed by
|
|
# DispVM (to override DispVM-template IP) and in case when qubes_ip was
|
|
# called by udev before loading evtchn kernel module - in which case
|
|
# xenstore-read fails
|
|
INTERFACE=eth0 /usr/lib/qubes/setup_ip
|
|
|
|
mkdir -p /var/run/qubes
|
|
|
|
if [ -e /dev/xvdb ] ; then
|
|
mount /rw
|
|
|
|
if ! [ -d /rw/home ] ; then
|
|
echo
|
|
echo "--> Virgin boot of the VM: Linking /home to /rw/home"
|
|
|
|
mkdir -p /rw/config
|
|
touch /rw/config/rc.local
|
|
|
|
mkdir -p /rw/home
|
|
cp -a /home.orig/user /rw/home
|
|
|
|
mkdir -p /rw/usrlocal
|
|
cp -a /usr/local.orig/* /rw/usrlocal
|
|
|
|
touch /var/lib/qubes/first_boot_completed
|
|
fi
|
|
fi
|
|
if [ -L /home ]; then
|
|
rm /home
|
|
mkdir /home
|
|
fi
|
|
mount /home
|
|
|
|
/usr/lib/qubes/qrexec_agent 2>/var/log/qubes/qrexec_agent.log &
|
|
|
|
[ -x /rw/config/rc.local ] && /rw/config/rc.local
|
|
|
|
if ! [ -f /home/user/.gnome2/nautilus-scripts/.scripts_created ] ; then
|
|
echo "Creating symlinks for nautilus actions..."
|
|
su user -c 'mkdir -p /home/user/.gnome2/nautilus-scripts'
|
|
su user -c 'ln -s /usr/lib/qubes/qvm-copy-to-vm.gnome /home/user/.gnome2/nautilus-scripts/"Copy to other AppVM"'
|
|
su user -c 'ln -s /usr/bin/qvm-open-in-dvm /home/user/.gnome2/nautilus-scripts/"Open in DisposableVM"'
|
|
su user -c 'touch /home/user/.gnome2/nautilus-scripts/.scripts_created'
|
|
fi
|
|
|
|
if ! [ -f /home/user/.gnome2/nautilus-scripts/.scripts_created2 ] ; then
|
|
# as we have recently renamed tools, the symlinks would need to be fixed for older templates
|
|
su user -c 'ln -sf /usr/lib/qubes/qvm-copy-to-vm.gnome /home/user/.gnome2/nautilus-scripts/"Copy to other AppVM"'
|
|
su user -c 'ln -sf /usr/bin/qvm-open-in-dvm /home/user/.gnome2/nautilus-scripts/"Open in DisposableVM"'
|
|
su user -c 'touch /home/user/.gnome2/nautilus-scripts/.scripts_created2'
|
|
fi
|
|
|
|
|
|
success
|
|
echo ""
|
|
|
|
start_ntpd=$(/usr/bin/xenstore-read qubes-service/ntpd 2> /dev/null)
|
|
if [ "$start_ntpd" == "1" ]; then
|
|
/sbin/service ntpd start
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
stop()
|
|
{
|
|
su -c 'mkdir -p /home_volatile/user/.local/share/applications' user
|
|
su -c 'cp -a /usr/share/applications/defaults.list /home_volatile/user/.local/share/applications/' user
|
|
if [ -r '/home/user/.local/share/applications/defaults.list' ]; then
|
|
su -c 'cat /home/user/.local/share/applications/defaults.list >> /home_volatile/user/.local/share/applications/defaults.list' user
|
|
fi
|
|
return 0
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
start
|
|
;;
|
|
stop)
|
|
stop
|
|
;;
|
|
*)
|
|
echo $"Usage: $0 {start|stop}"
|
|
exit 3
|
|
;;
|
|
esac
|
|
|
|
exit $RETVAL
|