iso: fresh work dir each build (avoid stale-stage reuse) + modern bootmodes

mkarchiso reuses completed stages in the work dir -> a 'too short' build that
ships a stale airootfs. bootstrap now 'rm -rf' the work dir first. Also switch
profiledef bootmodes to the non-deprecated names (bios.syslinux, uefi.systemd-boot).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-20 02:09:54 +02:00
parent d7691994db
commit 1b81ad4914
16 changed files with 56 additions and 44 deletions
+6 -3
View File
@@ -39,10 +39,13 @@ install -m644 "$HERE/overrides/pacman.conf" "$PROFILE/pacman.conf"
cp -rT "$HERE/overrides/airootfs" "$PROFILE/airootfs" cp -rT "$HERE/overrides/airootfs" "$PROFILE/airootfs"
echo "==> profile ready: $PROFILE" echo "==> profile ready: $PROFILE"
WORK=/tmp/tanin-work
if [ "${1:-}" = "--build" ]; then if [ "${1:-}" = "--build" ]; then
echo "==> building ISO (sudo mkarchiso) …" echo "==> clean work dir (mkarchiso reuses stale stages otherwise -> 'too short' builds)"
sudo mkarchiso -v -w /tmp/tanin-work -o "$HERE/out" "$PROFILE" sudo rm -rf "$WORK"
echo "==> building ISO (sudo mkarchiso) … this takes a while (downloads + squashfs)"
sudo mkarchiso -v -w "$WORK" -o "$HERE/out" "$PROFILE"
echo "ISO written to $HERE/out/" echo "ISO written to $HERE/out/"
else else
echo "build with: sudo mkarchiso -v -w /tmp/tanin-work -o \"$HERE/out\" \"$PROFILE\"" echo "build with: sudo rm -rf $WORK && sudo mkarchiso -v -w $WORK -o \"$HERE/out\" \"$PROFILE\""
fi fi
@@ -6,6 +6,6 @@ timeout: 30
script: script:
- "rm -f /etc/systemd/system/getty@tty1.service.d/autologin.conf" - "rm -f /etc/systemd/system/getty@tty1.service.d/autologin.conf"
- "rmdir --ignore-fail-on-non-empty /etc/systemd/system/getty@tty1.service.d 2>/dev/null || true" - "rmdir --ignore-fail-on-non-empty /etc/systemd/system/getty@tty1.service.d 2>/dev/null || true"
- "rm -f /root/.bash_profile" - "rm -f /root/.zprofile"
- "rm -f /usr/local/bin/tanin-installer" - "rm -f /usr/local/bin/tanin-installer"
- "systemctl set-default graphical.target" - "systemctl set-default graphical.target"
+1 -1
View File
@@ -1 +1 @@
archiso taninux
+2 -8
View File
@@ -1,11 +1,5 @@
To install Arch Linux follow the installation guide:
https://wiki.archlinux.org/title/Installation_guide
For Wi-Fi, authenticate to the wireless network using the iwctl utility. TANINUX (camel) — a curated Arch desktop: niri + eww.
For mobile broadband (WWAN) modems, connect with the mmcli utility.
Ethernet, WLAN and WWAN interfaces using DHCP should work automatically.
After connecting to the internet, the installation guide can be accessed The installer launches on tty1. To start it manually: tanin-installer
via the convenience script Installation_guide.
                                          
