No description
Find a file
Mathieu Benoit 51384a64af [ADD] stage 2 is complete: 164 of 164, and it resolves, is clean, and runs
Every package in the list has been rebuilt inside the chroot by the compiler,
linker and libc it produced. The verification, run against repo2 rather than
asserted:

  RESOLVE   resolver satisfied (101 packages), --nodeps OFF
  ARTEFACT  no multiarch, no lib64, no dist-packages, no usr/local
  SONAME    every requested soname has a provider in the repository
  RUN       102 packages installed; bash 5.3.15, uname s390x, glibc 2.44,
            ls, tar, find, sed and pacman all execute

SONAME is the one that matters most. Stage 1 shipped nine sonames at the host's
version and three with no provider at all, and the whole premise of a second
stage was that rebuilding inside the result dissolves them. It did: zero of
either.

python was the last holdout and the most instructive: POSIX_SEMAPHORES_NOT_ENABLED
is now 0. It had been 1 for days because `mount --bind /dev` does not carry
submounts, so the chroot saw an empty 0755 /dev/shm, CPython's configure got
EACCES from sem_open, and _multiprocessing was compiled without SemLock -- a
package that installed cleanly, imported cleanly, and was wrong.

--- FR ---

Chaque paquet de la liste a été rebâti dans le chroot par le compilateur, le lieur
et la libc qu'il a produits. La vérification, passée sur repo2 plutôt
qu'affirmée :

  RESOLVE   résolveur satisfait (101 paquets), --nodeps éteint
  ARTEFACT  ni multiarch, ni lib64, ni dist-packages, ni usr/local
  SONAME    chaque soname demandé a un fournisseur dans le dépôt
  RUN       102 paquets installés ; bash 5.3.15, uname s390x, glibc 2.44,
            ls, tar, find, sed et pacman s'exécutent tous

SONAME est le contrôle qui compte. L'étage 1 livrait neuf sonames à la version de
l'hôte et trois sans aucun fournisseur, et toute la raison d'être d'un second
étage était que rebâtir dans le résultat les dissout. C'est fait : zéro des deux.

python fut le dernier et le plus instructif : POSIX_SEMAPHORES_NOT_ENABLED vaut
désormais 0. Il valait 1 depuis des jours parce que `mount --bind /dev` ne porte
pas les sous-montages : le chroot voyait un /dev/shm vide en 0755, le configure de
CPython recevait EACCES de sem_open, et _multiprocessing était compilé sans
SemLock — un paquet qui s'installait proprement, s'importait proprement, et était
faux.

Assisted-by: Claude Opus 5
2026-08-24 01:35:16 -04:00
.github/workflows making the house a home 2026-01-27 23:26:31 +01:00
arch-kernel making the house a home 2026-01-27 23:26:31 +01:00
boot making the house a home 2026-01-27 23:26:31 +01:00
patches [FIX] systemd: sixteen man page operations, across five sub-packages 2026-08-24 00:33:37 -04:00
scripts [ADD] stage 2 is complete: 164 of 164, and it resolves, is clean, and runs 2026-08-24 01:35:16 -04:00
.env.example [ADD] upstream.lock, and keep the machine out of the repository 2026-08-22 22:52:04 -04:00
.gitignore making the house a home 2026-01-27 23:26:31 +01:00
CODEOWNERS making the house a home 2026-01-27 23:26:31 +01:00
Containerfile making the house a home 2026-01-27 23:26:31 +01:00
LICENSE use arch kernel patches 2025-06-02 21:53:33 +02:00
Makefile making the house a home 2026-01-27 23:26:31 +01:00
README.md making the house a home 2026-01-27 23:26:31 +01:00
RELAIS.md [ADD] upstream.lock, and keep the machine out of the repository 2026-08-22 22:52:04 -04:00
TODO.md [FIX] help2man was uninstallable, which stopped the whole pass 2026-08-21 00:33:07 -04:00

Arch Linux s390x

A port of Arch Linux to IBM s390x mainframe architecture with systemd support.

Boots a full Arch Linux system on IBM mainframes (or QEMU s390x emulation) using a hybrid build: cross-compilation for the kernel, native s390x compilation on z/VM for userspace.

Quick Start

make container        # build dev container (first time)
cp .env.example .env  # configure z/VM access
make all              # build kernel + initramfs + systemd
make test-systemd     # boot it

What Works

  • Arch Linux kernel 6.18.6-arch1 with Arch patches, cross-compiled
  • Initramfs via modified mkinitcpio
  • Static busybox built natively on z/VM, 2.3MB
  • Root filesystem with ext4, switch_root to real rootfs
  • Systemd as PID 1

Pacman, bash, and GNU coreutils are not yet ported.

Build System

The build uses two tiers:

Cross-compilation (x86_64 host): Kernel is built in a Fedora 43 container with s390x-linux-gnu-gcc. Initramfs is generated with a patched mkinitcpio that handles cross-architecture binary injection.

Native compilation (s390x z/VM): Busybox and systemd must be built on real s390x hardware. The z/VM system runs RHEL 9.6 with GCC 11.5.0. Scripts handle SSH deployment and retrieval automatically via .env configuration.