No description
grep is the only package here that INSPECTS the version of the m4 macros its build host provides, and refuses to proceed: ./bootstrap: do not use pkg.m4 serial 12 That is not an s390x incompatibility -- the same refusal happens on any Ubuntu host, x86 included. The release tarball is already bootstrapped, so re-running ./bootstrap regenerates what is already there and skipping it costs nothing. util-linux hits the lib64-versus-lib divergence already handled in gcc.sh. Here it surfaces as rm: cannot remove '.../usr/lib/lib*.la': No such file or directory a glob that matched nothing, which rm reports as a missing file rather than an empty expansion -- so the error names a path that was never going to exist. Same remedy: merge the trees before package() touches anything, leaving the upstream paths working unchanged. That divergence has now appeared twice. If a third package hits it, it belongs in the shared bootstrap rather than in per-package hooks. --- FR --- grep est le seul paquet ici a EXAMINER la version des macros m4 que lui fournit son hote, et a refuser de poursuivre : ./bootstrap: do not use pkg.m4 serial 12 Ce n est pas une incompatibilite s390x -- le meme refus survient sur n importe quel hote Ubuntu, x86 compris. L archive de version est deja amorcee, donc relancer ./bootstrap regenere ce qui existe deja et le sauter ne coute rien. util-linux rencontre la divergence lib64 contre lib deja traitee dans gcc.sh. Elle apparait ici sous la forme rm: cannot remove '.../usr/lib/lib*.la': No such file or directory un motif qui ne correspond a rien, que rm signale comme un fichier manquant plutot que comme une expansion vide -- l erreur nomme donc un chemin qui n allait jamais exister. Meme remede : fusionner les arbres avant que package() ne touche a quoi que ce soit. Cette divergence est apparue deux fois. Si un troisieme paquet la rencontre, sa place est dans l amorcage partage et non dans des crochets par paquet. 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.