diff --git a/Makefile b/Makefile index 14dd7d8..0eb6d5d 100644 --- a/Makefile +++ b/Makefile @@ -2,6 +2,7 @@ # The Qubes OS Project, http://www.qubes-os.org # # Copyright (C) 2011 Tomasz Sterna +# Copyright (C) 2019 Frédéric Pierret # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -18,22 +19,48 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # # +DIST ?= fc31 +DIST_VER = $(subst fc,,$(DIST)) + +INSTALLER_DIR ?= $(PWD) ISO_INSTALLER ?= 1 +INSTALLER_KICKSTART ?= $(INSTALLER_DIR)/conf/qubes-kickstart.cfg + ISO_LIVEUSB ?= 0 +LIVE_KICKSTART ?= $(INSTALLER_DIR)/conf/liveusb.ks + +CREATEREPO := /usr/bin/createrepo + +PUNGI := /usr/bin/pungi-gather +PUNGI_OPTS := --selfhosting --arch=x86_64 --greedy=build + +LORAX := /usr/sbin/lorax +LORAX_OPTS := --product Qubes --macboot --force --rootfs-size=4 -PUNGI_OPTS := --nosource --nodebuginfo --nogreedy --all-stages ifdef QUBES_RELEASE ISO_VERSION := $(QUBES_RELEASE) - PUNGI_OPTS += --isfinal + LORAX_OPTS += --isfinal else ISO_VERSION ?= $(shell date +%Y%m%d) endif -PUNGI_OPTS += --ver="$(ISO_VERSION)" -PUNGI_OPTS += --rootfs-size=4 +ISO_VOLID := Qubes-$(ISO_VERSION)-x86_64 +BASE_DIR := $(INSTALLER_DIR)/work/$(ISO_VERSION)/x86_64 + +LORAX_OPTS += --version "$(ISO_VERSION)" --release "Qubes $(ISO_VERSION)" --volid $(ISO_VOLID) +LORAX_OPTS += --workdir $(INSTALLER_DIR)/work/work/x86_64 --logfile $(INSTALLER_DIR)/work/logs/lorax-x86_64.log +LORAX_OPTS += --source http://download.fedoraproject.org/pub/fedora/linux/releases/$(DIST_VER)/Everything/x86_64/os/ +LORAX_OPTS += --source http://download.fedoraproject.org/pub/fedora/linux/updates/$(DIST_VER)/Everything/x86_64/ +LORAX_OPTS += --source $(BASE_DIR)/os/ + +MKISOFS := /usr/bin/xorriso -as mkisofs +# common mkisofs flags +MKISOFS_OPTS := -v -U -J --joliet-long -R -T -m repoview -m boot.iso +# x86 boot args +MKISOFS_OPTS += -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table +# efi boot args +MKISOFS_OPTS += -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -INSTALLER_KICKSTART ?= $(PWD)/conf/qubes-kickstart.cfg -LIVE_KICKSTART ?= $(PWD)/conf/liveusb.ks help: @echo "make iso <== \o/";\ @@ -52,15 +79,29 @@ iso: iso-liveusb endif iso-prepare: - ln -nsf `pwd` /tmp/qubes-installer - createrepo -q -g ../../conf/comps-qubes.xml --update yum/qubes-dom0 + rm -rf && mkdir work + ln -nsf $(INSTALLER_DIR) /tmp/qubes-installer + $(CREATEREPO) -q -g ../../conf/comps-qubes.xml --update yum/qubes-dom0 + +iso-installer-gather: + mkdir -p $(BASE_DIR)/os/Packages + umask 022; $(PUNGI) $(PUNGI_OPTS) --config $(INSTALLER_KICKSTART) --download-to=$(BASE_DIR)/os/Packages + pushd $(BASE_DIR)/os/ && $(CREATEREPO) -q . + +iso-installer-lorax: + $(LORAX) $(LORAX_OPTS) $(BASE_DIR)/os + +iso-installer-mkisofs: + mkdir -p $(BASE_DIR)/iso/ + $(MKISOFS) $(MKISOFS_OPTS) -V $(ISO_VOLID) -o $(BASE_DIR)/iso/$(ISO_VOLID).iso $(BASE_DIR)/os/ + /usr/bin/isohybrid -u $(BASE_DIR)/iso/$(ISO_VOLID).iso + /usr/bin/implantisomd5 $(BASE_DIR)/iso/$(ISO_VOLID).iso + -iso-installer: iso-prepare - mkdir -p work - umask 022; pushd work && pungi --name=Qubes $(PUNGI_OPTS) -c $(INSTALLER_KICKSTART) && popd +iso-installer: iso-prepare iso-installer-gather iso-installer-lorax iso-installer-mkisofs # Move result files to known-named directories mkdir -p build/ISO/qubes-x86_64/iso - mv work/$(ISO_VERSION)/x86_64/iso/*-DVD*.iso build/ISO/qubes-x86_64/iso/Qubes-$(ISO_VERSION)-x86_64.iso + mv $(BASE_DIR)/iso/$(ISO_VOLID).iso build/ISO/qubes-x86_64/iso/ echo $(ISO_VERSION) > build/ISO/qubes-x86_64/iso/build_latest rm -rf build/work mv work build/work @@ -68,7 +109,6 @@ iso-installer: iso-prepare rm -rf work iso-liveusb: $(LIVE_KICKSTART) iso-prepare - mkdir -p work pushd work && ../livecd-creator-qubes --debug --product='Qubes OS' --title="Qubes OS $(ISO_VERSION)" --fslabel="Qubes-$(ISO_VERSION)-x86_64-LIVE" --config $(LIVE_KICKSTART) && popd # Move result files to known-named directories mkdir -p build/ISO/qubes-x86_64/iso build/work diff --git a/build-deps-iso.list b/build-deps-iso.list index f6c52cf..4b5ed39 100644 --- a/build-deps-iso.list +++ b/build-deps-iso.list @@ -1,6 +1,5 @@ anaconda pungi -pungi-legacy pykickstart lorax-templates-qubes livecd-tools diff --git a/conf/qubes-kickstart.cfg b/conf/qubes-kickstart.cfg index 7497182..4224809 100644 --- a/conf/qubes-kickstart.cfg +++ b/conf/qubes-kickstart.cfg @@ -4,8 +4,11 @@ # (@base is added by default unless you add --nobase to %packages) # (default groups for the configured repos are added by --default) -repo --name=fedora --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-29-primary --ignoregroups=true --mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-29&arch=$basearch -repo --name=fedora-updates --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-29-primary --ignoregroups=true --mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f29&arch=$basearch +# repo --name=fedora --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-primary --ignoregroups=true --mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=fedora-31&arch=x86_64 +# repo --name=fedora-updates --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-primary --ignoregroups=true --mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=updates-released-f31&arch=x86_64 + +repo --name=fedora --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-primary --ignoregroups=true --baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/31/Everything/x86_64/os/ +repo --name=fedora-updates --gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-31-primary --ignoregroups=true --baseurl=http://download.fedoraproject.org/pub/fedora/linux/updates/31/Everything/x86_64/ repo --name=installer --baseurl=file:///tmp/qubes-installer/yum/installer/ repo --name=qubes-dom0 --baseurl=file:///tmp/qubes-installer/yum/qubes-dom0/ repo --name=dom0-updates --baseurl=file:///tmp/qubes-installer/yum/dom0-updates/