123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- #
- # The Qubes OS Project, http://www.qubes-os.org
- #
- # Copyright (C) 2010 Joanna Rutkowska <joanna@invisiblethingslab.com>
- # Copyright (C) 2010 Rafal Wojtczuk <rafal@invisiblethingslab.com>
- #
- # This program is free software; you can redistribute it and/or
- # modify it under the terms of the GNU General Public License
- # as published by the Free Software Foundation; either version 2
- # of the License, or (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program; if not, write to the Free Software
- # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- #
- #
- %{!?version: %define version %(cat version_vm)}
- Name: qubes-core-appvm
- Version: %{version}
- Release: 1
- Summary: The Qubes core files for AppVM
- Group: Qubes
- Vendor: Invisible Things Lab
- License: GPL
- URL: http://www.qubes-os.org
- Requires: /usr/bin/xenstore-read
- Provides: qubes-core-vm
- %define _builddir %(pwd)/appvm
- %define kde_service_dir /usr/share/kde4/services/ServiceMenus
- %description
- The Qubes core files for installation inside a Qubes AppVM.
- %pre
- mkdir -p $RPM_BUILD_ROOT/var/lib/qubes
- [ -e $RPM_BUILD_ROOT/etc/fstab ] && mv $RPM_BUILD_ROOT/etc/fstab $RPM_BUILD_ROOT/var/lib/qubes/fstab.orig
- %build
- make clean all
- %install
- mkdir -p $RPM_BUILD_ROOT/etc
- cp fstab $RPM_BUILD_ROOT/etc/fstab
- mkdir -p $RPM_BUILD_ROOT/etc/init.d
- cp qubes_core $RPM_BUILD_ROOT/etc/init.d/
- mkdir -p $RPM_BUILD_ROOT/var/lib/qubes
- mkdir -p $RPM_BUILD_ROOT/usr/bin
- cp qubes_add_pendrive_script qubes_penctl qvm-copy-to-vm qvm-copy-to-vm.kde $RPM_BUILD_ROOT/usr/bin
- mkdir -p $RPM_BUILD_ROOT/%{kde_service_dir}
- cp qvm-copy.desktop $RPM_BUILD_ROOT/%{kde_service_dir}
- mkdir -p $RPM_BUILD_ROOT/etc/udev/rules.d
- cp qubes.rules $RPM_BUILD_ROOT/etc/udev/rules.d
- mkdir -p $RPM_BUILD_ROOT/etc/sysconfig
- cp iptables $RPM_BUILD_ROOT/etc/sysconfig/
- mkdir -p $RPM_BUILD_ROOT/mnt/incoming
- mkdir -p $RPM_BUILD_ROOT/mnt/outgoing
- %post
- if [ "$1" != 1 ] ; then
- # do this whole %post thing only when updating for the first time...
- exit 0
- fi
- echo "--> Disabling SELinux..."
- sed -e s/^SELINUX=.*$/SELINUX=disabled/ </etc/selinux/config >/etc/selinux/config.processed
- mv /etc/selinux/config.processed /etc/selinux/config
- setenforce 0
- echo "--> Turning off unnecessary services..."
- # FIXME: perhaps there is more elegant way to do this?
- for f in /etc/init.d/*
- do
- srv=`basename $f`
- [ $srv = 'functions' ] && continue
- [ $srv = 'killall' ] && continue
- [ $srv = 'halt' ] && continue
- chkconfig $srv off
- done
- echo "--> Enabling essential services..."
- chkconfig rsyslog on
- chkconfig haldaemon on
- chkconfig messagebus on
- chkconfig cups on
- chkconfig iptables on
- chkconfig --add qubes_core || echo "WARNING: Cannot add service qubes_core!"
- chkconfig qubes_core on || echo "WARNING: Cannot enable service qubes_core!"
- sed -i s/^id:.:initdefault:/id:3:initdefault:/ /etc/inittab
- # Remove most of the udev scripts to speed up the VM boot time
- # Just leave the xen* scripts, that are needed if this VM was
- # ever used as a net backend (e.g. as a VPN domain in the future)
- echo "--> Removing unnecessary udev scripts..."
- mkdir -p /var/lib/qubes/removed-udev-scripts
- for f in /etc/udev/rules.d/*
- do
- if [ $(basename $f) == "xen-backend.rules" ] ; then
- continue
- fi
- if [ $(basename $f) == "xend.rules" ] ; then
- continue
- fi
- if [ $(basename $f) == "qubes.rules" ] ; then
- continue
- fi
- if [ $(basename $f) == "90-hal.rules" ] ; then
- continue
- fi
- mv $f /var/lib/qubes/removed-udev-scripts/
- done
- mkdir -p /rw
- #rm -f /etc/mtab
- echo "--> Removing HWADDR setting from /etc/sysconfig/network-scripts/ifcfg-eth0"
- mv /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0.orig
- grep -v HWADDR /etc/sysconfig/network-scripts/ifcfg-eth0.orig > /etc/sysconfig/network-scripts/ifcfg-eth0
- %preun
- if [ "$1" = 0 ] ; then
- # no more packages left
- chkconfig qubes_core off
- mv /var/lib/qubes/fstab.orig /etc/fstab
- mv /var/lib/qubes/removed-udev-scripts/* /etc/udev/rules.d/
- fi
- %clean
- rm -rf $RPM_BUILD_ROOT
- %files
- %defattr(-,root,root,-)
- /etc/fstab
- /etc/init.d/qubes_core
- /usr/bin/qvm-copy-to-vm
- /usr/bin/qvm-copy-to-vm.kde
- %{kde_service_dir}/qvm-copy.desktop
- %attr(4755,root,root) /usr/bin/qubes_penctl
- /usr/bin/qubes_add_pendrive_script
- /etc/udev/rules.d/qubes.rules
- /etc/sysconfig/iptables
- %dir /var/lib/qubes
- %dir /mnt/incoming
- %dir /mnt/outgoing
|