+11
View File
@@ -0,0 +1,11 @@
NAME="TANINUX"
PRETTY_NAME="TANINUX (camel)"
ID=taninux
ID_LIKE=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;163;158;196"
HOME_URL="https://taninux.kgva.ch"
DOCUMENTATION_URL="https://git.openbureau.ch/karim/taninux"
SUPPORT_URL="https://git.openbureau.ch/karim/taninux"
BUG_REPORT_URL="https://git.openbureau.ch/karim/taninux/issues"
LOGO=taninux
@@ -1,6 +0,0 @@
# Live ISO: on the first console (tty1), launch the TANINUX installer.
# (On an installed system this file isn't present — Calamares' shellprocess
# strips the live-only bits from the target.)
if [[ "$(tty)" == /dev/tty1 ]] && [[ -z "${WAYLAND_DISPLAY:-}" ]] && ! pgrep -x cage >/dev/null 2>&1; then
exec tanin-installer
fi
@@ -0,0 +1,5 @@
# Live ISO: auto-launch the TANINUX installer on the first console.
# (Removed from the installed target by Calamares' shellprocess-striplive.)
if [[ "$(tty)" == /dev/tty1 ]] && [[ -z "$WAYLAND_DISPLAY" ]] && ! pgrep -x cage >/dev/null 2>&1; then
exec tanin-installer
fi
@@ -1,4 +1,4 @@
title Arch Linux install medium (%ARCH%, UEFI) title TANINUX install medium (%ARCH%, UEFI)
sort-key 01 sort-key 01
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
@@ -1,4 +1,4 @@
title Arch Linux install medium (%ARCH%, UEFI) with speech title TANINUX install medium (%ARCH%, UEFI) with speech
sort-key 02 sort-key 02
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
+2 -2
View File
@@ -44,13 +44,13 @@ timeout_style=menu
# Menu entries # Menu entries
menuentry "Arch Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { menuentry "TANINUX install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' {
set gfxpayload=keep set gfxpayload=keep
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID%
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
} }
menuentry "Arch Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' { menuentry "TANINUX install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' {
set gfxpayload=keep set gfxpayload=keep
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
+2 -2
View File
@@ -21,13 +21,13 @@ timeout_style=menu
# Menu entries # Menu entries
menuentry "Arch Linux install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' { menuentry "TANINUX install medium (%ARCH%, ${archiso_platform})" --class arch --class gnu-linux --class gnu --class os --id 'archlinux' {
set gfxpayload=keep set gfxpayload=keep
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}" linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}"
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
} }
menuentry "Arch Linux install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' { menuentry "TANINUX install medium with speakup screen reader (%ARCH%, ${archiso_platform})" --hotkey s --class arch --class gnu-linux --class gnu --class os --id 'archlinux-accessibility' {
set gfxpayload=keep set gfxpayload=keep
linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}" accessibility=on linux /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen archisobasedir=%INSTALL_DIR% img_dev=UUID=${archiso_img_dev_uuid} img_loop="${iso_path}" accessibility=on
initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img initrd /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
+7 -1
View File
@@ -16,9 +16,15 @@ airootfs_image_type="squashfs"
airootfs_image_tool_options=('-comp' 'zstd' '-Xcompression-level' '19' '-b' '1M') airootfs_image_tool_options=('-comp' 'zstd' '-Xcompression-level' '19' '-b' '1M')
bootstrap_tarball_compression=('zstd' '-c' '-T0' '--auto-threads=logical' '--long' '-19') bootstrap_tarball_compression=('zstd' '-c' '-T0' '--auto-threads=logical' '--long' '-19')
file_permissions=( file_permissions=(
# --- releng's entries (must keep — we replace releng's profiledef) ---
["/etc/shadow"]="0:0:400" ["/etc/shadow"]="0:0:400"
["/etc/gshadow"]="0:0:400"
["/root"]="0:0:750" ["/root"]="0:0:750"
["/root/.automated_script.sh"]="0:0:755"
["/root/.gnupg"]="0:0:700"
["/usr/local/bin/choose-mirror"]="0:0:755"
["/usr/local/bin/Installation_guide"]="0:0:755"
["/usr/local/bin/livecd-sound"]="0:0:755"
# --- TANINUX additions ---
["/root/customize_airootfs.sh"]="0:0:755" ["/root/customize_airootfs.sh"]="0:0:755"
["/usr/local/bin/tanin-installer"]="0:0:755" ["/usr/local/bin/tanin-installer"]="0:0:755"
) )
+1 -1
View File
@@ -1,6 +1,6 @@
SERIAL 0 115200 SERIAL 0 115200
UI vesamenu.c32 UI vesamenu.c32
MENU TITLE Arch Linux MENU TITLE TANINUX
MENU BACKGROUND splash.png MENU BACKGROUND splash.png
MENU WIDTH 78 MENU WIDTH 78
@@ -1,9 +1,9 @@
LABEL arch_nbd LABEL arch_nbd
TEXT HELP TEXT HELP
Boot the Arch Linux install medium using NBD. Boot the TANINUX install medium using NBD.
It allows you to install Arch Linux or perform system maintenance. It allows you to install TANINUX or perform system maintenance.
ENDTEXT ENDTEXT
MENU LABEL Arch Linux install medium (%ARCH%, NBD) MENU LABEL TANINUX install medium (%ARCH%, NBD)
LINUX ::/%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen LINUX ::/%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen
INITRD ::/%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img INITRD ::/%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% archiso_nbd_srv=${pxeserver} cms_verify=y APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% archiso_nbd_srv=${pxeserver} cms_verify=y
@@ -11,10 +11,10 @@ SYSAPPEND 3
LABEL arch_nfs LABEL arch_nfs
TEXT HELP TEXT HELP
Boot the Arch Linux live medium using NFS. Boot the TANINUX live medium using NFS.
It allows you to install Arch Linux or perform system maintenance. It allows you to install TANINUX or perform system maintenance.
ENDTEXT ENDTEXT
MENU LABEL Arch Linux install medium (%ARCH%, NFS) MENU LABEL TANINUX install medium (%ARCH%, NFS)
LINUX ::/%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen LINUX ::/%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen
INITRD ::/%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img INITRD ::/%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt cms_verify=y APPEND archisobasedir=%INSTALL_DIR% archiso_nfs_srv=${pxeserver}:/run/archiso/bootmnt cms_verify=y
@@ -22,10 +22,10 @@ SYSAPPEND 3
LABEL arch_http LABEL arch_http
TEXT HELP TEXT HELP
Boot the Arch Linux live medium using HTTP. Boot the TANINUX live medium using HTTP.
It allows you to install Arch Linux or perform system maintenance. It allows you to install TANINUX or perform system maintenance.
ENDTEXT ENDTEXT
MENU LABEL Arch Linux install medium (%ARCH%, HTTP) MENU LABEL TANINUX install medium (%ARCH%, HTTP)
LINUX ::/%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen LINUX ::/%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen
INITRD ::/%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img INITRD ::/%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ cms_verify=y APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ cms_verify=y
@@ -1,9 +1,9 @@
LABEL arch LABEL arch
TEXT HELP TEXT HELP
Boot the Arch Linux install medium on BIOS. Boot the TANINUX install medium on BIOS.
It allows you to install Arch Linux or perform system maintenance. It allows you to install TANINUX or perform system maintenance.
ENDTEXT ENDTEXT
MENU LABEL Arch Linux install medium (%ARCH%, BIOS) MENU LABEL TANINUX install medium (%ARCH%, BIOS)
LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen
INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID%
@@ -11,10 +11,10 @@ APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID%
# Accessibility boot option # Accessibility boot option
LABEL archspeech LABEL archspeech
TEXT HELP TEXT HELP
Boot the Arch Linux install medium on BIOS with speakup screen reader. Boot the TANINUX install medium on BIOS with speakup screen reader.
It allows you to install Arch Linux or perform system maintenance with speech feedback. It allows you to install TANINUX or perform system maintenance with speech feedback.
ENDTEXT ENDTEXT
MENU LABEL Arch Linux install medium (%ARCH%, BIOS) with ^speech MENU LABEL TANINUX install medium (%ARCH%, BIOS) with ^speech
LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen LINUX /%INSTALL_DIR%/boot/%ARCH%/vmlinuz-linux-zen
INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img INITRD /%INSTALL_DIR%/boot/%ARCH%/initramfs-linux-zen.img
APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on APPEND archisobasedir=%INSTALL_DIR% archisosearchuuid=%ARCHISO_UUID% accessibility=on
+1 -2
View File
@@ -8,8 +8,7 @@ iso_application="TANINUX (camel) — niri/eww desktop · live + Calamares instal
iso_version="$(date +%Y.%m.%d)" iso_version="$(date +%Y.%m.%d)"
install_dir="tanin" install_dir="tanin"
buildmodes=('iso') buildmodes=('iso')
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' bootmodes=('bios.syslinux' 'uefi.systemd-boot')
'uefi-x64.systemd-boot.esp' 'uefi-x64.systemd-boot.eltorito')
arch="x86_64" arch="x86_64"
pacman_conf="pacman.conf" pacman_conf="pacman.conf"
airootfs_image_type="squashfs" airootfs_image_type="squashfs"