No description
This section was written twice, and the first version was wrong instructively. gold would not link: s390.cc references gold::gold_error_at_location<32, true>, and those instantiations exist only when a 32-bit s390 target is configured. The PKGBUILD asked for --enable-targets=x86_64-pep, so the first fix translated that to s390-linux-gnu -- the honest-looking equivalent. bfd's configure answered: *** Specify --enable-obsolete to build it anyway. *** Support will be REMOVED in the next major release of BINUTILS, *** unless a maintainer comes forward. 32-bit s390 is obsolete in binutils. So gold cannot be built here without enabling a target upstream has announced it is deleting -- and gold is itself deprecated, with bfd ld already the default (--enable-ld=default). Turning on one deprecated thing to build another is not a trade worth making. gold is dropped and the extra target list keeps only bpf-unknown-none. What is lost is /usr/bin/ld.gold, which nothing here invokes. Recorded rather than hidden: the stage-2 binutils will not match Arch's file list, and this is why. --- FR --- Cette section a été écrite deux fois, et la première version se trompait de façon instructive. gold ne se liait pas : s390.cc référence gold::gold_error_at_location<32, true>, instanciations qui n'existent que si une cible s390 32 bits est configurée. Le PKGBUILD demandait --enable-targets=x86_64-pep, donc le premier correctif l'a traduit en s390-linux-gnu — l'équivalent d'apparence honnête. Le configure de bfd a répondu : *** Specify --enable-obsolete to build it anyway. *** Support will be REMOVED in the next major release of BINUTILS, *** unless a maintainer comes forward. Le s390 32 bits est obsolète dans binutils. gold ne peut donc pas être bâti ici sans activer une cible dont l'amont annonce la suppression — et gold est lui-même abandonné, ld de bfd étant déjà le défaut (--enable-ld=default). Activer un objet déprécié pour en bâtir un autre n'est pas un échange qui vaille. gold est retiré et la liste de cibles ne garde que bpf-unknown-none. Ce qui est perdu est /usr/bin/ld.gold, que rien ici n'invoque. Consigné plutôt que masqué : le binutils d'étage 2 ne correspondra pas à la liste de fichiers d'Arch, et voici pourquoi. 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.