No description
Run against stage 2's output for the first time, the check reported: python 17 x s390x-linux-gnu/ filesystem 11 x usr/local/ Both are correct. CPython names two paths after the build triplet on every platform -- the Arch x86_64 package ships _sysconfigdata__linux_x86_64-linux-gnu.py and config-3.14-x86_64-linux-gnu/ -- so the triplet there is CPython's convention, not Debian's layout leaking in. And creating /usr/local's skeleton is what the filesystem package exists for; the FHS requires those directories. Exempted by (package, pattern) pair rather than by package, so python is still checked for lib64 and dist-packages and filesystem for multiarch. A blanket exemption is how a real leak gets waved through -- and this check has now condemned correct code three times: the tcl8.6 grep in sqlite's hook, the intolerant-rm guard in systemd's, and this. With the exemptions, stage 2's 209 packages pass: no multiarch, no lib64, no dist-packages, no usr/local. --- FR --- Passé pour la première fois sur la production de l'étage 2, le test signalait : python 17 x s390x-linux-gnu/ filesystem 11 x usr/local/ Les deux sont justes. CPython nomme deux chemins d'après le triplet de construction sur toute plateforme — le paquet Arch x86_64 livre _sysconfigdata__linux_x86_64-linux-gnu.py et config-3.14-x86_64-linux-gnu/ — le triplet y est donc une convention de CPython, non la disposition de Debian qui s'infiltre. Et créer le squelette de /usr/local est la raison d'être du paquet filesystem ; le FHS l'exige. Exemptés par couple (paquet, motif) et non par paquet : python reste contrôlé pour lib64 et dist-packages, filesystem pour le multiarch. Une exemption globale est la façon dont une vraie fuite passe — et ce test a désormais condamné du code juste trois fois : le grep tcl8.6 du hook sqlite, le garde rm de celui de systemd, et ceci. Avec les exemptions, les 209 paquets de l'étage 2 passent : ni multiarch, ni lib64, ni dist-packages, ni usr/local. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .github/workflows | ||
| arch-kernel | ||
| boot | ||
| patches | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| CODEOWNERS | ||
| Containerfile | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| RELAIS.md | ||
| TODO.md | ||
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.