Jak uzyskać kod źródłowy jądra?


25

Planuję napisać kilka sterowników urządzeń i muszę pobrać źródło jądra Linux. Moja wersja jądra Linuksa to 3.2.0-23-generic-pae i pobrałem obraz z tego . W wielu artykułach, które przeczytałem, mówi mi, że muszę mieć całe drzewo jądra, aby zacząć wstawiać nowe moduły.

Czy wystarczy pobrać ten obraz i wkleić go do usr/src/folderu, czy też muszę zrobić coś innego?


1
Zwykle po prostu instaluję pakiet „linux-source” z synaptic, gdy kompiluję niestandardowo dla jednego z moich komputerów, ale biorąc pod uwagę, że pracujesz nad programowaniem, być może potrzebujesz najnowszej wersji. Ten link może Ci się przydać: help.ubuntu.com/community/Kernel/Compile
Mark Paskal

Odpowiedzi:


27

Spowoduje to pobranie źródła podstawowego jądra:

apt-get source linux-source

Możesz sprawdzić, która wersja jądra działa w następujący sposób:

uname -r

Które wydrukuje coś takiego:

3.13.0-46-generic

Możesz znaleźć listę aktualnych wersji pakietów źródłowych dostępnych w twoim systemie poprzez:

apt-cache search linux-source

Aby pobrać wersję jądra:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

W powyższym linku „zaufany” to nazwa kodowa wersji Ubuntu. Możesz znaleźć kryptonim dla wersji Ubuntu, którą zainstalowałeś:

cat /etc/lsb-release

Jeśli użyję git do sklonowania, jak określić wersję. Także jeśli sklonuję, wystarczy, że skopiuję go do folderu usr / src
Sab.

To repozytorium git jest utrzymywane w wersji 3.2.0; wynika z tego, co jest w Ubuntu Precise (12.04). Jeśli chcesz inną wersję, zmień ubuntu-precision.git na ubuntu-quantal.git lub cokolwiek innego. Wystarczy skopiować do usr / src.
Bryce,

Okej. Dzięki… Ale jak znalazłeś ten link do git?
Sab


I gdzie powinienem znaleźć drzewo źródłowe podczas instalacji z ... Cholera, powinienem lepiej czytać. Odpowiedź mówi apt-get sourcenie apt-get install. Drzewo źródłowe znajdzie się na twojej bieżącej ścieżce .
Pro Backup

8
apt-get source linux

jest najprostszym sposobem. Spowoduje to pobranie źródła z Twojego repozytorium - i będzie takie samo, jak uruchomiona wersja (zakładając, że jeszcze go nie dostosowałeś).

Ale jeśli chcesz dowiedzieć się, gdzie jest utrzymywane źródło, możesz uruchomić:

apt-cache showsrc linux

Poszukaj atrybutu „Vcs-” (system kontroli wersji). Zwykle będzie to repozytorium git (Vcs-Git) lub rtęciowe.

Uwaga - te polecenia działają z dowolnym pakietem. Po prostu zastąp „linux” pakietem, który Cię interesuje. Zauważ też, że „apt-get source” nie potrzebuje dostępu do sudo i zrzuci źródło w twoim bieżącym katalogu.


Wymaga to komputera, na którym pobierasz, aby pasował do komputera docelowego. Naprawdę działa tylko, jeśli masz sieć. Większość czytelników lądujących na tej stronie nie będzie miała sieci (dlatego nagle potrzebują źródła). Potrzebuję go jako tarballa na pendrivie i nie mam działającego apt.
mckenzm

To tylko pobierało nagłówki linuxa do /usr/src- nie pełnego źródła jądra - na Ubuntu 16.04
Pierz

4

Pobierz źródło bezpośrednio z Launchpad

O dziwo, wszyscy polecają, apt-get source co nie działa przez większość czasu, jeśli szukasz konkretnej wersji jądra:

Powiedzmy, że potrzebujesz źródła jądra dla wersji 3.19.0-58:
apt-get source linux-image-3.19.0-58-genericpobierze źródło najnowszego jądra z serii: 3.19.0-80 w tym przypadku, co nie jest tym, o co prosiłeś.

Masz więc dwie opcje:

1) Zrezygnuj, zainstaluj jądro 3.19.0-80 i użyj apt-get source

2) Uzyskaj źródło bezpośrednio ze startera:

spinki do mankietów

  • Umieść je w nowym katalogu, rozpakuj za pomocą dpkg-source -x *.dsc

Uwagi:

  • Musi być lepszy sposób.
  • Możesz pobrać żądaną wersję z git, ale czeka Cię duże pobranie. Zobacz „Uzyskiwanie źródeł jądra dla wersji Ubuntu przy użyciu git” w Kod źródłowy jądra Wiki Ubuntu .

Dziękujemy za tak jasne wyjaśnienie. Jednak nadal nie mogę znaleźć źródła dla Linux-image-4.15.0-39-generic. Proces ten jest niepotrzebnie skomplikowany. Próbowałem google, ale wciąż znajduję paczki, które mają tylko kilka kilobajtów. Jakieś wskazówki?
zapomnij

3

Wybierz jedną z:

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory

Jeśli pojawi się polecenie podania adresów URL „źródeł” sources.list, przejdź do edycji /etc/apt/sources.listpliku i odkomentuj żądaną deb-srclinię, na przykład (jeśli korzystasz z Xenial):

deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted

Usunięcie #tego ostatniego wiersza umożliwia pobieranie repozytoriów źródeł, w tym źródeł jądra.

Uwagi:

  • Korzystaj z nowoczesnych narzędzi; unikać apt-get.
  • Te polecenia pobierają kod źródłowy dla twojego obecnego jądra ( 4.4.0-75-genericna przykład w moim przypadku ).
  • Po pobraniu do katalogu systemowego pliki są przechowywane /usr/src/linux-source-4.4.0/(na przykład).

Nie działa dla mnie (ale nie działa również wersja apt-get). Używam Ubuntu 16.04.4, jądro 4.4.0-98-generic. Mówi: „Musisz umieścić kilka„ źródłowych ”identyfikatorów URI w pliku sources.list. Nie mam pojęcia jak to zrobić.
Andrew Bainbridge

@AndrewBainbridge Dodałem informacje na ten temat. Czy to ci teraz pasuje?
Tim

Tak, dziękuję. To był głupi komentarz ode mnie. Musiałem tylko google wyświetlić komunikat o błędzie. Tak czy inaczej, poproś o głos.
Andrew Bainbridge,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.