2e4cdc2f8d
Fedora is no longer the only supported distribution, so change the service name to be more generic. Old name still supported for compatibility.
119 lines
3.2 KiB
Bash
Executable File
119 lines
3.2 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 || /usr/bin/xenstore-read qubes-service/updates-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
|
|
resize2fs /dev/xvdb 2> /dev/null || echo "'resize2fs /dev/xvdb' failed"
|
|
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
|
|
|
|
[ -x /rw/config/rc.local ] && /rw/config/rc.local
|
|
|
|
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
|