diff --git a/archlinux/PKGBUILD b/archlinux/PKGBUILD index d6c5c4b..1dc97bb 100644 --- a/archlinux/PKGBUILD +++ b/archlinux/PKGBUILD @@ -54,8 +54,6 @@ install=PKGBUILD-qubes-vm-kernel-support.install mkdir -p ${pkgdir}/usr/lib/initcpio/install/ mkdir -p ${pkgdir}/usr/lib/initcpio/hooks/ mkdir -p ${pkgdir}/usr/bin/ -ls -la ${pkgdir}/usr/bin -install -m 755 ${srcdir}/PKGBUILD-qubes-prepare-vm-kernel.sh ${pkgdir}/usr/bin/qubes-prepare-vm-kernel install -m 611 ${srcdir}/PKGBUILD-initcpio-install.sh ${pkgdir}/usr/lib/initcpio/install/qubes install -m 611 ${srcdir}/PKGBUILD-initcpio-hook.sh ${pkgdir}/usr/lib/initcpio/hooks/qubes diff --git a/archlinux/PKGBUILD-qubes-prepare-vm-kernel.sh b/archlinux/PKGBUILD-qubes-prepare-vm-kernel.sh deleted file mode 100644 index edabc88..0000000 --- a/archlinux/PKGBUILD-qubes-prepare-vm-kernel.sh +++ /dev/null @@ -1,115 +0,0 @@ - #!/bin/sh -# -# The Qubes OS Project, http://www.qubes-os.org -# -# Copyright (C) 2015 Marek Marczykowski-Górecki -# -# -# 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. -# -# - -set -e - -basedir=/var/lib/qubes/vm-kernels - -function recompile_u2mfn() { - kver=$1 - u2mfn_ver=`dkms status u2mfn|tail -n 1|cut -f 2 -d ' '|tr -d ':,'` - if ! modinfo -k "$kver" -n u2mfn 2>&1 > /dev/null; then - echo "Module u2mfn not available. Checking available source to be built." - u2mfn_ver=`cat /usr/src/u2mfn-*/dkms.conf | grep PACKAGE_VERSION | cut -d "=" -f 2 | tr -d '"' | sort -u | head -n 1` - if [ -z "$u2mfn_ver" ] ; then - echo "No source found for u2mfn. Is qubes-vm-kernel-support installed correctly?" - return 1 - else - echo "Found sources for u2mfn version $u2mfn_ver" - fi - - dkms install u2mfn/$u2mfn_ver -k $kver --no-initrd - fi -} - -function build_modules_img() { - kver=$1 - output_file=$2 - - mkdir /tmp/qubes-modules-$kver - truncate -s 400M /tmp/qubes-modules-$kver.img - mkfs -t ext3 -F /tmp/qubes-modules-$kver.img > /dev/null - mount /tmp/qubes-modules-$kver.img /tmp/qubes-modules-$kver -o loop - cp -a -t /tmp/qubes-modules-$kver /lib/modules/$kver - umount /tmp/qubes-modules-$kver - rmdir /tmp/qubes-modules-$kver - mv /tmp/qubes-modules-$kver.img $output_file -} - -function build_initramfs() { - kver=$1 - output_file=$2 - - /sbin/dracut --nomdadmconf --nolvmconf --force \ - --modules "kernel-modules qubes-vm-simple" \ - --conf /dev/null --confdir /var/empty \ - -d "xenblk xen-blkfront cdrom ext4 jbd2 crc16 dm_snapshot" \ - $output_file $kver - chmod 644 "$output_file" -} - -function build_initcpio() { - kver=$1 - output_file=$2 - - mkinitcpio -k "$kver" -g "$output_file" -A qubes,lvm2 - - chmod 644 "$output_file" -} - -if [ -z "$1" ]; then - echo "Usage: $0 []" >&2 - exit 1 -fi - -if [ ! -d /lib/modules/$1 ]; then - echo "ERROR: Kernel version $1 not installed" >&2 - exit 1 -fi - -kernel_version=$1 - -if [ -n "$2" ]; then - kernel_code="-linux-$2" -else - kernel_code="-linux" -fi - -if [ -n "$3" ]; then - output_dir="$basedir/$3" -else - output_dir="$basedir/$kernel_version" -fi - -echo "--> Building files for $kernel_version in $output_dir" - -echo "---> Recompiling kernel module (u2mfn)" -recompile_u2mfn "$kernel_version" -mkdir -p "$output_dir" -cp "/boot/vmlinuz$kernel_code" "$output_dir/vmlinuz$kernel_code" -echo "---> Generating modules.img" -build_modules_img "$kernel_version" "$output_dir/modules.img" -echo "---> Generating initramfs" -build_initcpio "$kernel_version" "$output_dir/initramfs$kernel_code.img" - -echo "--> Done." diff --git a/archlinux/PKGBUILD-qubes-vm-kernel-support.install b/archlinux/PKGBUILD-qubes-vm-kernel-support.install index 9cf4445..1dd5cfc 100644 --- a/archlinux/PKGBUILD-qubes-vm-kernel-support.install +++ b/archlinux/PKGBUILD-qubes-vm-kernel-support.install @@ -3,11 +3,8 @@ help() { echo "Before using pvgrub, the kernel you want to use needs to be regenerated with Qubes kernel modules in the TemplateVM:" echo "1/ Ensure that your kernel and kernel sources are installed (ex: pacman -S linux-lts linux-lts-headers)" echo "2/ Ensure that grub config file has been generated for your kernel (ex: grub-mkconfig > /boot/grub/grub.cfg)" - echo "3/ Run qubes-prepare-vm-kernel helper to compile Qubes-OS kernel modules and rebuild the initcpio" - echo " Usage: qubes-prepare-vm-kernel [your kernel version - found in /usr/lib/modules] [your kernel name - ex: 'linux' for vanilla kernel 'linux-lts' for long term support kernel]" - echo " Manual generation of initcpio:" - echo " dkms install u2mfn/[u2mfn_version - found in /usr/src/] -k [kernel_version] --no-initrd" - echo " mkinitcpio -k [kernel_version] -p [kernel_name]" + echo "3/ Reinstall qubes-vm-kernel-support to ensure Qubes-OS kernel module is compiled and that the initcpio is rebuilt" + echo "This should then be handled automatically in your next kernel updates" } ## arg 1: the new package version