No description
CHROOT_PKGS grew one name at a time, each added because a build asked for it. It reached 151 of the 190 packages stage 1 had produced, and the absent ones broke builds without ever being named: openldap: configure: error: --enable_argon2=yes requires --with-argon2 while the PKGBUILD already passes --with-argon2=libsodium and libsodium sat in repo/s390x, simply not installed. configure looked for a library, did not find it, and reported a missing OPTION. krb5's "libldap not found", libsasl's "Could not locate OpenLDAP", lvm2's "libudev >= 143" and audit's undefined SASL symbol are the same sentence in different words. Stage 2 builds with --nodeps, so nothing installs a build dependency for it. Dropping --nodeps would need a working in-chroot pacman, and that pacman is one of the packages being rebuilt. So: install the distribution we have. Four names out of 190 cannot coexist -- two of them only visible to a real install, since -Syp says nothing about file conflicts. 187 packages installed, no fallback. --- FR --- CHROOT_PKGS a grandi un nom à la fois, chacun ajouté parce qu'une construction le demandait. Il atteignait 151 des 190 paquets produits par l'étage 1, et les absents cassaient des constructions sans jamais être nommés : openldap: configure: error: --enable_argon2=yes requires --with-argon2 alors que le PKGBUILD passe déjà --with-argon2=libsodium et que libsodium était dans repo/s390x, simplement pas installé. configure cherchait une bibliothèque, ne la trouvait pas, et signalait une OPTION manquante. Le « libldap not found » de krb5, le « Could not locate OpenLDAP » de libsasl, le « libudev >= 143 » de lvm2 et le symbole SASL indéfini d'audit sont la même phrase autrement dite. L'étage 2 bâtit avec --nodeps : rien n'installe de dépendance de compilation pour lui. Y renoncer exigerait un pacman fonctionnel dans le chroot, et ce pacman est l'un des paquets à rebâtir. Donc : installer la distribution que nous avons. Quatre noms sur 190 ne peuvent coexister — dont deux visibles seulement à l'installation réelle, -Syp ne disant rien des conflits de fichiers. 187 paquets installés, aucun repli. Assisted-by: Claude Opus 5 |
||
|---|---|---|
| .github/workflows | ||
| arch-kernel | ||
| boot | ||
| patches | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| CODEOWNERS | ||
| Containerfile | ||
| LICENSE | ||
| Makefile | ||
| README.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.