Fix ISO build pipeline for Docker on macOS

- Disable pacman alpm sandbox in Dockerfile (seccomp blocks it in BuildKit)
- Move mkarchiso from RUN to CMD so it runs with --privileged at docker run time
- Fix output path: mkarchiso now writes to /dist (matches volume mount)
- Add syslinux + imlib2 to Docker build packages and live ISO package list
- Copy syslinux/ and efiboot/ boot configs from archiso releng into profile
- Switch deprecated UEFI grub bootmodes to uefi-x64.systemd-boot
- Fix wrong package names: libpam→pam, light→brightnessctl, remove pkexec
- Set SigLevel=Never and hardcode reliable mirrors in profile pacman.conf
- Add mkinitcpio.conf with archiso hook so initrd can mount the live squashfs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
nmemmertandClaude Sonnet 4.6 committed 2026-08-31 08:27:16 -04:00
1 parent e2e8c49a0a
commit 18d3675368
6 files changed
+47 -17

No files matched your search

+1 -1
View File
@@ -66,7 +66,7 @@ docker run \
# ── rename with date tag ────────────────────────────────────────────── # ── rename with date tag ──────────────────────────────────────────────
echo "" echo ""
echo "Step 3/3: Finalizing..." echo "Step 3/3: Finalizing..."
ISO="$(find "$DIST" -name "orionos*.iso" | head -1)" ISO="$(find "$DIST" -iname "*.iso" | head -1)"
if [[ -z "$ISO" ]]; then if [[ -z "$ISO" ]]; then
echo "ERROR: ISO not found in $DIST — check the build output above." echo "ERROR: ISO not found in $DIST — check the build output above."
exit 1 exit 1
+26 -7
View File
@@ -1,9 +1,13 @@
FROM archlinux:latest FROM archlinux:latest
# Disable pacman's alpm sandbox (seccomp-incompatible inside Docker/BuildKit)
RUN echo "DisableSandbox" >> /etc/pacman.conf
# Update and install archiso + OrionOS build dependencies # Update and install archiso + OrionOS build dependencies
RUN pacman -Syu --noconfirm && \ RUN pacman -Syu --noconfirm && \
pacman -S --noconfirm \ pacman -S --noconfirm \
archiso \ archiso \
syslinux \
base-devel \ base-devel \
git \ git \
libx11 \ libx11 \
@@ -11,6 +15,7 @@ RUN pacman -Syu --noconfirm && \
libxfixes \ libxfixes \
libxext \ libxext \
libpng \ libpng \
imlib2 \
dbus \ dbus \
pam \ pam \
fontconfig \ fontconfig \
@@ -30,8 +35,22 @@ WORKDIR /build
# Copy OrionOS source # Copy OrionOS source
COPY . /build/orionos COPY . /build/orionos
# Build OrionOS components # Bootstrap boot loader configs from the installed archiso releng profile.
RUN cd /build/orionos && make 2>&1 | tail -20 # syslinux/ is required for bios.syslinux.mbr; efiboot/ for systemd-boot UEFI.
# Fall back to a minimal loader.conf if releng ships without efiboot/.
RUN cp -r /usr/share/archiso/configs/releng/syslinux \
/build/orionos/iso/profile/ && \
if [ -d /usr/share/archiso/configs/releng/efiboot ]; then \
cp -r /usr/share/archiso/configs/releng/efiboot \
/build/orionos/iso/profile/; \
else \
mkdir -p /build/orionos/iso/profile/efiboot/loader/entries && \
printf 'timeout 4\ndefault arch-*\n' \
> /build/orionos/iso/profile/efiboot/loader/loader.conf; \
fi
# Build OrionOS components (full output — no tail so errors are visible)
RUN cd /build/orionos && make
# Install binaries into the staging root that archiso will include # Install binaries into the staging root that archiso will include
RUN cd /build/orionos && \ RUN cd /build/orionos && \
@@ -44,6 +63,7 @@ RUN cd /build/orionos && \
install -Dm755 orionshot/orionshot /build/orionos/iso/profile/airootfs/usr/local/bin/orionshot && \ install -Dm755 orionshot/orionshot /build/orionos/iso/profile/airootfs/usr/local/bin/orionshot && \
install -Dm755 orionclip/orionclip /build/orionos/iso/profile/airootfs/usr/local/bin/orionclip && \ install -Dm755 orionclip/orionclip /build/orionos/iso/profile/airootfs/usr/local/bin/orionclip && \
install -Dm755 orionpkg/orionpkg /build/orionos/iso/profile/airootfs/usr/local/bin/orionpkg && \ install -Dm755 orionpkg/orionpkg /build/orionos/iso/profile/airootfs/usr/local/bin/orionpkg && \
mkdir -p /build/orionos/iso/profile/airootfs/usr/share/themes/ && \
cp -r themes/OrionOS /build/orionos/iso/profile/airootfs/usr/share/themes/ && \ cp -r themes/OrionOS /build/orionos/iso/profile/airootfs/usr/share/themes/ && \
install -Dm644 themes/picom.conf /build/orionos/iso/profile/airootfs/etc/orionos/picom.conf install -Dm644 themes/picom.conf /build/orionos/iso/profile/airootfs/etc/orionos/picom.conf
@@ -53,10 +73,9 @@ RUN mkdir -p /build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers &&
cp -f /build/orionos/themes/wallpapers/orionos-default.png \ cp -f /build/orionos/themes/wallpapers/orionos-default.png \
/build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers/ 2>/dev/null || true /build/orionos/iso/profile/airootfs/usr/share/orionos/wallpapers/ 2>/dev/null || true
# Build the ISO # Build the ISO at container runtime — mkarchiso needs --privileged (from docker run)
RUN mkarchiso -v \ # Output goes to /dist which build-iso.sh mounts from the host.
CMD mkarchiso -v \
-w /tmp/iso-work \ -w /tmp/iso-work \
-o /output \ -o /dist \
/build/orionos/iso/profile /build/orionos/iso/profile
CMD ["/bin/bash"]
+4
View File
@@ -0,0 +1,4 @@
MODULES=()
BINARIES=()
FILES=()
HOOKS=(base udev microcode archiso block filesystems keyboard)
+4 -3
View File
@@ -24,10 +24,12 @@ libxft
libxfixes libxfixes
libxext libxext
libpng libpng
imlib2
dbus dbus
libpam pam
fontconfig fontconfig
freetype2 freetype2
syslinux
# Desktop utilities # Desktop utilities
feh feh
@@ -40,14 +42,13 @@ alsa-utils
pulseaudio pulseaudio
# Brightness # Brightness
light brightnessctl
# Media playback control # Media playback control
playerctl playerctl
# Arch tools # Arch tools
pacman-contrib pacman-contrib
pkexec
polkit polkit
# System tools # System tools
+11 -4
View File
@@ -1,14 +1,21 @@
[options] [options]
HoldPkg = pacman glibc HoldPkg = pacman glibc
Architecture = auto Architecture = auto
CheckSpace CheckSpace
ParallelDownloads = 5 ParallelDownloads = 5
SigLevel = Never
[core] [core]
Include = /etc/pacman.d/mirrorlist Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
[extra] [extra]
Include = /etc/pacman.d/mirrorlist Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
[multilib] [multilib]
Include = /etc/pacman.d/mirrorlist Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch
Server = https://mirrors.kernel.org/archlinux/$repo/os/$arch
Server = https://mirror.rackspace.com/archlinux/$repo/os/$arch
+1 -2
View File
@@ -9,8 +9,7 @@ iso_version="$(date +%Y.%m)"
install_dir="arch" install_dir="arch"
buildmodes=('iso') buildmodes=('iso')
bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito' bootmodes=('bios.syslinux.mbr' 'bios.syslinux.eltorito'
'uefi-ia32.grub.esp' 'uefi-x64.grub.esp' 'uefi-x64.systemd-boot.esp' 'uefi-x64.systemd-boot.eltorito')
'uefi-ia32.grub.eltorito' 'uefi-x64.grub.eltorito')
arch="x86_64" arch="x86_64"
pacman_conf="pacman.conf" pacman_conf="pacman.conf"
airootfs_image_type="squashfs" airootfs_image_type="squashfs"