No description
Deferred, Architectural and Environment all assume someone made a choice. Four divergences this round were made by nobody: a build option whose DEFAULT is computed from the build machine, so installing an unrelated Ubuntu package changes what a PKGBUILD produces. libdir and python.platlibdir come from meson asking dpkg-architecture. EXPAT_BUILD_DOCS comes from whichever docbook converter is on PATH. split-bin comes from whether the builder's /usr/sbin is a symlink. None of them fail loudly, and one waited twenty-nine hours before it did. They get their own section because the "To close" is the same for all four and different from the others: stage 2 builds inside an Arch root, where every one of these defaults is already right. Until then, pin rather than hope. Six entries added elsewhere, including two that are deliberately NOT fixed: makedb's libselinux and the bare sonames !autodeps leaves behind. --- FR --- Deferred, Architectural et Environment supposent tous que quelqu'un a choisi. Quatre divergences de ce tour n'ont été décidées par personne : une option dont la valeur PAR DÉFAUT est calculée depuis la machine de build, si bien qu'installer un paquet Ubuntu sans rapport change ce qu'un PKGBUILD produit. libdir et python.platlibdir viennent de meson interrogeant dpkg-architecture. EXPAT_BUILD_DOCS vient du convertisseur docbook présent dans le PATH. split-bin vient de savoir si le /usr/sbin du constructeur est un lien. Aucune n'échoue bruyamment, et l'une a attendu vingt-neuf heures. Elles ont leur section parce que le « pour clore » est le même pour les quatre et diffère des autres : l'étage 2 construit dans une racine Arch, où chacun de ces défauts est déjà le bon. D'ici là, épingler plutôt qu'espérer. Six entrées ailleurs, dont deux délibérément NON corrigées : le libselinux de makedb et les sonames sans version que laisse !autodeps. 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.