d931ba237e
This systemd service is not disruptive to the boot process if it fails to mount /lib/modules (because it has been mounted before systemd switched the root directory to the real one). The advantage is that it will boot /usr/lib/modules even if dracut doesn't handle root switch pre-hook, which is the case on archlinux. It then allows booting an archlinux AppVM using an archlinux kernel.
103 lines
3.2 KiB
Bash
103 lines
3.2 KiB
Bash
# This is an example PKGBUILD file. Use this as a start to creating your own,
|
|
# and remove these comments. For more information, see 'man PKGBUILD'.
|
|
# NOTE: Please fill out the license field for your package! If it is unknown,
|
|
# then please put 'unknown'.
|
|
|
|
# Maintainer: Olivier Medoc <o_medoc@yahoo.fr>
|
|
pkgname=qubes-vm-core
|
|
pkgver=`cat version`
|
|
pkgrel=17
|
|
epoch=
|
|
pkgdesc="The Qubes core files for installation inside a Qubes VM."
|
|
arch=("x86_64")
|
|
url="http://qubes-os.org/"
|
|
license=('GPL')
|
|
groups=()
|
|
depends=(qubes-libvchan qubes-vm-utils)
|
|
makedepends=(qubes-vm-utils)
|
|
checkdepends=()
|
|
optdepends=()
|
|
provides=()
|
|
conflicts=()
|
|
replaces=()
|
|
backup=()
|
|
options=()
|
|
install=PKGBUILD.install
|
|
changelog=
|
|
|
|
source=(PKGBUILD.qubes-ensure-lib-modules.service)
|
|
|
|
noextract=()
|
|
md5sums=('88f4b3d5b156888a9d38f5bc28702ab8') #generate with 'makepkg -g'
|
|
|
|
|
|
build() {
|
|
|
|
for source in qubes-rpc qrexec misc Makefile vm-init.d vm-systemd network ; do
|
|
(ln -s $srcdir/../$source $srcdir/$source)
|
|
done
|
|
|
|
# Fix for building with python2
|
|
export PYTHON=python2
|
|
sed 's:python:python2:g' -i misc/Makefile
|
|
|
|
# Fix for network tools paths
|
|
sed 's:/sbin/ifconfig:ifconfig:g' -i network/*
|
|
sed 's:/sbin/route:route:g' -i network/*
|
|
sed 's:/sbin/ethtool:ethtool:g' -i network/*
|
|
sed 's:/sbin/ip:ip:g' -i network/*
|
|
sed 's:/bin/grep:grep:g' -i network/*
|
|
|
|
# Fix for archlinux sbindir
|
|
sed 's:/usr/sbin/ntpdate:/usr/bin/ntpdate:g' -i qubes-rpc/sync-ntp-clock
|
|
sed 's:/usr/sbin/qubes-netwatcher:/usr/bin/qubes-netwatcher:g' -i vm-systemd/qubes-netwatcher.service
|
|
sed 's:/usr/sbin/qubes-firewall:/usr/bin/qubes-firewall:g' -i vm-systemd/qubes-firewall.service
|
|
|
|
for dir in qubes-rpc qrexec misc; do
|
|
(cd $dir; make)
|
|
done
|
|
|
|
}
|
|
|
|
package() {
|
|
# Note: Archlinux removed use of directory such as /sbin /bin /usr/sbin (https://mailman.archlinux.org/pipermail/arch-dev-public/2012-March/022625.html)
|
|
|
|
(cd qrexec; make install DESTDIR=$pkgdir SBINDIR=/usr/bin)
|
|
|
|
make install-vm DESTDIR=$pkgdir SBINDIR=/usr/bin DIST=archlinux
|
|
|
|
# Convert module loading to ARCHLINUX
|
|
mkdir -p $pkgdir/etc/modules-load.d/
|
|
|
|
#misc/qubes-core.modules
|
|
echo xen-evtchn > $pkgdir/etc/modules-load.d/qubes_core.conf
|
|
echo xen-blkback >> $pkgdir/etc/modules-load.d/qubes_core.conf
|
|
# Note : need to compile pvusb drivers for this last one?
|
|
echo xen-usbfront >> $pkgdir/etc/modules-load.d/qubes_core.conf
|
|
|
|
#misc/qubes-misc.modules
|
|
#install -D misc/qubes_misc.modules $pkgdir/etc/sysconfig/modules/qubes_misc.modules
|
|
echo dummy-hcd > $pkgdir/etc/modules-load.d/qubes_misc.conf
|
|
|
|
# Change the place for iptable rules to match archlinux standard
|
|
mkdir -p $pkgdir/etc/iptables
|
|
mv $pkgdir/etc/sysconfig/iptables $pkgdir/etc/iptables/iptables.rules
|
|
mv $pkgdir/etc/sysconfig/ip6tables $pkgdir/etc/iptables/ip6tables.rules
|
|
|
|
# Note: appears in the gui package but required for qrexec agent to work
|
|
echo u2mfn > $pkgdir/etc/modules-load.d/qubes_u2mfn.conf
|
|
|
|
# Remove things non wanted in archlinux
|
|
rm -r $pkgdir/etc/yum*
|
|
rm -r $pkgdir/etc/init.d
|
|
# Remove fedora specific scripts
|
|
rm $pkgdir/etc/fstab
|
|
|
|
# Install systemd script allowing to automount /lib/modules
|
|
install -m 644 $srcdir/PKGBUILD.qubes-ensure-lib-modules.service $pkgdir/lib/systemd/system/qubes-ensure-lib-modules.service
|
|
|
|
}
|
|
|
|
# vim:set ts=2 sw=2 et:
|
|
|