No description
Find a file
Mathieu Benoit 00c3909df5 [ADD] TODO.md: track every divergence from upstream Arch
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
2026-08-16 05:47:47 -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 [ADD] TODO.md: track every divergence from upstream Arch 2026-08-16 05:47:47 -04:00
scripts [FIX] clean the source tree between attempts; strip gcc _pick lines 2026-08-16 02:23:01 -04:00
.env.example full boot with systemd 2025-06-05 12:32:34 +02: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
TODO.md [ADD] TODO.md: track every divergence from upstream Arch 2026-08-16 05:47:47 -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.