diff --git a/.gitignore b/.gitignore index 569b96e..573534c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ *~ -base_rpms -keys appmenus build_timestamp_* +cache_* +mnt_* +*.iso +*.fs diff --git a/Makefile b/Makefile index c23d145..bfdc67d 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ ifndef DIST $(error "You must set DIST variable, e.g. DIST=fc14") endif +#TODO: build template name somehow smarter TEMPLATE_NAME := $${DIST/fc/fedora-}-x64 VERSION := $(shell cat version) TIMESTAMP := $(shell date -u +%Y%m%d%H%M) @@ -17,9 +18,8 @@ help: rpms: @echo $(TIMESTAMP) > build_timestamp_$(DIST) @echo "Building template: $(TEMPLATE_NAME)" - @createrepo -q -g $$PWD/comps-qubes-template.xml yum_repo_qubes/$(DIST) -o yum_repo_qubes/$(DIST) && \ - sudo -E ./fedorize_image fedorized_images/$(TEMPLATE_NAME).img $(PKGLISTFILE) && \ - sudo -E ./qubeize_image fedorized_images/$(TEMPLATE_NAME).img $(TEMPLATE_NAME) && \ + sudo -E ./prepare_image prepared_images/$(TEMPLATE_NAME).img && \ + sudo -E ./qubeize_image prepared_images/$(TEMPLATE_NAME).img $(TEMPLATE_NAME) && \ ./build_template_rpm $(TEMPLATE_NAME) || exit 1; \ update-repo-installer: @@ -35,7 +35,7 @@ clean: sudo rm -fr qubeized_images/$(TEMPLATE_NAME)* sudo rm -fr rpmbuild/BUILDROOT/* sudo rm -fr rpmbuild/tmp/* - # We're not removing any images from fedorized_images/ intentionally + # We're not removing any images from prepared_images/ intentionally # because the user might want to keep using the same image for a long time - # and they are not dependent on any of the Qubes packahes + # and they are not dependent on any of the Qubes packages diff --git a/build_template_rpm b/build_template_rpm index c98a1c9..d17e75b 100755 --- a/build_template_rpm +++ b/build_template_rpm @@ -6,9 +6,13 @@ echo "usage $0 " exit 1 fi +. ./builder_setup + rpmbuild --target noarch \ --define "template_name $NAME" \ --define "DIST $DIST" \ + --define "DISTRIBUTION $DISTRIBUTION" \ + --define "VERSION $VERSION" \ --define "_topdir $PWD/rpmbuild" \ --define "_tmppath $PWD/rpmbuild/tmp" \ -bb templates.spec diff --git a/builder_setup b/builder_setup new file mode 100644 index 0000000..07128eb --- /dev/null +++ b/builder_setup @@ -0,0 +1,24 @@ +#!/bin/bash + +# Setup env variables + +case "$DIST" in + fc*) + DISTRIBUTION=fedora + VERSION=${DIST/fc/} + ;; + *) + DISTRIBUTION="$DIST" + VERSION= + ;; +esac + +if [ -d "scripts_$DIST" ]; then + SCRIPTSDIR="scripts_$DIST" +else + SCRIPTSDIR="scripts_$DISTRIBUTION" +fi + +CACHEDIR=cache_$DIST + +export SCRIPTSDIR CACHEDIR diff --git a/cleanup_image b/cleanup_image index cae3612..522d9d4 100755 --- a/cleanup_image +++ b/cleanup_image @@ -1,6 +1,8 @@ #!/bin/sh -IMG=$1 +export IMG=$1 + +. ./builder_setup set -e @@ -16,13 +18,9 @@ if ! [ -f $IMG ]; then fi ls -als $IMG mount -o loop $IMG mnt || exit 1 -INSTALLDIR=`pwd`/mnt/ -rm -f $INSTALLDIR/var/lib/rpm/__db.00* $INSTALLDIR/var/lib/rpm/.rpm.lock -yum -c $PWD/yum.conf $YUM_OPTS clean packages --installroot=$INSTALLDIR +export INSTALLDIR=`pwd`/mnt/ -# Make sure that rpm database has right format (for rpm version in template, not host) -echo "--> Rebuilding rpm database..." -chroot `pwd`/mnt /bin/rpm --rebuilddb 2> /dev/null +$SCRIPTSDIR/09_cleanup.sh echo "--> Compacting image file..." dd if=/dev/zero of=mnt/fillme bs=1M > /dev/null 2>&1 || true diff --git a/fedorize_image b/fedorize_image deleted file mode 100755 index 72bc33c..0000000 --- a/fedorize_image +++ /dev/null @@ -1,64 +0,0 @@ -#!/bin/sh - -IMG=$1 -PKGLISTFILE=$2 - -RETCODE=0 - -: ${DIST=fc14} - -if ! [ $# -eq 2 ]; then -echo "usage $0 " -exit -fi - -if [ "$VERBOSE" == "1" ]; then - YUM_OPTS="$YUM_OPTS -q" -fi - -if [ -f $IMG ]; then - echo "-> Image file already exists, assuming *update*..." - mount -o loop $IMG mnt || exit 1 - INSTALLDIR=`pwd`/mnt/ -else - - echo "-> Preparing instalation of $DIST template..." - rm -f keys base_rpms - ln -sf keys_$DIST keys - ln -sf base_rpms_$DIST base_rpms - - echo "-> Initializing empty image..." - truncate -s 10G $IMG || exit 1 - - echo "-> Creating filesystem..." - mkfs.ext4 -q -F $IMG || exit 1 - - mkdir -p mnt - mount -o loop $IMG mnt || exit 1 - - INSTALLDIR=`pwd`/mnt/ - - echo "-> Initializing RPM database..." - rpm --initdb --root=$INSTALLDIR - rpm --import --root=$INSTALLDIR keys/* - - echo "-> Installing core RPM packages..." - rpm -i --root=$INSTALLDIR base_rpms/*.rpm || exit 1 - - cp clean_images/network $INSTALLDIR/etc/sysconfig - cp clean_images/resolv.conf $INSTALLDIR/etc - cp -a /dev/null /dev/zero /dev/random /dev/urandom $INSTALLDIR/dev/ - -fi - -mount -t proc proc mnt/proc -PKGGROUPS=$(cat $PKGLISTFILE) -export YUM0=$PWD/yum_repo_qubes -echo "-> Installing package groups..." -yum clean all -c $PWD/yum.conf $YUM_OPTS -y --installroot=$PWD/mnt -yum install -c $PWD/yum.conf $YUM_OPTS -y --installroot=$INSTALLDIR $PKGGROUPS || RETCODE=1 -yum update -c $PWD/yum.conf $YUM_OPTS -y --installroot=$INSTALLDIR || RETCODE=1 - -umount mnt/proc mnt - -exit $RETCODE diff --git a/prepare_image b/prepare_image new file mode 100755 index 0000000..facf2e5 --- /dev/null +++ b/prepare_image @@ -0,0 +1,51 @@ +#!/bin/sh + +export IMG=$1 + +RETCODE=0 + +: ${DIST=fc14} + +. ./builder_setup + +set -e + +if ! [ $# -eq 1 ]; then +echo "usage $0 " +exit +fi + +if [ "$VERBOSE" == "1" ]; then + export YUM_OPTS="$YUM_OPTS -q" +fi + +echo "-> Preparing instalation of $DIST template..." +$SCRIPTSDIR/00_prepare.sh + +if [ -f $IMG ]; then + echo "-> Image file already exists, assuming *update*..." + mount -o loop $IMG mnt || exit 1 + export INSTALLDIR=`pwd`/mnt/ +else + + echo "-> Initializing empty image..." + truncate -s 10G $IMG || exit 1 + + echo "-> Creating filesystem..." + mkfs.ext4 -q -F $IMG || exit 1 + + mkdir -p mnt + mount -o loop $IMG mnt || exit 1 + + export INSTALLDIR=`pwd`/mnt/ + + $SCRIPTSDIR/01_install_core.sh +fi + +echo "-> Installing package groups..." +$SCRIPTSDIR/02_install_groups.sh + +echo "-> Unmounting prepared_image..." +sudo umount $INSTALLDIR + +exit $RETCODE diff --git a/fedorized_images/.gitignore b/prepared_images/.gitignore similarity index 100% rename from fedorized_images/.gitignore rename to prepared_images/.gitignore diff --git a/qubeize_image b/qubeize_image index e7fcc9f..b19b308 100755 --- a/qubeize_image +++ b/qubeize_image @@ -1,7 +1,9 @@ #!/bin/sh -CLEANIMG=$1 -NAME=$2 +export CLEANIMG=$1 +export NAME=$2 + +. ./builder_setup set -e @@ -23,23 +25,23 @@ fi ID=$(id -ur) if [ $ID != 0 ] ; then - echo "This script should be run as root user." - exit 1 + echo "This script should be run as root user." + exit 1 fi if [ "$VERBOSE" == "1" ]; then - export YUM_OPTS="$YUM_OPTS -q" + export YUM_OPTS="$YUM_OPTS -q" fi function cleanup() { - if grep -q " $PWD/mnt " /proc/mounts; then - umount mnt/proc mnt - fi + if grep -q " $PWD/mnt " /proc/mounts; then + umount mnt/proc mnt + fi } trap cleanup ERR -IMG=qubeized_images/$NAME-root.img +export IMG=qubeized_images/$NAME-root.img echo "--> Copying $CLEANIMG to $IMG..." cp $CLEANIMG $IMG || exit 1 @@ -47,18 +49,13 @@ echo "--> Mouting $IMG" mkdir -p mnt mount -o loop $IMG mnt || exit 1 -mount -t proc proc mnt/proc - -echo "--> Installing RPMs..." -export YUM0=$PWD/yum_repo_qubes -yum install -c $PWD/yum.conf $YUM_OPTS -y --installroot=$(pwd)/mnt @qubes-vm +export INSTALLDIR=mnt -echo "--> Installing 3rd party apps" -./add_3rd_party_software.sh +$SCRIPTSDIR/04_install_qubes.sh echo "--> Copying the Apps Menu shortcuts..." -APPSORIG=qubeized_images/$NAME-apps.orig -APPSTEMPL=qubeized_images/$NAME-apps.templates +export APPSORIG=qubeized_images/$NAME-apps.orig +export APPSTEMPL=qubeized_images/$NAME-apps.templates mkdir -p $APPSORIG cp -r $(pwd)/mnt/usr/share/applications/* $APPSORIG @@ -68,9 +65,9 @@ echo "--> Creating the Apps Menu templates..." echo "--> Choosing appmenus whitelists..." rm -f appmenus if [ -d "appmenus_$DIST" ]; then - ln -s "appmenus_$DIST" appmenus + ln -s "appmenus_$DIST" appmenus else - ln -s "appmenus_generic" appmenus + ln -s "appmenus_generic" appmenus fi echo "--> Linking /home to /rw/home..." @@ -82,12 +79,12 @@ mv mnt/usr/local mnt/usr/local.orig ln -sf /rw/usrlocal mnt/usr/local if ! [ -r mnt/etc/sysconfig/i18n ]; then - echo "--> Setting up default locale..." - echo LC_CTYPE=en_US.UTF-8 > mnt/etc/sysconfig/i18n + echo "--> Setting up default locale..." + echo LC_CTYPE=en_US.UTF-8 > mnt/etc/sysconfig/i18n fi echo "--> Unmounting $IMG" -umount mnt/proc mnt +umount mnt echo "Qubeized image stored at: $IMG" diff --git a/scripts_archlinux/00_prepare.sh b/scripts_archlinux/00_prepare.sh new file mode 100755 index 0000000..f8107f8 --- /dev/null +++ b/scripts_archlinux/00_prepare.sh @@ -0,0 +1,24 @@ +#!/bin/sh +ISO_VERSION=2013.02.01 + +mkdir -p $CACHEDIR + +echo "Downloading Archlinux dvd..." +wget -N -P $CACHEDIR "http://mir.archlinux.fr/iso/$ISO_VERSION/archlinux-$ISO_VERSION-dual.iso" + +echo "Verifying dvd..." +gpg --import "$SCRIPTSDIR/archlinux-master-keys.asc" + +gpg --verify "$SCRIPTSDIR/archlinux-$ISO_VERSION-dual.iso.sig" "$CACHEDIR/archlinux-$ISO_VERSION-dual.iso" || exit + +if [ "$CACHEDIR/archlinux-$ISO_VERSION-dual.iso" -nt $CACHEDIR/root-image.fs ]; then + echo "Extracting squash filesystem from DVD..." + mkdir mnt_archlinux_dvd + sudo mount -o loop "$CACHEDIR/archlinux-$ISO_VERSION-dual.iso" mnt_archlinux_dvd + cp mnt_archlinux_dvd/arch/x86_64/root-image.fs.sfs $CACHEDIR/ + sudo umount mnt_archlinux_dvd + sudo mount -o loop $CACHEDIR/root-image.fs.sfs mnt_archlinux_dvd + cp mnt_archlinux_dvd/root-image.fs $CACHEDIR/ + sudo umount mnt_archlinux_dvd + rm $CACHEDIR/root-image.fs.sfs +fi diff --git a/scripts_archlinux/01_install_core.sh b/scripts_archlinux/01_install_core.sh new file mode 100755 index 0000000..ec75d35 --- /dev/null +++ b/scripts_archlinux/01_install_core.sh @@ -0,0 +1,26 @@ +#!/bin/sh + +set -e + +echo "Mounting archlinux install system into mnt_archlinux_dvd..." +mkdir -p mnt_archlinux_dvd +sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd + +echo "Creating chroot bootstrap environment" + +sudo mount --bind $INSTALLDIR mnt_archlinux_dvd/mnt +sudo cp /etc/resolv.conf mnt_archlinux_dvd/etc + +echo "-> Initializing pacman keychain" +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot mnt_archlinux_dvd/ pacman-key --init +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot mnt_archlinux_dvd/ pacman-key --populate + +echo "-> Installing core pacman packages..." +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot mnt_archlinux_dvd/ sh -c 'pacstrap /mnt base' + +echo "-> Cleaning up bootstrap environment" +sudo umount mnt_archlinux_dvd/mnt + +sudo umount mnt_archlinux_dvd + +cp $SCRIPTSDIR/resolv.conf $INSTALLDIR/etc diff --git a/scripts_archlinux/02_install_groups.sh b/scripts_archlinux/02_install_groups.sh new file mode 100755 index 0000000..2d82028 --- /dev/null +++ b/scripts_archlinux/02_install_groups.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +set -e + +echo "Mounting archlinux install system into mnt_archlinux_dvd..." +sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd + +PKGGROUPS=`cat $SCRIPTSDIR/packages.list` + +echo "-> Installing archlinux package groups..." +echo "-> Selected packages:" +echo "$PKGGROUPS" +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --needed --noconfirm -S $PKGGROUPS + +sudo umount mnt_archlinux_dvd diff --git a/scripts_archlinux/04_install_qubes.sh b/scripts_archlinux/04_install_qubes.sh new file mode 100755 index 0000000..a6ffaeb --- /dev/null +++ b/scripts_archlinux/04_install_qubes.sh @@ -0,0 +1,44 @@ +#!/bin/sh + +set -e + +echo "Mounting archlinux install system into mnt_archlinux_dvd..." +mkdir -p mnt_archlinux_dvd +sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd + +# Note: Enable x86 repos +su -c "echo '[multilib]' >> $INSTALLDIR/etc/pacman.conf" +su -c "echo 'SigLevel = PackageRequired' >> $INSTALLDIR/etc/pacman.conf" +su -c "echo 'Include = /etc/pacman.d/mirrorlist' >> $INSTALLDIR/etc/pacman.conf" + +echo "--> Registering Qubes custom repository" + +sudo tee -a $INSTALLDIR/etc/pacman.conf < Installing qubes-packages..." +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c "pacman -S --noconfirm qubes-vm-xen" +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c "pacman -S --noconfirm qubes-vm-core" +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR sh -c "pacman -S --noconfirm qubes-vm-gui" + +echo "--> Updating template fstab file..." +sudo su -c "echo '/dev/mapper/dmroot / ext4 defaults,noatime 1 1' >> $INSTALLDIR/etc/fstab" +sudo su -c "echo '/dev/xvdb /rw ext4 defaults,noatime 1 2' >> $INSTALLDIR/etc/fstab" +sudo su -c "echo '/dev/xvdc1 swap swap defaults 0 0' >> $INSTALLDIR/etc/fstab" +sudo su -c "echo '/rw/home /home none noauto,bind,defaults 0 0' >> $INSTALLDIR/etc/fstab" +sudo su -c "echo '/dev/xvdd /usr/lib/modules ext3 defaults,noatime 0 0' >> $INSTALLDIR/etc/fstab" + +echo "--> Cleaning up..." +sudo umount $INSTALLDIR/mnt/qubes-rpms-mirror-repo +sudo umount mnt_archlinux_dvd diff --git a/scripts_archlinux/09_cleanup.sh b/scripts_archlinux/09_cleanup.sh new file mode 100755 index 0000000..a2e56c5 --- /dev/null +++ b/scripts_archlinux/09_cleanup.sh @@ -0,0 +1,31 @@ +#!/bin/sh + +set -e + +echo "Mounting archlinux install system into mnt_archlinux_dvd..." +sudo mount $CACHEDIR/root-image.fs mnt_archlinux_dvd + +echo "--> Starting cleanup actions" +# Remove unused packages and their dependencies (make dependencies) +cleanuppkgs=`sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman -Qdt | cut -d " " -f 1` +echo "--> Packages that can be cleaned up: $cleanuppkgs" +if [ -n "$cleanuppkgs" ] ; then + sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -Rsc $cleanuppkgs +fi + +# Remove non required linux kernel +echo "--> Cleaning up linux kernel" +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -Rsc linux +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -S linux-firmware + +# Clean pacman cache +sudo ./mnt_archlinux_dvd/usr/bin/arch-chroot $INSTALLDIR pacman --noconfirm -Scc + +sudo umount mnt_archlinux_dvd + +#rm -f $INSTALLDIR/var/lib/rpm/__db.00* $INSTALLDIR/var/lib/rpm/.rpm.lock +#yum -c $PWD/yum.conf $YUM_OPTS clean packages --installroot=$INSTALLDIR + +# Make sure that rpm database has right format (for rpm version in template, not host) +#echo "--> Rebuilding rpm database..." +#chroot `pwd`/mnt /bin/rpm --rebuilddb 2> /dev/null diff --git a/scripts_archlinux/archlinux-2013.02.01-dual.iso.sig b/scripts_archlinux/archlinux-2013.02.01-dual.iso.sig new file mode 100644 index 0000000..d8d53e6 Binary files /dev/null and b/scripts_archlinux/archlinux-2013.02.01-dual.iso.sig differ diff --git a/scripts_archlinux/archlinux-master-keys.asc b/scripts_archlinux/archlinux-master-keys.asc new file mode 100644 index 0000000..f5a976a --- /dev/null +++ b/scripts_archlinux/archlinux-master-keys.asc @@ -0,0 +1,411 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1.4.13 (GNU/Linux) + +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 +OP4OxbDk+sFwmPm1eZ7qwWoguTTmhHBq8u1qCQ+GMUY9BUS7gTxmOVfIM1ieZ+GD +rLrAK+sPKUuIypJR7p2yrH5FPsYTrUpTnA4e0OkFZ8uwk+m723VE00SsX6k2+K4k +MloWiALRvwFBEiXalOjQ8JJZ5Qom/eudwxGLtwoQn+g0lD5FppMPILTIGz9hPp9N +Y1qXvVh4XOixwBW6wnYzQ/k/7eHgx0HP/N3iTkdnFxF+i4+BPnkfyP6oCFQwx34V +KqO0aJPQecl0TU8MWIOg3RoYG+7lW4keY356iQE1icm8N/1TVJgvPTi7qNLH1MKo +V3FB0o0exwGVWvXlwfOpp9dAz36hil7fdVjkdzfncfiTbK0l0h3zv4SA08bg0WwY +X6h6uJ2DrEByb8H66KdqctrvBJrqeIPDhHtGQgMs/HY2MlGF+2VXls+5njcYGWGz +5DxTas1c+amVpD/7PbpTuT/Xa8EF3Bv6kn193eJwLTdFXQop/n+Z+MOYnIa2oof5 +kDhkBn75MUMckZFOFzuq0cMfZ6B48BTboK8ZJJ7QSDWUSqIzeljmaALD1njCisIV +YCzquW0BmPQhV9tmq7hdj4nwPmLOrra2g+f2VwqF30QFBadvtIS1jz8uiQIcBBAB +AgAGBQJOwE4IAAoJEChPw0yOSxol1y4QAIzLUT1v6Ot9m2SyDOXMc6Qk2/e0at1j +plSeG9dczC6nAlLufr3uOP4OxbDk+sFwmPm1eZ7qwWoguTTmhHBq8u1qCQ+GMUY9 +BUS7gTxmOVfIM1ieZ+GDrLrAK+sPKUuIypJR7p2yrH5FPsYTrUpTnA4e0OkFZ8uw +k+m723VE00SsX6k2+K4kMloWiALRvwFBEiXalOjQ8JJZ5Qom/eudwxGLtwoQn+g0 +lD5FppMPILTIG/////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////// +////////////iQIcBBABAgAGBQJO3LhzAAoJELod+2T/+XnnaQgQALWwLfHCi/9Q +FLHXgQ5+QYnpoJoxvsgC0iosmgjmB1MMXK+rwMqAZtgr3cajBJ+XNq7XZriFliFV +4oXHiFdR3zjjuvvIJhYn51079YKhZV2tQqZt9NO+rvns2fMwx2iXMou1+g7byOUp +inIkNXtTi3i3HxX+4nKjL3Hk42Qdf+wRFLSl3+DpIx9qrB5ReL8XYhMvlCodjNWP +UNi3LcsLEl47+m4qBSBmQb0mvy1oobaNLXT8+0cT5UHQAqQkB1LIWcC8Hek0iJ4o +TjwpmU/36NH71fif6ypDWU28pbuRxHvXjrYuSi4C++110ShQdTEMe2wt9MpRIkp3 +0aIfWUCq6uCmUR5DO8QJM3CPtwlpEzXIXojp4ALfKOYx5xg1UOGxILErCE4O4EYz +QM7pLBqFvMg3rdEu7vrnRrilzHZVWPeeXbJG+uzYbhicydh4UULF2Hz6L/vMEJ/i +rxdELV/h8fykJKE5wFigxZL1VgmWMIAISGZ+N4Npr19u1UmT3GyM4q+ImLOubWHU +3VqVGs5alZQWZvi72sYEKUBqUY7/wfIvFPdXJ4BCPJZqxSCuLy5mpLEeaGpnhFSB +gZHzBwwPyvl3Zc9P21rJD0p8NbMp+shCteWfadMnmBfLGkHUhP6rGZk7g2cjuFas +Tndpuv8+lS9NipNt6uejrg/G+NWFAEH5uQENBE2heeUBCADDxPCizcrOhH12RbIk +8enSsrbATbQnSgpU3DHF76j2gVItsBzpfjYgQCeD5KasXuFmFFph2pY73qCuoDQx +FTo4gJNZt90/oV7C/vPEwMY5MkHdK2bB3BlZznshkpHNmWRBKvCrHJ09jZxmCICe +NymhMyAYBGWM7MTCzEsKk9CuplxF5QApCbWwtlZVpgxra90MzBVlQT+ErXiLlXt8 +RG673RlGeFpOdxWK4USbr1AvqYxMV6Y4s/mKpcAJQBdL5IeRT8BnaG5mVjS0UgN8 +MeN6c+NlvfnFBZF9XFZXfFJ1QrDaneyT181guKB4apxmvtyXxD9OYdW/EXGbGpdb +F3OxABEBAAGJAR8EGAECAAkFAk2heeUCGwwACgkQfy1DS5dB6Ky85gf9HtPMsnJI +qizJd5s2oRkpYxPiyLKpq+0lH2R+yPo1Qyt7zpR1SV8iSVDaTiaxfF4BwZQz0Qt0 +FnIprzWuIw2FjElE/tVFH+Fw9SW5t31ly+v/jXa+iGcMXIblDX5I0gqffXVJRGzZ +zPQDV0Yv4zyP/2Hsv0F250N2N8/cZqPaX5J0dKrOhDmi5yc5WoYJzzZVzXRuXwzC +ncn0ymZteOGwcaW4kmaTQPb33idmTE89pXnskgQFpftAdvPw9Qf/zjVhTtFX95wt +oNPcYOtMIARp/OejazBHaRW+NIWyCvj78MRoy9s0TOAzwcyOCWpjzHuPvslg/U0H +ErbDGhNsa8/dnA== +=TmI0 +-----END PGP PUBLIC KEY BLOCK----- diff --git a/clean_images/clean-volatile.img.tar b/scripts_archlinux/clean-volatile.img.tar similarity index 100% rename from clean_images/clean-volatile.img.tar rename to scripts_archlinux/clean-volatile.img.tar diff --git a/clean_images/network b/scripts_archlinux/network similarity index 100% rename from clean_images/network rename to scripts_archlinux/network diff --git a/scripts_archlinux/packages.list b/scripts_archlinux/packages.list new file mode 100644 index 0000000..dda045a --- /dev/null +++ b/scripts_archlinux/packages.list @@ -0,0 +1,18 @@ +xorg +xterm +python2 +artwiz-fonts +ethtool +font-bitstream-speedo +jdk7-openjdk +leafpad +net-tools +sudo +ttf-dejavu +ttf-freefont +wget +zsh +xfce4-terminal +networkmanager +network-manager-applet +linux-firmware diff --git a/clean_images/part.bin b/scripts_archlinux/part.bin similarity index 100% rename from clean_images/part.bin rename to scripts_archlinux/part.bin diff --git a/clean_images/resolv.conf b/scripts_archlinux/resolv.conf similarity index 100% rename from clean_images/resolv.conf rename to scripts_archlinux/resolv.conf diff --git a/scripts_fedora/.gitignore b/scripts_fedora/.gitignore new file mode 100644 index 0000000..da1ecb8 --- /dev/null +++ b/scripts_fedora/.gitignore @@ -0,0 +1,2 @@ +keys +base_rpms diff --git a/scripts_fedora/00_prepare.sh b/scripts_fedora/00_prepare.sh new file mode 100755 index 0000000..a351ebf --- /dev/null +++ b/scripts_fedora/00_prepare.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +pushd $SCRIPTSDIR +rm -f keys base_rpms +ln -sf keys_$DIST keys +ln -sf base_rpms_$DIST base_rpms +popd + +createrepo -q -g $PWD/comps-qubes-template.xml yum_repo_qubes/$DIST -o yum_repo_qubes/$DIST diff --git a/scripts_fedora/01_install_core.sh b/scripts_fedora/01_install_core.sh new file mode 100755 index 0000000..fb00e71 --- /dev/null +++ b/scripts_fedora/01_install_core.sh @@ -0,0 +1,12 @@ +#!/bin/sh + +echo "-> Initializing RPM database..." +rpm --initdb --root=$INSTALLDIR +rpm --import --root=$INSTALLDIR $SCRIPTSDIR/keys/* + +echo "-> Installing core RPM packages..." +rpm -i --root=$INSTALLDIR $SCRIPTSDIR/base_rpms/*.rpm || exit 1 + +cp $SCRIPTSDIR/resolv.conf $INSTALLDIR/etc +cp $SCRIPTSDIR/network $INSTALLDIR/etc/sysconfig +cp -a /dev/null /dev/zero /dev/random /dev/urandom $INSTALLDIR/dev/ diff --git a/scripts_fedora/02_install_groups.sh b/scripts_fedora/02_install_groups.sh new file mode 100755 index 0000000..668c6fc --- /dev/null +++ b/scripts_fedora/02_install_groups.sh @@ -0,0 +1,17 @@ +#!/bin/sh +echo "--> Preparing environment..." +mount -t proc proc mnt/proc + +if [ -r "$SCRIPTSDIR/packages_${DIST}.list" ]; then + PKGLISTFILE="$SCRIPTSDIR/packages_${DIST}.list" +else + PKGLISTFILE="$SCRIPTSDIR/packages.list" +fi +export PKGGROUPS=$(cat $PKGLISTFILE) + +export YUM0=$PWD/yum_repo_qubes +yum clean all -c $PWD/yum.conf $YUM_OPTS -y --installroot=$PWD/mnt +yum install -c $PWD/yum.conf $YUM_OPTS -y --installroot=$INSTALLDIR $PKGGROUPS || RETCODE=1 +yum update -c $PWD/yum.conf $YUM_OPTS -y --installroot=$INSTALLDIR || RETCODE=1 + +umount mnt/proc diff --git a/scripts_fedora/04_install_qubes.sh b/scripts_fedora/04_install_qubes.sh new file mode 100755 index 0000000..fdf29a5 --- /dev/null +++ b/scripts_fedora/04_install_qubes.sh @@ -0,0 +1,12 @@ +#!/bin/sh +echo "--> Preparing environment..." +mount -t proc proc $PWD/mnt/proc + +echo "--> Installing RPMs..." +export YUM0=$PWD/yum_repo_qubes +yum install -c $PWD/yum.conf $YUM_OPTS -y --installroot=$(pwd)/mnt @qubes-vm + +echo "--> Installing 3rd party apps" +$SCRIPTSDIR/add_3rd_party_software.sh + +sudo umount $PWD/mnt/proc diff --git a/scripts_fedora/09_cleanup.sh b/scripts_fedora/09_cleanup.sh new file mode 100755 index 0000000..bf60eec --- /dev/null +++ b/scripts_fedora/09_cleanup.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +rm -f $INSTALLDIR/var/lib/rpm/__db.00* $INSTALLDIR/var/lib/rpm/.rpm.lock +yum -c $PWD/yum.conf $YUM_OPTS clean packages --installroot=$INSTALLDIR + +# Make sure that rpm database has right format (for rpm version in template, not host) +echo "--> Rebuilding rpm database..." +chroot `pwd`/mnt /bin/rpm --rebuilddb 2> /dev/null diff --git a/3rd_party_software/adobe-release-x86_64-1.0-1.noarch.rpm b/scripts_fedora/3rd_party_software/adobe-release-x86_64-1.0-1.noarch.rpm similarity index 100% rename from 3rd_party_software/adobe-release-x86_64-1.0-1.noarch.rpm rename to scripts_fedora/3rd_party_software/adobe-release-x86_64-1.0-1.noarch.rpm diff --git a/add_3rd_party_software.sh b/scripts_fedora/add_3rd_party_software.sh similarity index 67% rename from add_3rd_party_software.sh rename to scripts_fedora/add_3rd_party_software.sh index b682b5d..712f928 100755 --- a/add_3rd_party_software.sh +++ b/scripts_fedora/add_3rd_party_software.sh @@ -2,6 +2,6 @@ INSTALLDIR=$PWD/mnt -rpm -i --root=$INSTALLDIR 3rd_party_software/adobe-release-x86_64-*.noarch.rpm +rpm -i --root=$INSTALLDIR $SCRIPTSDIR/3rd_party_software/adobe-release-x86_64-*.noarch.rpm rpm --import --root=$INSTALLDIR mnt/etc/pki/rpm-gpg/RPM-GPG-KEY-adobe-linux yum install -c $PWD/yum.conf $YUM_OPTS -y --installroot=$INSTALLDIR flash-plugin diff --git a/base_rpms_fc13/fedora-release-13-1.noarch.rpm b/scripts_fedora/base_rpms_fc13/fedora-release-13-1.noarch.rpm similarity index 100% rename from base_rpms_fc13/fedora-release-13-1.noarch.rpm rename to scripts_fedora/base_rpms_fc13/fedora-release-13-1.noarch.rpm diff --git a/base_rpms_fc13/filesystem-2.4.31-1.fc13.x86_64.rpm b/scripts_fedora/base_rpms_fc13/filesystem-2.4.31-1.fc13.x86_64.rpm similarity index 100% rename from base_rpms_fc13/filesystem-2.4.31-1.fc13.x86_64.rpm rename to scripts_fedora/base_rpms_fc13/filesystem-2.4.31-1.fc13.x86_64.rpm diff --git a/base_rpms_fc13/setup-2.8.17-1.fc13.noarch.rpm b/scripts_fedora/base_rpms_fc13/setup-2.8.17-1.fc13.noarch.rpm similarity index 100% rename from base_rpms_fc13/setup-2.8.17-1.fc13.noarch.rpm rename to scripts_fedora/base_rpms_fc13/setup-2.8.17-1.fc13.noarch.rpm diff --git a/base_rpms_fc14/fedora-release-14-1.noarch.rpm b/scripts_fedora/base_rpms_fc14/fedora-release-14-1.noarch.rpm similarity index 100% rename from base_rpms_fc14/fedora-release-14-1.noarch.rpm rename to scripts_fedora/base_rpms_fc14/fedora-release-14-1.noarch.rpm diff --git a/base_rpms_fc14/filesystem-2.4.35-1.fc14.x86_64.rpm b/scripts_fedora/base_rpms_fc14/filesystem-2.4.35-1.fc14.x86_64.rpm similarity index 100% rename from base_rpms_fc14/filesystem-2.4.35-1.fc14.x86_64.rpm rename to scripts_fedora/base_rpms_fc14/filesystem-2.4.35-1.fc14.x86_64.rpm diff --git a/base_rpms_fc14/setup-2.8.23-1.fc14.noarch.rpm b/scripts_fedora/base_rpms_fc14/setup-2.8.23-1.fc14.noarch.rpm similarity index 100% rename from base_rpms_fc14/setup-2.8.23-1.fc14.noarch.rpm rename to scripts_fedora/base_rpms_fc14/setup-2.8.23-1.fc14.noarch.rpm diff --git a/base_rpms_fc15/fedora-release-15-3.noarch.rpm b/scripts_fedora/base_rpms_fc15/fedora-release-15-3.noarch.rpm similarity index 100% rename from base_rpms_fc15/fedora-release-15-3.noarch.rpm rename to scripts_fedora/base_rpms_fc15/fedora-release-15-3.noarch.rpm diff --git a/base_rpms_fc15/filesystem-2.4.41-1.fc15.x86_64.rpm b/scripts_fedora/base_rpms_fc15/filesystem-2.4.41-1.fc15.x86_64.rpm similarity index 100% rename from base_rpms_fc15/filesystem-2.4.41-1.fc15.x86_64.rpm rename to scripts_fedora/base_rpms_fc15/filesystem-2.4.41-1.fc15.x86_64.rpm diff --git a/base_rpms_fc15/setup-2.8.31-2.fc15.noarch.rpm b/scripts_fedora/base_rpms_fc15/setup-2.8.31-2.fc15.noarch.rpm similarity index 100% rename from base_rpms_fc15/setup-2.8.31-2.fc15.noarch.rpm rename to scripts_fedora/base_rpms_fc15/setup-2.8.31-2.fc15.noarch.rpm diff --git a/base_rpms_fc16/fedora-release-16-1.noarch.rpm b/scripts_fedora/base_rpms_fc16/fedora-release-16-1.noarch.rpm similarity index 100% rename from base_rpms_fc16/fedora-release-16-1.noarch.rpm rename to scripts_fedora/base_rpms_fc16/fedora-release-16-1.noarch.rpm diff --git a/base_rpms_fc16/filesystem-2.4.44-1.fc16.x86_64.rpm b/scripts_fedora/base_rpms_fc16/filesystem-2.4.44-1.fc16.x86_64.rpm similarity index 100% rename from base_rpms_fc16/filesystem-2.4.44-1.fc16.x86_64.rpm rename to scripts_fedora/base_rpms_fc16/filesystem-2.4.44-1.fc16.x86_64.rpm diff --git a/base_rpms_fc16/setup-2.8.36-2.fc16.noarch.rpm b/scripts_fedora/base_rpms_fc16/setup-2.8.36-2.fc16.noarch.rpm similarity index 100% rename from base_rpms_fc16/setup-2.8.36-2.fc16.noarch.rpm rename to scripts_fedora/base_rpms_fc16/setup-2.8.36-2.fc16.noarch.rpm diff --git a/base_rpms_fc17/fedora-release-17-1.noarch.rpm b/scripts_fedora/base_rpms_fc17/fedora-release-17-1.noarch.rpm similarity index 100% rename from base_rpms_fc17/fedora-release-17-1.noarch.rpm rename to scripts_fedora/base_rpms_fc17/fedora-release-17-1.noarch.rpm diff --git a/base_rpms_fc17/filesystem-3-2.fc17.x86_64.rpm b/scripts_fedora/base_rpms_fc17/filesystem-3-2.fc17.x86_64.rpm similarity index 100% rename from base_rpms_fc17/filesystem-3-2.fc17.x86_64.rpm rename to scripts_fedora/base_rpms_fc17/filesystem-3-2.fc17.x86_64.rpm diff --git a/base_rpms_fc17/setup-2.8.48-1.fc17.noarch.rpm b/scripts_fedora/base_rpms_fc17/setup-2.8.48-1.fc17.noarch.rpm similarity index 100% rename from base_rpms_fc17/setup-2.8.48-1.fc17.noarch.rpm rename to scripts_fedora/base_rpms_fc17/setup-2.8.48-1.fc17.noarch.rpm diff --git a/scripts_fedora/base_rpms_fc18/fedora-release-18-1.noarch.rpm b/scripts_fedora/base_rpms_fc18/fedora-release-18-1.noarch.rpm new file mode 100644 index 0000000..635def3 Binary files /dev/null and b/scripts_fedora/base_rpms_fc18/fedora-release-18-1.noarch.rpm differ diff --git a/base_rpms_fc18/filesystem-3.1-2.fc18.x86_64.rpm b/scripts_fedora/base_rpms_fc18/filesystem-3.1-2.fc18.x86_64.rpm similarity index 100% rename from base_rpms_fc18/filesystem-3.1-2.fc18.x86_64.rpm rename to scripts_fedora/base_rpms_fc18/filesystem-3.1-2.fc18.x86_64.rpm diff --git a/base_rpms_fc18/setup-2.8.57-1.fc18.noarch.rpm b/scripts_fedora/base_rpms_fc18/setup-2.8.57-1.fc18.noarch.rpm similarity index 100% rename from base_rpms_fc18/setup-2.8.57-1.fc18.noarch.rpm rename to scripts_fedora/base_rpms_fc18/setup-2.8.57-1.fc18.noarch.rpm diff --git a/scripts_fedora/clean-volatile.img.tar b/scripts_fedora/clean-volatile.img.tar new file mode 100644 index 0000000..5257a10 Binary files /dev/null and b/scripts_fedora/clean-volatile.img.tar differ diff --git a/keys_fc13/RPM-GPG-KEY-fedora-13-primary b/scripts_fedora/keys_fc13/RPM-GPG-KEY-fedora-13-primary similarity index 100% rename from keys_fc13/RPM-GPG-KEY-fedora-13-primary rename to scripts_fedora/keys_fc13/RPM-GPG-KEY-fedora-13-primary diff --git a/keys_fc13/qubes-release-1-signing-key.asc b/scripts_fedora/keys_fc13/qubes-release-1-signing-key.asc similarity index 100% rename from keys_fc13/qubes-release-1-signing-key.asc rename to scripts_fedora/keys_fc13/qubes-release-1-signing-key.asc diff --git a/keys_fc14/RPM-GPG-KEY-fedora-14-primary b/scripts_fedora/keys_fc14/RPM-GPG-KEY-fedora-14-primary similarity index 100% rename from keys_fc14/RPM-GPG-KEY-fedora-14-primary rename to scripts_fedora/keys_fc14/RPM-GPG-KEY-fedora-14-primary diff --git a/keys_fc14/qubes-release-1-signing-key.asc b/scripts_fedora/keys_fc14/qubes-release-1-signing-key.asc similarity index 100% rename from keys_fc14/qubes-release-1-signing-key.asc rename to scripts_fedora/keys_fc14/qubes-release-1-signing-key.asc diff --git a/keys_fc15/RPM-GPG-KEY-fedora-15-primary b/scripts_fedora/keys_fc15/RPM-GPG-KEY-fedora-15-primary similarity index 100% rename from keys_fc15/RPM-GPG-KEY-fedora-15-primary rename to scripts_fedora/keys_fc15/RPM-GPG-KEY-fedora-15-primary diff --git a/keys_fc15/qubes-release-1-signing-key.asc b/scripts_fedora/keys_fc15/qubes-release-1-signing-key.asc similarity index 100% rename from keys_fc15/qubes-release-1-signing-key.asc rename to scripts_fedora/keys_fc15/qubes-release-1-signing-key.asc diff --git a/keys_fc16/RPM-GPG-KEY-Fedora-16-primary b/scripts_fedora/keys_fc16/RPM-GPG-KEY-Fedora-16-primary similarity index 100% rename from keys_fc16/RPM-GPG-KEY-Fedora-16-primary rename to scripts_fedora/keys_fc16/RPM-GPG-KEY-Fedora-16-primary diff --git a/keys_fc16/qubes-release-1-signing-key.asc b/scripts_fedora/keys_fc16/qubes-release-1-signing-key.asc similarity index 100% rename from keys_fc16/qubes-release-1-signing-key.asc rename to scripts_fedora/keys_fc16/qubes-release-1-signing-key.asc diff --git a/keys_fc17/RPM-GPG-KEY-Fedora-17-primary b/scripts_fedora/keys_fc17/RPM-GPG-KEY-Fedora-17-primary similarity index 100% rename from keys_fc17/RPM-GPG-KEY-Fedora-17-primary rename to scripts_fedora/keys_fc17/RPM-GPG-KEY-Fedora-17-primary diff --git a/keys_fc17/qubes-release-1-signing-key.asc b/scripts_fedora/keys_fc17/qubes-release-1-signing-key.asc similarity index 100% rename from keys_fc17/qubes-release-1-signing-key.asc rename to scripts_fedora/keys_fc17/qubes-release-1-signing-key.asc diff --git a/keys_fc18/RPM-GPG-KEY-Fedora-18-primary b/scripts_fedora/keys_fc18/RPM-GPG-KEY-Fedora-18-primary similarity index 100% rename from keys_fc18/RPM-GPG-KEY-Fedora-18-primary rename to scripts_fedora/keys_fc18/RPM-GPG-KEY-Fedora-18-primary diff --git a/keys_fc18/qubes-release-1-signing-key.asc b/scripts_fedora/keys_fc18/qubes-release-1-signing-key.asc similarity index 100% rename from keys_fc18/qubes-release-1-signing-key.asc rename to scripts_fedora/keys_fc18/qubes-release-1-signing-key.asc diff --git a/scripts_fedora/network b/scripts_fedora/network new file mode 100644 index 0000000..61c4a5a --- /dev/null +++ b/scripts_fedora/network @@ -0,0 +1 @@ +NETWORKING=yes diff --git a/clean_images/packages.list b/scripts_fedora/packages.list similarity index 100% rename from clean_images/packages.list rename to scripts_fedora/packages.list diff --git a/scripts_fedora/packages_fc18.list b/scripts_fedora/packages_fc18.list new file mode 100644 index 0000000..1d709c4 --- /dev/null +++ b/scripts_fedora/packages_fc18.list @@ -0,0 +1,22 @@ +@^gnome-desktop-environment +@libreoffice +emacs +vim-enhanced +gnupg +xterm +firefox +thunderbird +keepassx +perl-File-MimeInfo +Terminal +--exclude=kdegames +--exclude=firstboot +--exclude=xorg-x11-drv-nouveau +--exclude=firewall-config,firewalld +--exclude=gnome-boxes +git +createrepo +rpm-build +qubes-core-vm-kernel-placeholder +ltrace +strace diff --git a/scripts_fedora/part.bin b/scripts_fedora/part.bin new file mode 100644 index 0000000..47970d1 Binary files /dev/null and b/scripts_fedora/part.bin differ diff --git a/scripts_fedora/resolv.conf b/scripts_fedora/resolv.conf new file mode 100644 index 0000000..6e7633b --- /dev/null +++ b/scripts_fedora/resolv.conf @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/templates.spec b/templates.spec index b47778b..e9bfaf3 100644 --- a/templates.spec +++ b/templates.spec @@ -45,7 +45,7 @@ touch $RPM_BUILD_ROOT/%{dest_dir}/root.img # we will create the real file in %po touch $RPM_BUILD_ROOT/%{dest_dir}/private.img # we will create the real file in %post touch $RPM_BUILD_ROOT/%{dest_dir}/volatile.img # we will create the real file in %post -cp clean_images/clean-volatile.img.tar $RPM_BUILD_ROOT/%{dest_dir}/clean-volatile.img.tar +cp $SCRIPTSDIR/clean-volatile.img.tar $RPM_BUILD_ROOT/%{dest_dir}/clean-volatile.img.tar mkdir -p $RPM_BUILD_ROOT/%{dest_dir}/apps.templates mkdir -p $RPM_BUILD_ROOT/%{dest_dir}/apps diff --git a/yum_repo_qubes/.gitignore b/yum_repo_qubes/.gitignore index 595ccdb..a6b5bba 100644 --- a/yum_repo_qubes/.gitignore +++ b/yum_repo_qubes/.gitignore @@ -1 +1,2 @@ fc* +archlinux*