154fa2f14a
Sibling to kernel-agent PR #8 which lands the scope-tagged board patches + fleet/ampere.yaml manifest. This PR carries the makepkg-side recipe. ## Baseline marfrit/linux-rk3588-marfrit @ f8f3ad9 (mainline v7.0-rc3 + 18 commits): 10 by Markus Fritsche (board DTS + Kconfig + suspend/wakeup + bt) 4 by Shawn Lin (phy: rockchip-snps-pcie3 stability) 2 by Cristian Ciocaltea (clk + dw-dp bridge — Collabora) 1 by Sebastian Reichel (Rock 5 ITX hdmirx — unused by ampere) 1 by Pedro Alves (CLK_SET_RATE_PARENT VOP2 fix) The 6 board-relevant patches (pwm15 pinctrl + RK806 power-off + genbook pwm-fan/speaker/USB-C/lid) are scope-tagged in kernel-agent. The 12 others are 'cherry-picks-in-baseline' currently — splitting them into scope-tagged patches is a follow-up. ## Source distribution The kernel tree isn't pushable to Gitea (boltzmann's working clone is shallow). Tarball (260MB) doesn't belong in marfrit-packages either. Pragmatic shortcut: ship prebuild.sh that produces the tarball locally from $LINUX_RK3588_MARFRIT_TREE (default ~/src/linux-rockchip) just before makepkg runs. PKGBUILD source array references the tarball by name; makepkg picks it up from the PKGBUILD dir. Build flow: cd arch/linux-ampere-fourier ./prebuild.sh # produces 260MB tarball; idempotent w/ sha check makepkg -s --noconfirm Future iteration: host the tarball on Gitea release assets or packages.reauktion.de/sources/ and switch source to URL. ## What the PR ships PKGBUILD — the recipe (linux-rk3588-marfrit @ f8f3ad9) config — snapshot of ampere's /proc/config.gz linux-ampere-fourier.preset — mkinitcpio preset, /boot/firmware/ paths extlinux-add.hook — alpm hook, fires on /boot/firmware/Image* changes extlinux-add.sh — idempotent managed-label injector for /boot/firmware/extlinux/extlinux.conf (vfat on mmcblk0p1, ampere-specific path) prebuild.sh — source-staging helper (see above) README.md — build + install runbook ## ampere-specific boot path differences vs fresnel ampere boots from /boot/firmware/ (vfat partition), not /boot/ (root partition) like fresnel. The PKGBUILD installs Image + initramfs + DTB under /boot/firmware/ directly. The extlinux-add hook fires on /boot/firmware/<X> path changes and edits /boot/firmware/extlinux/extlinux.conf. The mkinitcpio preset writes initramfs to /boot/firmware/. Only one PRESET ('default') — no fallback image — because /boot/firmware is ~1G total and two ~20MB initramfs files plus the DTB and a couple of kernel-image backups would squeeze it tight. ## Out of scope this PR - Ask 2 (VP9 enablement) and Ask 3 (AV1 dec) from kernel-agent issue #6 - Build + publish + install (sequenced after this PR + kernel-agent PR #8 merge) - Splitting the 12 non-board commits into scope-tagged kernel-agent patches
63 lines
2.1 KiB
Bash
63 lines
2.1 KiB
Bash
#!/bin/sh
|
|
# Add / update / remove the linux-ampere-fourier entry in
|
|
# /boot/firmware/extlinux/extlinux.conf. Idempotent. Coexists with
|
|
# the hand-managed labels in that file; never edits them. Default
|
|
# label is NOT touched — user picks at u-boot menu.
|
|
#
|
|
# ampere boots from a vfat partition (mmcblk0p1) mounted at
|
|
# /boot/firmware/, distinct from fresnel's /boot/ on root.
|
|
|
|
set -eu
|
|
|
|
CONF="/boot/firmware/extlinux/extlinux.conf"
|
|
TAG_BEGIN="# >>> linux-ampere-fourier (managed) >>>"
|
|
TAG_END="# <<< linux-ampere-fourier (managed) <<<"
|
|
|
|
# Copy APPEND from the user's `arch_mainline` label so the managed
|
|
# entry inherits the same root= and console= settings the host's
|
|
# bootloader already trusts. Falls back to a CoolPi GenBook default
|
|
# if no arch_mainline label exists (first-time install on a fresh
|
|
# bootloader config).
|
|
EXISTING_APPEND=$(awk '
|
|
/^[[:space:]]*label[[:space:]]+arch_mainline[[:space:]]*$/ { found=1; next }
|
|
found && /^[[:space:]]*append[[:space:]]/ {
|
|
sub(/^[[:space:]]*append[[:space:]]+/, "")
|
|
print
|
|
exit
|
|
}
|
|
/^[[:space:]]*label[[:space:]]/ { found=0 }
|
|
' "$CONF" 2>/dev/null || true)
|
|
|
|
APPEND="${EXISTING_APPEND:-root=LABEL=arch rw rootwait rootfstype=btrfs rootflags=subvol=@,ssd,discard=async console=ttyS2,1500000 console=tty1 consoleblank=0 loglevel=7 cma=256M coherent_pool=2M}"
|
|
|
|
ENTRY=$(cat <<EOF
|
|
${TAG_BEGIN}
|
|
label linux-ampere-fourier
|
|
menu label linux-ampere-fourier (managed)
|
|
kernel /Image-ampere-fourier
|
|
initrd /initramfs-ampere-fourier.img
|
|
fdt /rk3588-coolpi-cm5-genbook.dtb-ampere-fourier
|
|
append ${APPEND}
|
|
${TAG_END}
|
|
EOF
|
|
)
|
|
|
|
# Strip any prior managed block, then append fresh
|
|
TMP=$(mktemp)
|
|
awk -v b="$TAG_BEGIN" -v e="$TAG_END" '
|
|
$0==b{skip=1; next}
|
|
$0==e{skip=0; next}
|
|
!skip{print}
|
|
' "$CONF" > "$TMP"
|
|
|
|
# Post-Remove: kernel files absent → don't re-add the entry
|
|
if [ -f "/boot/firmware/Image-ampere-fourier" ] \
|
|
&& [ -f "/boot/firmware/rk3588-coolpi-cm5-genbook.dtb-ampere-fourier" ]; then
|
|
printf '%s\n' "$ENTRY" >> "$TMP"
|
|
echo "linux-ampere-fourier: extlinux entry updated"
|
|
else
|
|
echo "linux-ampere-fourier: kernel files absent, entry removed"
|
|
fi
|
|
|
|
mv "$TMP" "$CONF"
|