No description
This host was configured with `libtool staticlibs`, which KEEPS what Arch strips. Fifty-six of a hundred and fifty-nine packages carried .la files, and nothing reported it until two sub-packages of one source both claimed the same file: /usr/lib/libcrypt.la exists in both 'libxcrypt' and 'libxcrypt-compat' That is what .la files are for -- they record a link line -- so a split library produces two descriptions of itself. Arch removes them because nothing in a modern toolchain reads them and the paths they record are wrong as soon as a package moves. OPTIONS now matches Arch, minus debug and lto: debug wants a source-package pipeline this bootstrap has no use for, and lto doubles a stage whose output stage 2 discards. libnspr4-dev and mercurial came with nss. The nspr distinction is worth keeping: the host had NOTHING, which the ordinary stage-1 rule fixes with a host package. libgcrypt needed a hook because the host had something too OLD -- 1.51 against a floor of 1.56 -- and no installation fixes that. --- FR --- Cet hôte était configuré avec `libtool staticlibs`, qui CONSERVE ce qu'Arch retire. Cinquante-six paquets sur cent cinquante-neuf portaient des fichiers .la, et rien ne l'avait signalé jusqu'à ce que deux sous-paquets d'une même source réclament le même fichier : /usr/lib/libcrypt.la exists in both 'libxcrypt' et 'libxcrypt-compat' C'est à cela que servent les .la — ils consignent une ligne de liaison — donc une bibliothèque scindée produit deux descriptions d'elle-même. Arch les supprime parce que rien dans une chaîne moderne ne les lit et que les chemins qu'ils consignent sont faux dès qu'un paquet se déplace. OPTIONS suit désormais Arch, sauf debug et lto : debug réclame un pipeline de paquets sources dont cet amorçage n'a que faire, et lto double une étape dont l'étage 2 jette la sortie. libnspr4-dev et mercurial sont venus avec nss. La distinction sur nspr mérite d'être gardée : l'hôte n'avait RIEN, ce que la règle ordinaire de l'étage 1 corrige par un paquet hôte. libgcrypt a exigé un crochet parce que l'hôte avait quelque chose de trop VIEUX — 1.51 contre un plancher de 1.56 — et qu'aucune installation ne corrige cela. 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.