No description
A port that does not track what it gave up drifts silently, and the gap is found years later by whoever needs the missing feature. Every deliberate difference is now written down, with the hook that implements it and what it would take to close it. The document separates two kinds, because the difference matters. DEFERRED entries were dropped to get the bootstrap moving -- nothing about s390x prevents them, they cost build time or a host dependency, and they should come back. ARCHITECTURAL entries drop something that is x86-specific by nature; there is nothing to restore, and they are listed so nobody spends an afternoon rediscovering why. A third section covers what is neither: environment facts, like dev.gnupg.org being unreachable from this host, which close themselves elsewhere. curl joins the deferred list. Arch builds HTTP/3 through nghttp3 and ngtcp2; Ubuntu packages neither, and building both to reach HTTP/3 is a detour when pacman and ERPLibre talk to plain HTTPS mirrors. The dependency declarations and the soname map go with the configure flags: left in place, the package would claim to need libraries it no longer links. --- FR --- Un portage qui ne trace pas ce qu il a abandonne derive en silence, et l ecart se decouvre des annees plus tard par celui a qui la fonctionnalite manque. Chaque difference deliberee est desormais consignee, avec le crochet qui la met en oeuvre et ce qu il faudrait pour la refermer. Le document separe deux natures, parce que la distinction compte. Les entrees DIFFEREES ont ete abandonnees pour faire avancer l amorcage -- rien dans s390x ne s y oppose, elles coutent du temps de compilation ou une dependance d hote, et elles doivent revenir. Les entrees ARCHITECTURALES retirent ce qui est par nature propre a x86 ; il n y a rien a restaurer, et elles figurent la pour que personne ne passe un apres-midi a redecouvrir pourquoi. Une troisieme section couvre ce qui n est ni l un ni l autre : des faits d environnement, comme dev.gnupg.org injoignable depuis cet hote, qui se refermeront ailleurs. curl rejoint la liste des differes. Arch batit HTTP/3 par nghttp3 et ngtcp2 ; Ubuntu n empaquete ni l un ni l autre, et les batir tous deux pour atteindre HTTP/3 est un detour quand pacman et ERPLibre parlent a des miroirs HTTPS ordinaires. Les declarations de dependance et la table de sonames partent avec les options de configuration : laissees en place, le paquet pretendrait dependre de bibliotheques qu il ne lie plus. 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.