Boot the T2 kernel the ISO says it boots
Every boot entry has named vmlinuz-linux-t2 since0638855, but the file has contained stock Arch. Verified against the shipped ISO: arch/boot/x86_64/vmlinuz-linux-t2: bzImage, version 7.1.5-arch1-1 (linux@archlinux) while the mirror carries linux-t2-7.1.4-2. T2 MacBooks have been installing with no keyboard or trackpad in the live environment. Kernel packages ship nothing in /boot — only usr/lib/modules/<kver>/vmlinuz. install_kernel() in /usr/share/libalpm/scripts/mkinitcpio sources /etc/mkinitcpio.d/<pkgbase>.preset and copies THAT package's kernel to whatever ALL_kver names, whenever is_kernelcopy() sees an unowned absolute path. Our file was named linux.preset, so it overrode releng's copy of the same name and pointed the STOCK kernel at the T2 filenames. linux-t2's own generated preset writes those same two paths, and stock won.c23e0e7introduced it a week after0638855added T2 support, so the feature worked for exactly seven days: before the preset existed, releng's linux.preset kept the stock kernel on its own filenames and linux-t2's generated preset produced the real thing. The fix is the filename. releng's linux.preset takes over the stock kernel again, which now writes /boot/vmlinuz-linux and initramfs-linux.img instead of squatting on the T2 names — so the ISO grows by one kernel and one archiso initramfs. That cost is not free and is worth revisiting: the stock kernel is in the live root only because releng's broadcom-wl hard-depends on it, and broadcom-wl is a prebuilt module for that kernel which cannot load on the T2 one we now boot. Dropping both is ~147MB and old Broadcom Macs lose live Wi-Fi. Boot the ISO on a T2 Mac before trusting this; the version string is only evidence that the right kernel ships, not that it works. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
89245f44ec
commit
ed710a3b41
3 files changed
+21
-12
No files matched your search
@@ -0,0 +1,18 @@
|
||||
# mkinitcpio preset file for the 'linux-t2' package on archiso
|
||||
#
|
||||
# The filename is the pkgbase, and that is load-bearing. Kernel packages ship
|
||||
# nothing in /boot — they only install usr/lib/modules/<kver>/vmlinuz — so
|
||||
# mkinitcpio's alpm hook sources /etc/mkinitcpio.d/<pkgbase>.preset and copies
|
||||
# THAT package's kernel to whatever ALL_kver names (is_kernelcopy in
|
||||
# /usr/share/libalpm/scripts/mkinitcpio). Named linux.preset, this pointed the
|
||||
# stock kernel at the T2 filenames, so the ISO booted stock Arch while every
|
||||
# boot entry said linux-t2 and T2 Macs got no keyboard or trackpad.
|
||||
#
|
||||
# releng ships its own linux.preset for the stock kernel; leave it alone.
|
||||
|
||||
PRESETS=('archiso')
|
||||
|
||||
ALL_kver='/boot/vmlinuz-linux-t2'
|
||||
archiso_config='/etc/mkinitcpio.conf.d/archiso.conf'
|
||||
|
||||
archiso_image="/boot/initramfs-linux-t2.img"
|
||||
@@ -1,9 +0,0 @@
|
||||
# mkinitcpio preset file for the 'linux' package on archiso
|
||||
|
||||
PRESETS=('archiso')
|
||||
|
||||
ALL_kver='/boot/vmlinuz-linux-t2'
|
||||
archiso_config='/etc/mkinitcpio.conf.d/archiso.conf'
|
||||
|
||||
archiso_image="/boot/initramfs-linux-t2.img"
|
||||
|
||||
@@ -76,9 +76,9 @@ aarch64 has no BIOS — only UEFI. Drop the syslinux path entirely on ARM.
|
||||
|
||||
The cleanest cut: keep one `grub.cfg` shared, strip the x86 shell/memtest fragments at build time when `OMARCHY_ARCH=aarch64`. Don't fork the file.
|
||||
|
||||
### 6. mkinitcpio preset — `configs/airootfs/etc/mkinitcpio.d/linux.preset`
|
||||
### 6. mkinitcpio preset — `configs/airootfs/etc/mkinitcpio.d/linux-t2.preset`
|
||||
|
||||
References `vmlinuz-linux-t2` and `initramfs-linux-t2.img` (lines 5, 8). For aarch64, swap to `vmlinuz-linux` / `initramfs-linux.img`. Generate the file at build time from a template, keyed on arch.
|
||||
Names `vmlinuz-linux-t2` and `initramfs-linux-t2.img`. The filename is the pkgbase and the alpm hook keys off it, so aarch64 does not rename this file — it simply does not ship it, and releng's own `linux.preset` covers the stock kernel. Drop `linux-t2` from `arch_packages` on aarch64 and the boot entries point at `vmlinuz-linux` / `initramfs-linux.img`.
|
||||
|
||||
### 7. Configurator — `configs/airootfs/root/configurator`
|
||||
|
||||
@@ -145,7 +145,7 @@ Code:
|
||||
- `configs/efiboot/loader/loader.conf` — per-arch default entry
|
||||
- `configs/efiboot/loader/entries/01-archiso-x86_64-linux.conf` — generate aarch64 sibling at build time
|
||||
- `configs/grub/grub.cfg`, `loopback.cfg` — strip x86-only fragments on aarch64
|
||||
- `configs/airootfs/etc/mkinitcpio.d/linux.preset` — template by arch (drop linux-t2 on aarch64)
|
||||
- `configs/airootfs/etc/mkinitcpio.d/linux-t2.preset` — omit on aarch64 (drop linux-t2 there; releng's linux.preset covers the stock kernel)
|
||||
- `configs/airootfs/root/configurator` — branch archinstall JSON mirror list on `uname -m`; optionally guard lspci T2 probe
|
||||
- `.github/workflows/nightly-build.yml` — matrix x86_64/aarch64
|
||||
|
||||
|
||||
Reference in new issue
Block a user