🔒 Repository is read-only – file editing is disabled.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
pkgname: kernel
pkgver: '7.2.5'
pkgrel: '2'
pkgdesc: 'Pagan Linux kernel (rolling) – układ DOKŁADNIE jak w obrazie ISO: /boot/vmlinuz-<ver>-pagan + /usr/lib/modules/<ver>-pagan + źródła DKMS w /usr/src/kernel.'
url: 'https://www.kernel.org'
arch: x86_64
license:
- GPL-2.0-only
depends:
- kmod
# `pag install linux` musi dalej działać (stare skrypty, pagan-drivers, haki) –
# tak samo nazywa ten pakiet build ISO (install_rolling_kernel w build-pagan.sh,
# które ustawia provides:["linux"]).
provides:
- linux
makedepends:
- gmp
- mpc
- bison
- flex
- perl
- libelf
- diffutils
- tar
- rustc
source:
- 'init_path.patch'
- 'https://www.kernel.org/pub/linux/kernel/v7.x/linux-7.2.tar.xz'
- 'https://www.kernel.org/pub/linux/kernel/v7.x/patch-${pkgver}.xz'
- config
sha256sums:
- d854364371f89cd735d15a6877b4bbe4bce133cd3167edef95ba5930f81bedf1
- f9fef3d14c0df53819026f4be74459835c2a0b0dcbf5b5bbd9ea19f0829402b3
- 12398c7d02541f75cc91cb1103bbafa4faa32e04c49d71120229afc3ea13e5bd
- cb221796a56be8895c13a4d898963c8726fdddb565dc3b3fe290ca2620f58690
# Hooki uruchamiają się na ŻYWYM systemie po `pag install kernel` (rolling) i
# muszą zostawić /boot w stanie, który zrozumie /etc/grub.d/10_linux.
hooks:
'post-install': |
export LC_ALL=C LANG=C
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# 1) build/source dla każdego jądra (DKMS, moduły out-of-tree). Symlinki
# WZGLĘDNE – pag blokuje absolutne ścieżki w pakiecie.
for _m in /usr/lib/modules/*; do
[ -d "$_m" ] || continue
[ -d /usr/src/kernel ] || continue
ln -sfn ../../../src/kernel "$_m/build"
ln -sfn ../../../src/kernel "$_m/source"
done
# 2) initramfs (pagan-initramfs → mkinitramfs → dracut → mkinitcpio)
if command -v pagan-initramfs >/dev/null 2>&1; then
pagan-initramfs || true
elif command -v mkinitramfs >/dev/null 2>&1; then
mkinitramfs "$(ls /usr/lib/modules | grep -vx 'kernel-lts' | head -1)" || true
fi
# 3) Aliasy initramfs pod nazwami z wersją. 10_linux szuka initrd WYŁĄCZNIE
# jako initrd.img-<ver>/initramfs-<ver>.img; bez aliasu wpis w menu nie ma
# linii `initrd` → panika jądra („VFS: Cannot open root device”).
if [ -f /boot/initramfs.img ]; then
for _k in /boot/vmlinuz*; do
[ -e "$_k" ] || continue
_v="$(basename "$_k" | sed -e 's,^[^0-9]*-,,g')"
[ -n "$_v" ] || continue
[ "$_v" != "$(basename "$_k")" ] || continue
[ -e "/boot/initramfs-$_v.img" ] || ln -sfn initramfs.img "/boot/initramfs-$_v.img"
[ -e "/boot/initrd.img-$_v" ] || ln -sfn initramfs.img "/boot/initrd.img-$_v"
done
fi
# 4) GRUB: `pag grub-update` NIE może działać w trakcie `pag install`
# (lock PAG-a jest trzymany) – dlatego sprawdzamy brak lockfile.
if command -v pag >/dev/null 2>&1 && [ ! -f /var/lib/pag/pag.lock ]; then
pag grub-update || true
fi
build: |
mkdir -p ${PKGDIR}/{boot,usr/{share/doc,src,lib/modules}}
bsdtar -p -o -C . -xf linux-7.2.tar.xz
cd linux-7.2
[ -f ../patch-${pkgver}.xz ] && \
xz -d -c ../patch-${pkgver}.xz | patch -Np1
patch -Np1 -i ../init_path.patch
# Konfiguracja: identyczna z build-pagan.sh (config = config-<ver>-pagan z ISO).
# CONFIG_LOCALVERSION="-pagan" → KERNELRELEASE = <ver>-pagan (np. 7.2.5-pagan).
cp ../config .config
make olddefconfig
diff -u ../config .config || true
KERNELRELEASE=$(make -s kernelrelease)
IMAGENAME=$(make -s image_name)
make
cp .config config
ZSTD_CLEVEL=19 \
make INSTALL_MOD_PATH=${PKGDIR}/usr \
INSTALL_MOD_STRIP=1 \
DEPMOD=/dev/null modules_install
depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
# ── /boot: nazwy plików DOKŁADNIE jak w obrazie ISO ──────────────────────
# GRUB (/etc/grub.d/10_linux) znajduje jądra WYŁĄCZNIE po `vmlinuz-*`.
# Poprzednie `kernel-stable` było dla GRUB-a niewidoczne, więc po `pag upgrade`
# system startował ze STARYM jądrem z obrazu (albo nie startował wcale).
cp System.map ${PKGDIR}/boot/System.map-$KERNELRELEASE
ln -sf System.map-$KERNELRELEASE ${PKGDIR}/boot/System.map
cp .config ${PKGDIR}/boot/config-$KERNELRELEASE
cp $IMAGENAME ${PKGDIR}/boot/vmlinuz-$KERNELRELEASE
ln -sf vmlinuz-$KERNELRELEASE ${PKGDIR}/boot/vmlinuz-linux
# ── źródła dla DKMS: /usr/src/kernel (SYSSRC dla nvidia-kernel/nvidia-dkms).
cd ..
mv linux-7.2 ${PKGDIR}/usr/src/kernel
mv ${PKGDIR}/usr/src/kernel/Documentation ${PKGDIR}/usr/share/doc/kernel
# Konwencja „linux-headers-$(uname -r)”, której szukają hooki ISO i DKMS.
ln -sfn kernel ${PKGDIR}/usr/src/linux-headers-$KERNELRELEASE
# ── moduły: /usr/lib/modules/<ver>-pagan (BEZ zmiany nazwy na „kernel”) ──
# Ten sam katalog co w obrazie ISO → `pag upgrade` podmienia jądro W MIEJSCU,
# a moduły NVIDIA/DKMS trafiają tam, gdzie faktycznie szuka ich jądro.
cd ${PKGDIR}/usr/lib/modules
rm -f $KERNELRELEASE/build $KERNELRELEASE/source
ln -sfn ../../../src/kernel $KERNELRELEASE/build
ln -sfn ../../../src/kernel $KERNELRELEASE/source
# Firmware are in linux-firmware
rm -rf ${PKGDIR}/lib/firmware
package: |
true