Gdzie / które jest faktycznym źródłem jądra?

8

Śledzę to, aby nauczyć się kompilować jądro. użyłem

apt-get source linux-image-$(uname -r)

aby pobrać kod źródłowy jądra Linuksa, którego używam.

Po uruchomieniu powyższego polecenia pobrano następujące pliki (i katalogi).

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

Na tej samej stronie jest wspomniane:

Budowanie jądra jest dość łatwe. Zmień katalog roboczy na katalog główny drzewa źródłowego jądra, a następnie wpisz następujące polecenia:

Ale nie jestem pewien, który jest „korzeniem drzewa źródłowego jądra”.

Czy to jest bieżący katalog (gdzie uruchomiłem apt-get source ...i gdzie mam wyżej wymienione pliki)?

Czy jest to katalog:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

lub powinienem wyodrębnić archiwum

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

Dane wyjściowe dla uname -r:

user $ uname -r
3.19.0-30-generic
user $ 
sps
źródło

Odpowiedzi:

8

Z Debian Wiki :

Pakiety źródłowe zapewniają wszystkie niezbędne pliki do skompilowania lub zbudowania żądanego oprogramowania.

Składa się, w najprostszej formie, z trzech plików:

  • Plik archiwum z zakończeniem .tar.gz

  • Plik opisu z rozszerzeniem .dsc. Zawiera nazwę pakietu, zarówno w nazwie pliku, jak i treści (po słowie kluczowym Source:).

  • Tarball, ze wszelkimi zmianami dokonanymi w źródłowym źródle, plus wszystkie pliki utworzone dla pakietu Debian.

    • Ma to .debian.tar.gz (format źródłowy: 3.0)
    • lub zakończenie .diff.gz (format źródłowy: 1.0)

Podobnie jest w przypadku Ubuntu, aw twoim przypadku:

  • „linux-lts-vivid-3.19.0”: rzeczywiste jądro , załatane począwszy od wcześniejszego tarballa „linux-lts-vivid_3.19.0.orig.tar.gz” ze zmianami wymienionymi w „linux-lts-vivid_3.19.0 -30,34 ~ 14.04.1.diff.gz ";
  • „linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz”: tarball, ze wszelkimi zmianami dokonanymi w źródłowym źródle, plus wszystkie pliki utworzone dla pakietu Debian;
  • „linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.dsc”: zakończenie pliku opisu „.dsc”. Zawiera nazwę pakietu, zarówno w nazwie pliku, jak i treści (po słowie kluczowym Source:);
  • „linux-lts-vivid_3.19.0.orig.tar.gz”: archiwum wyjściowe z zakończeniem „.tar.gz” (pamiętam, że z mojego doświadczenia nie zawsze jest to plik „.tar.gz”, może być nieco różne formaty, takie jak „.tar.xz”);

Po uruchomieniu apt-get source linux-image-$(uname -r)tarball wysyłany jest automatycznie z modyfikacjami wymienionymi w „linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz” w „linux-lts-vivid-3.19.0”:

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...
kos
źródło
4

Katalog główny twojego drzewa jądra to katalog linux-lts-vivid-3.19.0.

O innych plikach:

W tarballu linux-lts-vivid_3.19.0.orig.tar.gzmożna znaleźć jądro „waniliowe”, wydane wcześniej; do tego jądra deweloperzy Ubuntu dodali łatki, sterowniki, zmienili rzeczy, które są gromadzone w tym, w diffktórym jest skompresowany linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

Rmano
źródło
4

Hmmm. Po uruchomieniu polecenia

apt-get source linux-image-`uname -r`

polecenie powinno automatycznie wyodrębnić źródłowe pliki archiwalne i załatać je, aby utworzyć katalog nazwany po jądrze. W twoim przypadku wygląda na to, że nazywa się to „linux-lts-vivid-3.19.0” - znajduje się na liście katalogów.

To jest katalog źródłowy, powinieneś uruchomić:

cd linux-lts-vivid-3.19.0

a następnie nadal postępuj zgodnie z instrukcjami

Nick Veitch
źródło