Gdzie jest źródło jądra dla domyślnego jądra Raspbian 3.1.9+?

13

Domyślna wersja jądra Raspbian to 3.1.9+. Kiedy próbuję skompilować dodatkowy moduł jądra, pojawia się wiele komunikatów o błędach, ponieważ brakuje plików nagłówków jądra. Sprawdziłem repozytorium Raspbian , ale nie mogłem znaleźć nagłówków jądra 3.1.9+ i źródła jądra.

Jeśli szukam wersji 3.2.0, mogę zainstalować nowe jądro (linux-image-3.2.0-3-rpi), nagłówki (linux-headers-3.2.0-3-rpi) i źródło (linux-source -3.2) i mogę skompilować dodatkowy moduł. Niestety jądro 3.2 jest dla mnie bardzo niestabilne, więc ta aktualizacja nie jest opcją.

asalamon74
źródło

Odpowiedzi:

9

Wydaje mi się, że w repozytorium Raspbian nie ma źródłowego pakietu deb jądra 3.1.9+. Według Alexa Bradbury'ego (asb) zbudowali jądro Raspbian oparte na https://github.com/raspberrypi/linux . Na podstawie tej dokumentacji kompilacji jądra wykonałem następujące czynności (jako root):

cd /usr/src
git clone --depth 1 https://github.com/raspberrypi/linux.git
ln -s linux linux-3.1.9+
cd linux
zcat /proc/config.gz > .config
ln -s /usr/src/linux /lib/modules/3.1.9+/build

Potem mogłem ponownie skompilować moduł zewnętrzny.

Kilka uwag:

  • Sklonowałem najnowszą wersję źródła jądra, która jest nowsza niż obraz jądra Raspbian. Jeśli naprawdę potrzebujesz dokładnie tej samej wersji jądra, ta starsza wersja może być lepsza.

  • Dla pewności skompilowałem też ponownie całe jądro. Nie rób tego, jeśli potrzebujesz tylko skompilować moduł zewnętrzny, ponieważ zajmuje to wiele godzin.

  • Musiałem nieco zmodyfikować plik Makefile modułu zewnętrznego (8192cu) (ustawienie ARCH na uzbrojenie zamiast armv6l).
asalamon74
źródło
3
+1 Dobra robota. Powinny naprawdę umieścić nagłówki w repozytoriach.
Jivings
4

Możesz użyć rpi-source, aby automatycznie znaleźć i zainstalować źródła jądra dla działającego jądra.

Zobacz także kompilację krzyżową z Linuksa , aby uniknąć godzin oczekiwania na skompilowanie nowego jądra.

Mauro Lacy
źródło
1

Dziwne, jak to jest takie trudne ... Wszystko, co mogę znaleźć, to ten pakiet na liście źródeł:

Package: linux-libc-dev
Source: linux
Version: 3.2.21-1+rpi1
Architecture: armhf
Maintainer: Debian Kernel Team <[email protected]>
Installed-Size: 2790
Conflicts: linux-kernel-headers
Replaces: linux-kernel-headers
Provides: linux-kernel-headers
Multi-Arch: same
Priority: optional
Section: devel
Filename: pool/main/l/linux/linux-libc-dev_3.2.21-1+rpi1_armhf.deb
Size: 764146
SHA256: b75b35ccf8e7fbac582ad08af9579a23095f9dbbc9e7369430e43d584afc48fd
SHA1: e8c3bb2a30483c51ee39b525becd6e213ae9c2c7
MD5sum: 840e28237198aa137dfcdb558ef1cbf5
Description: Linux support headers for userspace development
 This package provides userspaces headers from the Linux kernel.  These
 headers are used by the installed headers for GNU glibc and other system
 libraries.

Wydaje się, że dostarcza potrzebnych narzędzi, ale nie mam pojęcia, dlaczego nie ma pakietu o nazwie linux-kernel-headers.

Jeśli jednak zajrzysz do archiwum pakietów, możesz to znaleźć:

http://archive.raspbian.org/raspbian/pool/main/l/linux-latest/

Być może jeden z pakietów nagłówków w tym katalogu będzie przeznaczony dla jądra, którego potrzebujesz.

Niestety są to wszystkie informacje, które mogę obecnie zaoferować, ponieważ sam nie zainstalowałem jeszcze Raspbian, chociaż jest na mojej liście TODO.

Jivings
źródło
Po namyśle jest to nadal niewłaściwa wersja tej, której chcesz, prawda?
Jivings,
Dotyczy to również jądra 3.2. Numer wersji (3.2.21-1 + rpi1) jest taki sam dla pakietów, o których wspomniałem w pytaniu (np. Linux-headers-3.2.0-3-all_3.2.21-1 + rpi1_armhf.deb)
asalamon74