summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid P. <megver83@parabola.nu>2023-09-07 16:28:08 -0300
committerDavid P. <megver83@parabola.nu>2023-09-07 16:28:08 -0300
commit52d8db2b9d9083ab94ac1da05321fcfea27ecab6 (patch)
tree91decfbaeec1863eced3ec2e8d3de504fc9c71b8
parentd1f5031321732e94ee434833accba16e1b412d8c (diff)
sync with archiso v71
c50ffaf (tag: v71) Add changelog for 71 and update AUTHORS.rst 1637dc3 Update configs/{baseline,releng}/pacman.conf dee0da6 Merge remote-tracking branch 'origin/merge-requests/330' 32b32bd Add support for mDNS. b5e7f5a mkarchiso: add a -r option to delete the working directory b9cec1e Merge remote-tracking branch 'origin/merge-requests/327' dc72a84 Update mkarchiso 7f16323 CHANGELOG.rst: remove stray git conflict marker 493aa90 configs/releng/packages.x86_64: add more terminfo packages db292a5 README.profile.rst: document %ARCHISO_UUID% and %ARCHISO_SEARCH_FILENAME% 8cc0e9e mkarchiso: read SOURCE_DATE_EPOCH from file early ce8fded Use UUIDs in all boot loader configuration files 094afd1 mkarchiso: support %ARCHISO_UUID% variable in boot loader configuration b468327 Merge remote-tracking branch 'origin/merge-requests/325' 14b2e44 mkarchiso: Fix the cp command arguments to retain mkarchiso's behavior prior to the GNU Coreutils update. Fixes Issue #214 db2b78f Merge remote-tracking branch 'origin/merge-requests/322' 4447154 Merge branch 'd3vil0per-master-patch-56859' into 'master' 2b2f212 Added classes for Memtest86+ and UEFI Shell menuentries 42f645e Fixed subdirectories copy from grub/ to the ISO 751f6ed Added classes for Memtest86+ and UEFI Shell menuentries 63c77dc Subdirectories from grub/ are copied to the ISO 798562b Merge remote-tracking branch 'origin/merge-requests/235' 20fc803 configs/baseline/profiledef.sh: compress more f605251 wait for networkd online before curl invocation Signed-off-by: David P. <megver83@parabola.nu>
-rw-r--r--AUTHORS.rst31
-rw-r--r--CHANGELOG.rst36
-rw-r--r--configs/baseline/airootfs/etc/systemd/network/20-ethernet.network1
-rw-r--r--configs/baseline/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf4
-rw-r--r--configs/baseline/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf2
-rw-r--r--configs/baseline/pacman.conf9
-rw-r--r--configs/baseline/profiledef.sh2
-rw-r--r--configs/baseline/syslinux/syslinux-linux-libre.cfg2
-rw-r--r--configs/releng/airootfs/etc/systemd/network/20-ethernet.network1
-rw-r--r--configs/releng/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf4
-rwxr-xr-xconfigs/releng/airootfs/root/.automated_script.sh24
-rw-r--r--configs/releng/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf2
-rw-r--r--configs/releng/efiboot/loader/entries/02-parabolaiso-x86_64-speech-linux-libre.conf2
-rw-r--r--configs/releng/grub/grub.cfg6
-rw-r--r--configs/releng/packages.both2
-rw-r--r--configs/releng/pacman.conf9
-rw-r--r--configs/releng/syslinux/parabolaiso_pxe32-linux-libre.cfg2
-rw-r--r--configs/releng/syslinux/parabolaiso_pxe64-linux-libre.cfg2
-rw-r--r--configs/releng/syslinux/parabolaiso_sys32-linux-libre.cfg6
-rw-r--r--configs/releng/syslinux/parabolaiso_sys64-linux-libre.cfg4
-rw-r--r--docs/README.profile.rst7
-rwxr-xr-xparabolaiso/mkparabolaiso60
22 files changed, 156 insertions, 62 deletions
diff --git a/AUTHORS.rst b/AUTHORS.rst
index f6b5798..f3da577 100644
--- a/AUTHORS.rst
+++ b/AUTHORS.rst
@@ -2,51 +2,72 @@
Archiso Authors
===============
+* 2hexed <2hexed@protonmail.com>
* Aaron Griffin <aaron@archlinux.org>
* Adam Purkrt <adam@purkrt.net>
* Alexander Epaneshnikov <aarnaarn2@gmail.com>
+* Alexander Speshilov <speshuric@gmail.com>
+* Anton Hvornum <anton@hvornum.se>
+* Antonio V <crazysnob@live.it>
* Chandan Singh <cks071g2@gmail.com>
* Charles Vejnar <ce@vejnar.org>
* Christian Hesse <mail@eworm.de>
* Christopher Brannon <cmbrannon79@gmail.com>
* Dan McGee <dan@archlinux.org>
+* Darren Ng <un1gfn@gmail.com>
* David Runge <dvzrv@archlinux.org>
* David Thurstenson <thurstylark@gmail.com>
* Dieter Plaetinck <dieter@plaetinck.be>
* Eli Schwartz <eschwartz@archlinux.org>
+* Eric Toombs <567-ewtoombs@users.noreply.gitlab.archlinux.org>
* Florian Pritz <bluewind@xinu.at>
+* Francois Dupoux <fdupoux@users.sourceforge.net>
* Gerardo Exequiel Pozzi <vmlinuz386@gmail.com>
* Gerhard Brauer <gerbra@archlinux.de>
+* Giancarlo Razzolini <grazzolini@archlinux.org>
+* Howard Hicks <deimosian@gmail.com>
* James Sitegen <jamesm.sitegen@gmail.com>
+* Jonathan Liu <net147@gmail.com>
+* Jonathon Fernyhough <jonathon@m2x.dev>
* Justin Kromlinger <hashworks@archlinux.org>
* Keshav Amburay <the.ridikulus.rat@gmail.com>
+* Kristian Klausen <kristian@klausen.dk>
* Loui Chang <louipc.ist@gmail.com>
* Lukas Fleischer <archlinux@cryptocrack.de>
* Martin Damian Fernandez <martin.damian.fernandez@gmail.com>
+* Michael Gilchrist <michaelgilch@gmail.com>
* Michael Vorburger <mike@vorburger.ch>
+* Pellegrino Prevete <pellegrinoprevete@gmail.com>
* Pierre Schmitz <pierre@archlinux.de>
* Sean Enck <enckse@voidedtech.com>
* Simo Leone <simo@archlinux.org>
+* Simon Wilper <sxw@chronowerks.de>
+* Sorin Pânca <sorin.panca@gmail.com>
* Steffen Bönigk <boenki@gmx.de>
* Sven-Hendrik Haase <svenstaro@gmail.com>
* Thomas Bächler <thomas@archlinux.org>
+* Tobias Powalowski <tpowa@archlinux.org>
+* Tom Yan <tom.ty89@gmail.com>
* Yu Li-Yu <afg984@gmail.com>
+* Zig Globulin <zig@zigsystem.com>
+* hayao <hayao@fascode.net>
+* mono wock <aaronleemorrison@protonmail.com>
* nl6720 <nl6720@gmail.com>
-* Øyvind Heggstad <heggstad@gmail.com>
* plain linen <bcdedit@hotmail.com>
-* Pellegrino Prevete <pellegrinoprevete@gmail.com>
-* Anton Hvornum <anton@hvornum.se>
+* shivanandvp <shivanandvp.oss@gmail.com>
+* weltio weltio <weltio@web.de>
+* Øyvind Heggstad <heggstad@gmail.com>
===================
Parabolaiso Authors
===================
* Andreas Grapentin <andreas@grapentin.org>
-* André Fabian Silva Delgado <emulatorman@parabola.nu>
+* André Fabian Silva Delgado <emulatorman@hyperbola.info>
* David P <megver83@parabola.nu>
* Drtan Samos <drtan@lavabit.com>
* Esteban Carnevale <alfplayer@mailoo.org>
* Jorge Lopez <jorginho@riseup.net>
* bill-auger <mr.j.spam.me@gmail.com>
* chandan <cks071g2@gmail.com>
-* Márcio Alexandre Silva Delgado <coadde@parabola.nu>
+* Márcio Alexandre Silva Delgado <coadde@hyperbola.info>
diff --git a/CHANGELOG.rst b/CHANGELOG.rst
index 1299c48..8725b1a 100644
--- a/CHANGELOG.rst
+++ b/CHANGELOG.rst
@@ -20,6 +20,40 @@ Fixed
Removed
-------
+[71] - 2023-05-28
+=================
+
+Added
+-----
+
+- Added classes for Memtest86+ and UEFI Shell menuentries.
+- Add foot-terminfo and wezterm-terminfo packages to releng to support terminal emulators using them. E.g. when
+ installing via SSH.
+- Add a new ``-r`` option to ``mkparabolaiso`` that deletes the working directly after the build.
+- Add support for mDNS announce and resolve.
+
+Changed
+-------
+
+- Increase EROFS compression for the baseline profile by using an extreme LZMA compression level and enabling the
+ experimental compressed fragments and data deduplication features.
+- Identify the ISO volume via a UUID instead of a file system label in all boot loader configuration files.
+- Update ``pacman.conf`` to match the one shipped with pacman 6.0.2-7 (from Arch) which removes the community repository.
+
+Fixed
+-----
+
+- Wait for ``network-online.target`` to become active before trying to download the script passed via the ``script=``
+ boot parameter.
+- Subdirectories from ``grub/`` are copied to the ISO.
+- Modify the commandline options to a ``cp`` command in ``mkparabolaiso`` so that the entire script does not exit with
+ failure when a custom ``.bashrc`` file is supplied with the parabolaiso configuration. This fix was needed after
+ **GNU Coreutils** recently changed the behaviour of the ``-n`` (or ``--no-clobber``) commandline option to the ``cp``
+ command.
+- Ensure ``SOURCE_DATE_EPOCH`` is read from the ``build_date`` file before ``profiledef.sh`` is sourced to ensure the
+ variable has a correct value when used inside ``profiledef.sh``.
+
+
[70] - 2023-02-27
=================
@@ -279,7 +313,7 @@ Removed
-------
- Remove all files related to ``mkinitcpio`` integration, as they now live in
- https://gitlab.archlinux.org/mkinitcpio/mkinitcpio-archiso
+ https://gitlab.archlinux.org/archlinux/mkinitcpio/mkinitcpio-archiso
[57] - 2021-07-30
=================
diff --git a/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network b/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network
index 4b6a2ab..64bb07e 100644
--- a/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network
+++ b/configs/baseline/airootfs/etc/systemd/network/20-ethernet.network
@@ -7,4 +7,5 @@ Name=eth*
[Network]
DHCP=yes
+MulticastDNS=yes
IPv6PrivacyExtensions=yes
diff --git a/configs/baseline/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf b/configs/baseline/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf
new file mode 100644
index 0000000..5d64185
--- /dev/null
+++ b/configs/baseline/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf
@@ -0,0 +1,4 @@
+# Default systemd-resolved configuration for parabolaiso
+
+[Resolve]
+MulticastDNS=yes
diff --git a/configs/baseline/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf b/configs/baseline/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf
index e89de03..dcfa3a9 100644
--- a/configs/baseline/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf
+++ b/configs/baseline/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf
@@ -1,4 +1,4 @@
title Parabola GNU/Linux-libre (x86_64, UEFI)
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
-options parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL%
+options parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID%
diff --git a/configs/baseline/pacman.conf b/configs/baseline/pacman.conf
index 7bcfccb..59821bc 100644
--- a/configs/baseline/pacman.conf
+++ b/configs/baseline/pacman.conf
@@ -77,21 +77,12 @@ LocalFileSigLevel = Optional
[libre]
Include = /etc/pacman.d/mirrorlist
-#[testing]
-#Include = /etc/pacman.d/mirrorlist
-
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
-#[community-testing]
-#Include = /etc/pacman.d/mirrorlist
-
-[community]
-Include = /etc/pacman.d/mirrorlist
-
#[pcr-testing]
#Include = /etc/pacman.d/mirrorlist
diff --git a/configs/baseline/profiledef.sh b/configs/baseline/profiledef.sh
index 3452400..7c35814 100644
--- a/configs/baseline/profiledef.sh
+++ b/configs/baseline/profiledef.sh
@@ -14,7 +14,7 @@ bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
arch="x86_64"
pacman_conf="pacman.conf"
airootfs_image_type="erofs"
-airootfs_image_tool_options=('-zlzma,9' -E ztailpacking)
+airootfs_image_tool_options=('-zlzma,109' -E 'ztailpacking,fragments,dedupe')
file_permissions=(
["/etc/shadow"]="0:0:400"
)
diff --git a/configs/baseline/syslinux/syslinux-linux-libre.cfg b/configs/baseline/syslinux/syslinux-linux-libre.cfg
index 6d4c9f8..458bfe4 100644
--- a/configs/baseline/syslinux/syslinux-linux-libre.cfg
+++ b/configs/baseline/syslinux/syslinux-linux-libre.cfg
@@ -2,4 +2,4 @@ LABEL parabola
MENU LABEL Parabola GNU/Linux-libre (x86_64, BIOS)
LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-libre
INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL%
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID%
diff --git a/configs/releng/airootfs/etc/systemd/network/20-ethernet.network b/configs/releng/airootfs/etc/systemd/network/20-ethernet.network
index 9ada778..ce8de1f 100644
--- a/configs/releng/airootfs/etc/systemd/network/20-ethernet.network
+++ b/configs/releng/airootfs/etc/systemd/network/20-ethernet.network
@@ -7,6 +7,7 @@ Name=eth*
[Network]
DHCP=yes
+MulticastDNS=yes
IPv6PrivacyExtensions=yes
# systemd-networkd does not set per-interface-type default route metrics
diff --git a/configs/releng/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf b/configs/releng/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf
new file mode 100644
index 0000000..5d64185
--- /dev/null
+++ b/configs/releng/airootfs/etc/systemd/resolved.conf.d/parabolaiso.conf
@@ -0,0 +1,4 @@
+# Default systemd-resolved configuration for parabolaiso
+
+[Resolve]
+MulticastDNS=yes
diff --git a/configs/releng/airootfs/root/.automated_script.sh b/configs/releng/airootfs/root/.automated_script.sh
index 52c47e6..8e72bf7 100755
--- a/configs/releng/airootfs/root/.automated_script.sh
+++ b/configs/releng/airootfs/root/.automated_script.sh
@@ -1,22 +1,29 @@
#!/usr/bin/env bash
-script_cmdline ()
-{
+script_cmdline() {
local param
- for param in $(< /proc/cmdline); do
+ for param in $(</proc/cmdline); do
case "${param}" in
- script=*) echo "${param#*=}" ; return 0 ;;
+ script=*)
+ echo "${param#*=}"
+ return 0
+ ;;
esac
done
}
-automated_script ()
-{
+automated_script() {
local script rt
script="$(script_cmdline)"
if [[ -n "${script}" && ! -x /tmp/startup_script ]]; then
if [[ "${script}" =~ ^((http|https|ftp)://) ]]; then
- curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script >/dev/null
+ # there's no synchronization for network availability before executing this script
+ printf '%s: waiting for network-online.target\n' "$0"
+ until systemctl --quiet is-active network-online.target; do
+ sleep 1
+ done
+ printf '%s: downloading %s\n' "$0" "${script}"
+ curl "${script}" --location --retry-connrefused --retry 10 -s -o /tmp/startup_script
rt=$?
else
cp "${script}" /tmp/startup_script
@@ -24,6 +31,9 @@ automated_script ()
fi
if [[ ${rt} -eq 0 ]]; then
chmod +x /tmp/startup_script
+ printf '%s: executing automated script\n' "$0"
+ # note that script is executed when other services (like pacman-init) may be still in progress, please
+ # synchronize to "systemctl is-system-running --wait" when your script depends on other services
/tmp/startup_script
fi
fi
diff --git a/configs/releng/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf b/configs/releng/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf
index 925962a..1af7867 100644
--- a/configs/releng/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf
+++ b/configs/releng/efiboot/loader/entries/01-parabolaiso-x86_64-linux-libre.conf
@@ -2,4 +2,4 @@ title Parabola GNU/Linux-libre install medium (x86_64, UEFI)
sort-key 01
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
-options parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL%
+options parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID%
diff --git a/configs/releng/efiboot/loader/entries/02-parabolaiso-x86_64-speech-linux-libre.conf b/configs/releng/efiboot/loader/entries/02-parabolaiso-x86_64-speech-linux-libre.conf
index e2f3cbe..3bb7725 100644
--- a/configs/releng/efiboot/loader/entries/02-parabolaiso-x86_64-speech-linux-libre.conf
+++ b/configs/releng/efiboot/loader/entries/02-parabolaiso-x86_64-speech-linux-libre.conf
@@ -2,4 +2,4 @@ title Parabola GNU/Linux-libre install medium (x86_64, UEFI) with speech
sort-key 02
linux /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre
initrd /%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
-options parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL% accessibility=on
+options parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID% accessibility=on
diff --git a/configs/releng/grub/grub.cfg b/configs/releng/grub/grub.cfg
index a72ca7a..4266ef3 100644
--- a/configs/releng/grub/grub.cfg
+++ b/configs/releng/grub/grub.cfg
@@ -56,16 +56,16 @@ menuentry "Parabola GNU/Linux-libre install medium with speakup screen reader (x
if [ "${grub_platform}" == "efi" ]; then
if [ "${grub_cpu}" == "x86_64" ]; then
- menuentry "Run Memtest86+ (RAM test)" --class memtest86 --class gnu --class tool {
+ menuentry "Run Memtest86+ (RAM test)" --class memtest86 --class memtest --class gnu --class tool {
set gfxpayload=800x600,1024x768
linux /boot/memtest86+/memtest.efi
}
- menuentry "UEFI Shell" {
+ menuentry "UEFI Shell" --class efi {
insmod chain
chainloader /shellx64.efi
}
elif [ "${grub_cpu}" == "i386" ]; then
- menuentry "UEFI Shell" {
+ menuentry "UEFI Shell" --class efi {
insmod chain
chainloader /shellia32.efi
}
diff --git a/configs/releng/packages.both b/configs/releng/packages.both
index 0dd1b3c..45f0f67 100644
--- a/configs/releng/packages.both
+++ b/configs/releng/packages.both
@@ -23,6 +23,7 @@ ethtool
exfatprogs
f2fs-tools
fatresize
+foot-terminfo
fsarchiver
gnu-netcat
gpart
@@ -104,6 +105,7 @@ usbmuxd
usbutils
vim
vpnc
+wezterm-terminfo
wireless-regdb
wireless_tools
wpa_supplicant
diff --git a/configs/releng/pacman.conf b/configs/releng/pacman.conf
index 79a8f69..4469abc 100644
--- a/configs/releng/pacman.conf
+++ b/configs/releng/pacman.conf
@@ -76,21 +76,12 @@ LocalFileSigLevel = Optional
[libre]
Include = /etc/pacman.d/mirrorlist
-#[testing]
-#Include = /etc/pacman.d/mirrorlist
-
[core]
Include = /etc/pacman.d/mirrorlist
[extra]
Include = /etc/pacman.d/mirrorlist
-#[community-testing]
-#Include = /etc/pacman.d/mirrorlist
-
-[community]
-Include = /etc/pacman.d/mirrorlist
-
#[pcr-testing]
#Include = /etc/pacman.d/mirrorlist
diff --git a/configs/releng/syslinux/parabolaiso_pxe32-linux-libre.cfg b/configs/releng/syslinux/parabolaiso_pxe32-linux-libre.cfg
index 69b8212..fa629f1 100644
--- a/configs/releng/syslinux/parabolaiso_pxe32-linux-libre.cfg
+++ b/configs/releng/syslinux/parabolaiso_pxe32-linux-libre.cfg
@@ -6,7 +6,7 @@ ENDTEXT
MENU LABEL Boot Parabola GNU/Linux-libre (i686) (NBD)
LINUX ::/%INSTALL_DIR%/boot/i686/vmlinuz-linux-libre
INITRD ::/%INSTALL_DIR%/boot/i686/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL% parabolaiso_nbd_srv=${pxeserver} cms_verify=y
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID% parabolaiso_nbd_srv=${pxeserver} cms_verify=y
SYSAPPEND 3
LABEL parabola32_nfs
diff --git a/configs/releng/syslinux/parabolaiso_pxe64-linux-libre.cfg b/configs/releng/syslinux/parabolaiso_pxe64-linux-libre.cfg
index 28a131b..44531ab 100644
--- a/configs/releng/syslinux/parabolaiso_pxe64-linux-libre.cfg
+++ b/configs/releng/syslinux/parabolaiso_pxe64-linux-libre.cfg
@@ -6,7 +6,7 @@ ENDTEXT
MENU LABEL Boot Parabola GNU/Linux-libre (x86_64) (NBD)
LINUX ::/%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre
INITRD ::/%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL% parabolaiso_nbd_srv=${pxeserver} cms_verify=y
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID% parabolaiso_nbd_srv=${pxeserver} cms_verify=y
SYSAPPEND 3
LABEL parabola64_nfs
diff --git a/configs/releng/syslinux/parabolaiso_sys32-linux-libre.cfg b/configs/releng/syslinux/parabolaiso_sys32-linux-libre.cfg
index 4f0acb1..d15cac6 100644
--- a/configs/releng/syslinux/parabolaiso_sys32-linux-libre.cfg
+++ b/configs/releng/syslinux/parabolaiso_sys32-linux-libre.cfg
@@ -8,7 +8,7 @@ ENDTEXT
MENU LABEL Parabola GNU/Linux-libre install medium (i686, BIOS)
LINUX /%INSTALL_DIR%/boot/i686/vmlinuz-linux-libre
INITRD /%INSTALL_DIR%/boot/i686/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL%
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID%
# Accessibility boot option
LABEL parabola32speech
@@ -19,7 +19,7 @@ ENDTEXT
MENU LABEL Parabola GNU/Linux-libre install medium (i686, BIOS) with ^speech
LINUX /%INSTALL_DIR%/boot/i686/vmlinuz-linux-libre
INITRD /%INSTALL_DIR%/boot/i686/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL% accessibility=on
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID% accessibility=on
# Copy to RAM boot option
LABEL parabola32ram
@@ -30,4 +30,4 @@ ENDTEXT
MENU LABEL Parabola GNU/Linux-libre install medium (i686, BIOS, Copy to RAM)
LINUX /%INSTALL_DIR%/boot/i686/vmlinuz-linux-libre
INITRD /%INSTALL_DIR%/boot/i686/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL% copytoram
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID% copytoram
diff --git a/configs/releng/syslinux/parabolaiso_sys64-linux-libre.cfg b/configs/releng/syslinux/parabolaiso_sys64-linux-libre.cfg
index 9bdb4a8..9750687 100644
--- a/configs/releng/syslinux/parabolaiso_sys64-linux-libre.cfg
+++ b/configs/releng/syslinux/parabolaiso_sys64-linux-libre.cfg
@@ -6,7 +6,7 @@ ENDTEXT
MENU LABEL Parabola GNU/Linux-libre install medium (x86_64, BIOS)
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre
INITRD /%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL%
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID%
# Accessibility boot option
LABEL parabola64speech
@@ -17,4 +17,4 @@ ENDTEXT
MENU LABEL Parabola GNU/Linux-libre install medium (x86_64, BIOS) with ^speech
LINUX /%INSTALL_DIR%/boot/x86_64/vmlinuz-linux-libre
INITRD /%INSTALL_DIR%/boot/x86_64/initramfs-linux-libre.img
-APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisolabel=%PARABOLAISO_LABEL% accessibility=on
+APPEND parabolaisobasedir=%INSTALL_DIR% parabolaisodevice=UUID=%PARABOLAISO_UUID% accessibility=on
diff --git a/docs/README.profile.rst b/docs/README.profile.rst
index 258981d..8bb4ed3 100644
--- a/docs/README.profile.rst
+++ b/docs/README.profile.rst
@@ -142,6 +142,13 @@ respective variables in ``profiledef.sh``:
* ``%INSTALL_DIR%``: Set this using the ``install_dir`` variable in ``profiledef.sh``.
* ``%ARCH%``: Set this using the ``arch`` variable in ``profiledef.sh``.
+Additionally there are also *custom template identifiers* have harcoded values set by ``mkparabolaiso`` that cannot be
+overridden:
+
+* ``%PARABOLAISO_UUID%``: the ISO 9660 modification date in UTC, i.e. its "UUID",
+* ``%PARABOLAISO_SEARCH_FILENAME%``: file path on ISO 9660 that can be used by GRUB to find the ISO volume
+ (**for GRUB ``.cfg`` files only**).
+
efiboot
-------
diff --git a/parabolaiso/mkparabolaiso b/parabolaiso/mkparabolaiso
index 78826a2..1420d13 100755
--- a/parabolaiso/mkparabolaiso
+++ b/parabolaiso/mkparabolaiso
@@ -29,6 +29,7 @@ gpg_key=""
gpg_sender=""
iso_name=""
iso_label=""
+iso_uuid=""
iso_publisher=""
iso_application=""
iso_version=""
@@ -40,6 +41,7 @@ packages_dual=""
bootstrap_packages=""
bootstrap_packages_dual=""
pacstrap_dir=""
+declare -i rm_work_dir=0
buildmodes=()
bootmodes=()
airootfs_image_type=""
@@ -85,7 +87,7 @@ usage: ${app_name} [options] <profile_dir>
Default: '${iso_application}'
-C <file> pacman configuration file.
Default: '${pacman_conf}'
- -D <install_dir> Set an install_dir. All files will by located here.
+ -D <install_dir> Set an install_dir. All files will be located here.
Default: '${install_dir}'
NOTE: Max 8 characters, use only [a-z0-9]
-L <label> Set the ISO volume label
@@ -108,6 +110,7 @@ usage: ${app_name} [options] <profile_dir>
Default: '${out_dir}'
-p [package ..] Package(s) to install.
Multiple packages are provided as quoted, space delimited list.
+ -r Delete the working directory at the end.
-v Enable verbose output
-w <work_dir> Set the working directory
Default: '${work_dir}'
@@ -438,7 +441,7 @@ _make_customize_airootfs() {
if [[ ! -d "${pacstrap_dir}${passwd[5]}" ]]; then
install -d -m 0750 -o "${passwd[2]}" -g "${passwd[3]}" -- "${pacstrap_dir}${passwd[5]}"
fi
- cp -dnRT --preserve=mode,timestamps,links -- "${pacstrap_dir}/etc/skel/." "${pacstrap_dir}${passwd[5]}"
+ cp -dRT --update=none --preserve=mode,timestamps,links -- "${pacstrap_dir}/etc/skel/." "${pacstrap_dir}${passwd[5]}"
chmod -f 0750 -- "${pacstrap_dir}${passwd[5]}"
chown -hR -- "${passwd[2]}:${passwd[3]}" "${pacstrap_dir}${passwd[5]}"
else
@@ -482,6 +485,7 @@ _make_bootmode_bios.syslinux.mbr() {
install -d -m 0755 -- "${isofs_dir}/boot/syslinux"
for _cfg in "${profile}/syslinux/"*.cfg; do
sed "s|%PARABOLAISO_LABEL%|${iso_label}|g;
+ s|%PARABOLAISO_UUID%|${iso_uuid}|g;
s|%INSTALL_DIR%|${install_dir}|g;
s|%ARCH%|${arch}|g" \
"${_cfg}" > "${isofs_dir}/boot/syslinux/${_cfg##*/}"
@@ -580,26 +584,25 @@ _make_common_bootmode_grub_copy_to_isofs() {
files_to_copy+=("${profile}/grub/"!(*.cfg))
fi
install -d -m 0755 -- "${isofs_dir}/boot/grub"
- install -m 0644 -- "${files_to_copy[@]}" "${isofs_dir}/boot/grub/"
+ cp -r --remove-destination -- "${files_to_copy[@]}" "${isofs_dir}/boot/grub/"
}
# Prepare GRUB configuration files
_make_common_bootmode_grub_cfg(){
- local _cfg parabolaiso_uuid search_filename
+ local _cfg search_filename
install -d -- "${work_dir}/grub"
- # Precalculate the ISO's modification date in UTC, i.e. its "UUID"
- TZ=UTC printf -v parabolaiso_uuid '%(%F-%H-%M-%S-00)T' "$SOURCE_DATE_EPOCH"
# Create a /boot/grub/YYYY-mm-dd-HH-MM-SS-00.uuid file on ISO 9660. GRUB will search for it to find the ISO
# volume. This is similar to what grub-mkrescue does, except it places the file in /.disk/, but we opt to use a
# directory that does not start with a dot to avoid it being accidentally missed when copying the ISO's contents.
- : > "${work_dir}/grub/${parabolaiso_uuid}.uuid"
- search_filename="/boot/grub/${parabolaiso_uuid}.uuid"
+ : > "${work_dir}/grub/${iso_uuid}.uuid"
+ search_filename="/boot/grub/${iso_uuid}.uuid"
# Fill GRUB configuration files
for _cfg in "${profile}/grub/"*'.cfg'; do
sed "s|%PARABOLAISO_LABEL%|${iso_label}|g;
+ s|%PARABOLAISO_UUID%|${iso_uuid}|g;
s|%INSTALL_DIR%|${install_dir}|g;
s|%ARCH%|${arch}|g;
s|%PARABOLAISO_SEARCH_FILENAME%|${search_filename}|g" \
@@ -840,6 +843,7 @@ _make_bootmode_uefi-x64.systemd-boot.esp() {
mcopy -i "${efibootimg}" "${profile}/efiboot/loader/loader.conf" ::/loader/
for _conf in "${profile}/efiboot/loader/entries/"*".conf"; do
sed "s|%PARABOLAISO_LABEL%|${iso_label}|g;
+ s|%PARABOLAISO_UUID%|${iso_uuid}|g;
s|%INSTALL_DIR%|${install_dir}|g;
s|%ARCH%|${arch}|g" \
"${_conf}" | mcopy -i "${efibootimg}" - "::/loader/entries/${_conf##*/}"
@@ -1741,10 +1745,15 @@ _set_overrides() {
elif [[ -z "$quiet" ]]; then
quiet="y"
fi
+ if [[ -v override_rm_work_dir ]]; then
+ rm_work_dir="$override_rm_work_dir"
+ fi
# Set variables that do not have overrides
[[ -n "$airootfs_image_type" ]] || airootfs_image_type="squashfs"
[[ -n "$iso_name" ]] || iso_name="${app_name}"
+ # Precalculate the ISO's modification date in UTC, i.e. its "UUID"
+ TZ=UTC printf -v iso_uuid '%(%F-%H-%M-%S-00)T' "$SOURCE_DATE_EPOCH"
}
_export_gpg_publickey() {
@@ -1811,6 +1820,16 @@ _make_pkglist() {
_msg_info "Done!"
}
+# Create working directory
+_make_work_dir() {
+ if [[ ! -d "${work_dir}" ]]; then
+ install -d -- "${work_dir}"
+ elif (( rm_work_dir )); then
+ rm_work_dir=0
+ _msg_warning "Working directory removal requested, but '${work_dir}' already exists. It will not be removed!" 0
+ fi
+}
+
# build the base for an ISO and/or a netboot target
_build_iso_base() {
local run_once_mode="base"
@@ -1828,13 +1847,9 @@ _build_iso_base() {
isofs_dir="${work_dir}/iso"
# Create working directory
- [[ -d "${work_dir}" ]] || install -d -- "${work_dir}"
- # Write build date to file or if the file exists, read it from there
- if [[ -e "${work_dir}/build_date" ]]; then
- SOURCE_DATE_EPOCH="$(<"${work_dir}/build_date")"
- else
- printf '%s\n' "$SOURCE_DATE_EPOCH" > "${work_dir}/build_date"
- fi
+ _run_once _make_work_dir
+ # Write build date to file if it does not exist already
+ [[ -e "${work_dir}/build_date" ]] || printf '%s\n' "$SOURCE_DATE_EPOCH" > "${work_dir}/build_date"
[[ "${quiet}" == "y" ]] || _show_config
_run_dual '_run_once _make_pacman_conf'
@@ -1932,9 +1947,14 @@ _build() {
for buildmode in "${buildmodes[@]}"; do
_run_once "_build_buildmode_${buildmode}"
done
+ if (( rm_work_dir )); then
+ _msg_info 'Removing the working directory...'
+ rm -rf -- "${work_dir:?}/"
+ _msg_info 'Done!'
+ fi
}
-while getopts 'c:p:C:L:P:A:D:w:m:o:g:G:vh?' arg; do
+while getopts 'c:p:C:L:P:A:D:w:m:o:g:G:vrh?' arg; do
case "${arg}" in
p) read -r -a override_pkg_list <<< "${OPTARG}" ;;
C) override_pacman_conf="${OPTARG}" ;;
@@ -1949,6 +1969,7 @@ while getopts 'c:p:C:L:P:A:D:w:m:o:g:G:vh?' arg; do
g) override_gpg_key="${OPTARG}" ;;
G) override_gpg_sender="${OPTARG}" ;;
v) override_quiet="n" ;;
+ r) declare -i override_rm_work_dir=1 ;;
h|?) _usage 0 ;;
*)
_msg_error "Invalid argument '${arg}'" 0
@@ -1971,6 +1992,13 @@ fi
# get the absolute path representation of the first non-option argument
profile="$(realpath -- "${1}")"
+# Read SOURCE_DATE_EPOCH from file early
+build_date_file="$(realpath -q -- "${override_work_dir:-./work}/build_date")" || :
+if [[ -f "$build_date_file" ]]; then
+ SOURCE_DATE_EPOCH="$(<"$build_date_file")"
+fi
+unset build_date_file
+
_read_profile
_set_overrides
_validate_options