jaka jest różnica między wersją 3. * a 3. src. * - ogólna


10

W moim lokalnym Linux / Ubuntu mam dwa katalogi dla Linux src

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

Odkryłem, że kod w 3.16.0 jest znacznie większy niż w wersji 3.16.0-generic. Zastanawiam się, dlaczego i jak te dwa katalogi są różne (i co one reprezentują?)

Odpowiedzi:


1

Dwa katalogi są dostarczane przez odpowiednie pakiety, które zawierają pliki nagłówkowe dla jądra. Użyj dpkgpolecenia, aby znaleźć pakiet, który udostępnia katalogi.

$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...

Pierwszy katalog /usr/src/linux-headers-X.X.XX-XXzawiera pliki nagłówkowe dla wielu architektur, w tym x86, amd64, powerpc i innych, co powoduje większą liczbę plików i większy rozmiar pakietu.

Drugi katalog /usr/src/linux-headers-X.X.XX-XX-genericzawierał głównie kody źródłowe istotne dla architektury x86, która jest przeznaczona dla instalacji lokalnej.

Odpowiedni pakiet wskazał w opisie, na przykład:

$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
 This package provides kernel header files for version 3.16.0, for sites
 that want the latest kernel headers. Please read
 /usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details

O ile mi wiadomo, oba katalogi zawierają tylko kody źródłowe, a nie pliki binarne. Różnica między nimi polega głównie na architekturze docelowej kodów źródłowych.

Powiązane: Co zawiera drzewo źródeł jądra? Czy jest to związane z nagłówkami jądra Linux?

Rozszerzona odpowiedź (2015.07.30)

skoro oba przechowują x86powiązany kod, jaka jest różnica między x86kodem w dwóch katalogach? - Richard 29 lipca 2015 o 19:11

Większość katalogów i plików w /usr/src/linux-headers-X.X.XX-XX-genericnich zawartych to dowiązania symboliczne, które wskazują na rzeczywiste katalogi i pliki w /usr/src/linux-headers-X.X.XX-XX. Innymi słowy, arch/x86w tych dwóch katalogach znajduje się tylko różnica między łączami rzeczywistymi i symbolicznymi, z pewnymi resztkowymi plikami asmnagłówków w *-genericodpowiedniku.

Pomiędzy tymi dwoma pakietami można zauważyć kolejną istotną różnicę - obecność configi generatedkatalogi w *-genericodpowiedniku.

W moim najlepszym rozumieniu, sądzę, że *-generickatalog zawiera niezbędne pliki nagłówkowe do konfigurowania i kompilowania modułów odpowiednich dla x86architektury, bez dokonywania przypadkowych zmian w katalogu źródłowym linux-headers-x.x.xx-xx.

Przede wszystkim dwa katalogi są prawdopodobnie „czystym” podejściem do pakowania i kompilowania pakietów na odpowiednich platformach. Chociaż nie jestem w stanie wyjaśnić tej kwestii.


Notatka odpowiadającego: w tym czasie napisałem naiwnie tę odpowiedź - nie jestem pewien, co jest poprawne, a co złe - a pomiędzy nimi może brakować jakiegoś wyjaśnienia. Dlatego ta odpowiedź jest teraz wiki społeczności, dzięki czemu każdy z minimalną reputacją może poprawić ten post, aby w pełni wyjaśnić różnicę.


skoro oba przechowują x86powiązany kod, jaka jest różnica między x86kodem w dwóch katalogach?
Richard

@Richard Zaktualizowałem swoją odpowiedź jak wyżej, zgodnie z moją najlepszą wiedzą, tak prosto, jak to możliwe. Moja odpowiedź może być postrzegana jako naiwna, więc zamiast tego możesz poszukać lepszej odpowiedzi od kogoś innego.
clearkimura
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.