← recipes

Commit 582c488

4
plików
+105
dodanych
-46
usuniętych
@@ -1,15 +1,19 @@
1 1 pkgname: nvidia-dkms
2 2 pkgver: '610.57.04'
3 -pkgrel: '1'
3 +pkgrel: '2'
4 4 pkgdesc: NVIDIA drivers, xorg config, udev rules and DKMS kernel modules
5 5 url: https://www.nvidia.com/en-us/drivers/unix/
6 6 arch: x86_64
7 7 license:
8 8 - custom
9 9
10 +# `kernel` (a NIE `linux-headers`) – DKMS musi budować pod TO SAMO jądro, które
11 +# dostarcza `nvidia-kernel` i które jest w obrazie ISO. Wcześniejszy
12 +# `linux-headers` to meta na `kernel-lts` (6.18), więc moduły powstawały pod
13 +# inne jądro niż uruchomione („moduły nvidia zbudowane pod …” w pagan-drivers).
10 14 depends:
15 +- kernel
11 16 - dkms
12 -- linux-headers
13 17 makedepends:
14 18 - grep
15 19
@@ -149,8 +153,9 @@ hooks:
149 153 ldconfig
150 154 udevadm control --reload-rules || true
151 155 pre-remove: |
152 - # Usunięcie modułów z DKMS przed odinstalowaniem pakietu
156 + # Usunięcie modułów z DKMS PRZED odinstalowaniem pakietu. Wcześniej ta
157 + # komenda leżała w `package:` (faza BUDOWY), więc przy odinstalowaniu moduły
158 + # zostawały w /usr/lib/modules i psuły `depmod`/kolejne wersje sterownika.
159 + dkms remove -m nvidia -v 610.57.04 --all || true
153 160 package: |
154 - true
155 -
156 - dkms remove -m nvidia -v 610.57.04 --all || true
161 + true
@@ -1,12 +1,20 @@
1 1 pkgname: kernel
2 2 pkgver: '7.2.5'
3 -pkgrel: '1'
4 -pkgdesc: 'Pagan Linux kernel (rolling) – strojenie identyczne z ISO buildera (CONFIG_LOCALVERSION=-pagan, wbudowane squashfs/exFAT/NVMe/USB).'
3 +pkgrel: '2'
4 +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.'
5 5 url: 'https://www.kernel.org'
6 6 arch: x86_64
7 +license:
8 +- GPL-2.0-only
7 9 depends:
8 10 - kmod
9 11
12 +# `pag install linux` musi dalej działać (stare skrypty, pagan-drivers, haki) –
13 +# tak samo nazywa ten pakiet build ISO (install_rolling_kernel w build-pagan.sh,
14 +# które ustawia provides:["linux"]).
15 +provides:
16 +- linux
17 +
10 18 makedepends:
11 19 - gmp
12 20 - mpc
@@ -30,13 +38,48 @@ sha256sums:
30 38 - 12398c7d02541f75cc91cb1103bbafa4faa32e04c49d71120229afc3ea13e5bd
31 39 - cda3a82fbf2f453ab86870706a647a2bf4f6bad91088aa679c06122d3a6d828c
32 40
41 +# Hooki uruchamiają się na ŻYWYM systemie po `pag install kernel` (rolling) i
42 +# muszą zostawić /boot w stanie, który zrozumie /etc/grub.d/10_linux.
33 43 hooks:
34 44 'post-install': |
35 - mkinitramfs $(ls /usr/lib/modules | grep -vx 'kernel' | head -1)
36 - rm -f boot/initrd-stable
37 - mv boot/initrd-$(ls /usr/lib/modules | grep -vx 'kernel' | head -1) boot/initrd-stable
38 - 'post-remove': |
39 - rm -f boot/initrd-stable
45 + export LC_ALL=C LANG=C
46 + export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
47 +
48 + # 1) build/source dla każdego jądra (DKMS, moduły out-of-tree). Symlinki
49 + # WZGLĘDNE – pag blokuje absolutne ścieżki w pakiecie.
50 + for _m in /usr/lib/modules/*; do
51 + [ -d "$_m" ] || continue
52 + [ -d /usr/src/kernel ] || continue
53 + ln -sfn ../../../src/kernel "$_m/build"
54 + ln -sfn ../../../src/kernel "$_m/source"
55 + done
56 +
57 + # 2) initramfs (pagan-initramfs → mkinitramfs → dracut → mkinitcpio)
58 + if command -v pagan-initramfs >/dev/null 2>&1; then
59 + pagan-initramfs || true
60 + elif command -v mkinitramfs >/dev/null 2>&1; then
61 + mkinitramfs "$(ls /usr/lib/modules | grep -vx 'kernel-lts' | head -1)" || true
62 + fi
63 +
64 + # 3) Aliasy initramfs pod nazwami z wersją. 10_linux szuka initrd WYŁĄCZNIE
65 + # jako initrd.img-<ver>/initramfs-<ver>.img; bez aliasu wpis w menu nie ma
66 + # linii `initrd` → panika jądra („VFS: Cannot open root device”).
67 + if [ -f /boot/initramfs.img ]; then
68 + for _k in /boot/vmlinuz*; do
69 + [ -e "$_k" ] || continue
70 + _v="$(basename "$_k" | sed -e 's,^[^0-9]*-,,g')"
71 + [ -n "$_v" ] || continue
72 + [ "$_v" != "$(basename "$_k")" ] || continue
73 + [ -e "/boot/initramfs-$_v.img" ] || ln -sfn initramfs.img "/boot/initramfs-$_v.img"
74 + [ -e "/boot/initrd.img-$_v" ] || ln -sfn initramfs.img "/boot/initrd.img-$_v"
75 + done
76 + fi
77 +
78 + # 4) GRUB: `pag grub-update` NIE może działać w trakcie `pag install`
79 + # (lock PAG-a jest trzymany) – dlatego sprawdzamy brak lockfile.
80 + if command -v pag >/dev/null 2>&1 && [ ! -f /var/lib/pag/pag.lock ]; then
81 + pag grub-update || true
82 + fi
40 83
41 84 build: |
42 85 mkdir -p ${PKGDIR}/{boot,usr/{share/doc,src,lib/modules}}
@@ -45,18 +88,15 @@ build: |
45 88
46 89 [ -f ../patch-${pkgver}.xz ] && \
47 90 xz -d -c ../patch-${pkgver}.xz | patch -Np1
48 -
49 91 patch -Np1 -i ../init_path.patch
50 92
51 93 # Konfiguracja: identyczna z build-pagan.sh (config = config-<ver>-pagan z ISO).
52 - # localversion -pagan pochodzi z CONFIG_LOCALVERSION w config (bez dodatkowego pliku).
53 -
94 + # CONFIG_LOCALVERSION="-pagan" → KERNELRELEASE = <ver>-pagan (np. 7.2.5-pagan).
54 95 cp ../config .config
55 96 make olddefconfig
56 97 diff -u ../config .config || true
57 98 KERNELRELEASE=$(make -s kernelrelease)
58 99 IMAGENAME=$(make -s image_name)
59 - # make menuconfig
60 100 make
61 101 cp .config config
62 102 ZSTD_CLEVEL=19 \
@@ -65,34 +105,33 @@ build: |
65 105 DEPMOD=/dev/null modules_install
66 106 depmod -b ${PKGDIR}/usr -a $KERNELRELEASE
67 107
108 + # ── /boot: nazwy plików DOKŁADNIE jak w obrazie ISO ──────────────────────
109 + # GRUB (/etc/grub.d/10_linux) znajduje jądra WYŁĄCZNIE po `vmlinuz-*`.
110 + # Poprzednie `kernel-stable` było dla GRUB-a niewidoczne, więc po `pag upgrade`
111 + # system startował ze STARYM jądrem z obrazu (albo nie startował wcale).
68 112 cp System.map ${PKGDIR}/boot/System.map-$KERNELRELEASE
113 + ln -sf System.map-$KERNELRELEASE ${PKGDIR}/boot/System.map
69 114 cp .config ${PKGDIR}/boot/config-$KERNELRELEASE
70 - cp $IMAGENAME ${PKGDIR}/boot/kernel-stable
71 - ln -sf kernel-stable ${PKGDIR}/boot/${pkgname}
115 + cp $IMAGENAME ${PKGDIR}/boot/vmlinuz-$KERNELRELEASE
116 + ln -sf vmlinuz-$KERNELRELEASE ${PKGDIR}/boot/vmlinuz-linux
72 117
73 - # Przenieś CAŁE drzewo źródeł: cwd jest WEWNĄTRZ linux-7.2 (po `cd linux-7.2`),
74 - # więc najpierw wychodzimy do katalogu źródeł SRCDIR.
118 + # ── źródła dla DKMS: /usr/src/kernel (SYSSRC dla nvidia-kernel/nvidia-dkms).
75 119 cd ..
76 - mv linux-7.2 ${PKGDIR}/usr/src/${pkgname}
77 - ln -sv ${pkgname} ${PKGDIR}/usr/src/linux-7.2
78 - mv ${PKGDIR}/usr/src/${pkgname}/Documentation \
79 - ${PKGDIR}/usr/share/doc/${pkgname}
80 -
81 - # Reorganise files
120 + mv linux-7.2 ${PKGDIR}/usr/src/kernel
121 + mv ${PKGDIR}/usr/src/kernel/Documentation ${PKGDIR}/usr/share/doc/kernel
122 + # Konwencja „linux-headers-$(uname -r)”, której szukają hooki ISO i DKMS.
123 + ln -sfn kernel ${PKGDIR}/usr/src/linux-headers-$KERNELRELEASE
124 +
125 + # ── moduły: /usr/lib/modules/<ver>-pagan (BEZ zmiany nazwy na „kernel”) ──
126 + # Ten sam katalog co w obrazie ISO → `pag upgrade` podmienia jądro W MIEJSCU,
127 + # a moduły NVIDIA/DKMS trafiają tam, gdzie faktycznie szuka ich jądro.
82 128 cd ${PKGDIR}/usr/lib/modules
83 - mv $KERNELRELEASE ${pkgname}
84 - ln -sv ${pkgname} ${PKGDIR}/usr/lib/modules/$KERNELRELEASE
85 -
86 - rm $KERNELRELEASE/build
87 - ln -sv /usr/src/${pkgname} $KERNELRELEASE/build
129 + rm -f $KERNELRELEASE/build $KERNELRELEASE/source
130 + ln -sfn ../../../src/kernel $KERNELRELEASE/build
131 + ln -sfn ../../../src/kernel $KERNELRELEASE/source
88 132
89 133 # Firmware are in linux-firmware
90 134 rm -rf ${PKGDIR}/lib/firmware
91 135
92 - # post-install autogen
93 -
94 -
95 - # post-remove autogen
96 -
97 136 package: |
98 137 true
@@ -1,14 +1,18 @@
1 1 pkgname: linux-headers
2 -pkgver: '6.18.49'
3 -pkgrel: '1'
4 -pkgdesc: 'Kernel headers/source for building out-of-tree modules (DKMS) – meta na kernel-lts'
2 +pkgver: '7.2.5'
3 +pkgrel: '2'
4 +pkgdesc: 'Kernel headers/source for building out-of-tree modules (DKMS) – meta na kernel'
5 5 url: 'https://www.kernel.org'
6 6 arch: x86_64
7 7 license:
8 8 - GPL-2.0-only
9 9
10 +# Źródła DKMS dostarcza pakiet `kernel` (/usr/src/kernel + /usr/src/linux-headers-<ver>
11 +# + symlinki build/source w /usr/lib/modules/<ver>-pagan). Wcześniej ta meta
12 +# wskazywała `kernel-lts` (6.18), więc `nvidia-dkms` budował moduły pod INNE jądro
13 +# niż uruchomione (kernel 7.2.5-pagan).
10 14 depends:
11 -- kernel-lts
15 +- kernel
12 16
13 17 makedepends: []
14 18
@@ -20,5 +24,5 @@ build: |
20 24
21 25 package: |
22 26 install -d "${PKGDIR}/usr/share/doc/linux-headers"
23 - echo "Nagłówki/źródła jądra dostarcza pakiet kernel-lts (/usr/src/kernel-lts, /usr/lib/modules/kernel-lts/build)." \
27 + echo "Nagłówki/źródła jądra dostarcza pakiet kernel (/usr/src/kernel, /usr/lib/modules/<ver>-pagan/build)." \
24 28 > "${PKGDIR}/usr/share/doc/linux-headers/README"
@@ -1,6 +1,6 @@
1 1 pkgname: 'nvidia-kernel'
2 2 pkgver: '610.57.04'
3 -pkgrel: '1'
3 +pkgrel: '2'
4 4 pkgdesc: 'NVIDIA 610 modules for the rolling kernel (package kernel).'
5 5 url: 'https://www.nvidia.com/en-us/drivers/unix/'
6 6 arch: x86_64
@@ -19,15 +19,26 @@ sha256sums:
19 19
20 20 hooks:
21 21 'post-install': |
22 - depmod -a kernel
22 + # depmod przebudowuje zależności modułów (nvidia → nvidia-drm/modeset/uvm).
23 + # Bez tego jądro nie załaduje nvidia-drm przy starcie.
24 + depmod -a
23 25
24 26 build: |
25 27 sh NVIDIA-Linux-x86_64-${pkgver}.run --extract-only
26 28 cd NVIDIA-Linux-x86_64-${pkgver}/kernel
27 29
30 + # Jądro z pakietu `kernel` dostarcza pełne drzewo źródeł w /usr/src/kernel.
28 31 SYSSRC="/usr/src/kernel" make modules
29 - install -dm0755 ${PKGDIR}/usr/lib/modules/kernel/kernel/drivers/video
30 - install -m0644 *.ko ${PKGDIR}/usr/lib/modules/kernel/kernel/drivers/video
32 +
33 + # Katalog modułów jest nazwany od wydania jądra (np. 7.2.5-pagan), a NIE
34 + # „kernel” – tak samo jak w obrazie ISO. Dzięki temu moduły leżą dokładnie
35 + # tam, gdzie jądro ich szuka (i gdzie `pag upgrade` podmienia jądro).
36 + KVER="$(make -s -C /usr/src/kernel kernelrelease 2>/dev/null || true)"
37 + [ -n "$KVER" ] || KVER="$(ls /usr/lib/modules | grep -- '-pagan' | head -1)"
38 + [ -n "$KVER" ] || { echo "Nie mogę ustalić wersji jądra (KVER) – brak /usr/src/kernel lub modułów"; exit 1; }
39 +
40 + install -dm0755 ${PKGDIR}/usr/lib/modules/${KVER}/kernel/drivers/video
41 + install -m0644 *.ko ${PKGDIR}/usr/lib/modules/${KVER}/kernel/drivers/video
31 42
32 43 package: |
33 44 true