Instalowanie nagłówków Linux-2.4.22

Estimated build time:           0.1 SBU
Estimated required disk space: 186 MB

Zawartość Linuksa

Jądro Linuksa (Linux kernel) jest centrum każdego systemu linuksowego. Dzięki niemu Linux działa. Kiedy włączamy komputer i ładuje się system Linux, to najpierwszym elementem linuksowego oprogramowania jakie jest ładowane jest właśnie jądro. To jądro inicjalizuje sprzętowe komponenty systemu: porty szeregowe, równoległe, karty dźwiękowe, karty sieciowe, kontrolery IDE, kontrolery SCSI i wiele innych. Mówiąc w skrócie, to jądro udostępnia sprzęt tak, żeby oprogramowanie mogło działać.

Instalowane pliki: jądro i nagłówki jądra (the kernel and the kernel headers)

Zależności instalacyjne Linuksa

Linux zależy od: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.

Instalacja nagłówków jądra

Jeszcze nie będziemy kompilować nowego jądra -- zrobimy to po zakończeniu instalacji wszystkich pakietów. Ale ponieważ niektóre pakiety potrzebują plików nagłówków jądra, to rozpakujemy archiwum jądra teraz, ustawimy je i skopiujemy pliki nagłówkowe, żeby te pakiety mogły je sobie znaleźć.

Trzeba podkreślić, że pliki w katalogu źródeł jądra nie są własnością użytkownika root. Jak tylko rozpakujesz jakiś pakiet jako użytkownik root (jak to robimy wewnątrz chroot), to pliki dostają takie numery identyfikatora użytkownika i grupy, jakie miały na komputerze z którego pochodzą. Zwykle nie stanowi to problemu przy instalowaniu pakietów, bo po instalacji usuwasz drzewo źródeł. Ale drzewo źródeł jądra Linuksa często zatrzymuje się przez dłuższy czas, więc istnieje możliwość, że numer identyfikatora użytkownika, który pakował pakiet zostanie w twoim systemie komuś przydzielony, a wtedy taka osoba będzie miała dostęp do źródeł jądra z prawem zapisu.

Wobec tego, mogłabyś chcieć zmienić właściciela katalogu wykonując chown -R 0:0 w katalogu linux-2.4.22 , aby upewnić się, że właścicielem wszystkich tych plików jest użytkownik root.

Przygotuj się do instalacji nagłówków:

make mrproper

To upewni nas, że drzewo jądra jest absolutnie czyste. Zespół twórców jądra zaleca wykonywanie tej komendy przed każdą kompilacją jądra. Nie powinno się polegać na przypuszczeniu, że drzewo źródeł jest czyste po rozpakowaniu.

Utwórz plik include/linux/version.h:

make include/linux/version.h

Utwórz link symboliczny zależny od platformy include/asm:

make symlinks

Zainstaluj pliki nagłówkowe zależne od platformy:

cp -HR include/asm /usr/include
cp -R include/asm-generic /usr/include

Zainstaluj pliki nagłówków jądra niezależne od platformy:

cp -R include/linux /usr/include

Niewiele plików nagłówkowych jądra korzysta z pliku nagłówkowego autoconf.h. Ponieważ jeszcze nie konfigurujemy jądra , to sami musimy go utworzyć aby uniknąć błędów w kompilacji. Utwórz pusty plik autoconf.h:

touch /usr/include/linux/autoconf.h

Dlaczego kopiujemy pliki nagłówkowe jądra i nie robimy dla nich linków symbolicznych? Why we copy the kernel headers and don't symlink them

Kiedyś częstym zwyczajem było tworzenie linków symbolicznych dla katalogów /usr/include/{linux,asm} do /usr/src/linux/include/{linux,asm}. Były to złe praktyki, jak wskazuje następujący wyjątek z listu Linusa Torvaldsa na listę the Linux Kernel Mailing List:

I would suggest that people who compile new kernels should: 

- not have a single symbolic link in sight (except the one that the
kernel build itself sets up, namely the "linux/include/asm" symlink
that is only used for the internal kernel compile itself)

And yes, this is what I do. My /usr/src/linux still has the old 2.2.13
header files, even though I haven't run a 2.2.13 kernel in a _loong_
time. But those headers were what Glibc was compiled against, so those
headers are what matches the library object files.

And this is actually what has been the suggested environment for at
least the last five years. I don't know why the symlink business keeps
on living on, like a bad zombie. Pretty much every distribution still
has that broken symlink, and people still remember that the linux
sources should go into "/usr/src/linux" even though that hasn't been
true in a _loong_ time.

<cit> Radziłbym ludziom, którzy kompilują nowe jądra, żeby:
- nie było nawet jednego linku symbolicznego w zasięgu działania (oprócz tego, który skrypt budujący jądro sam ustawia, konkretnie jest to "linux/include/asm", używany tylko przez jądro do własnej kompilacji)

A tak, tak właśnie ja robię. Mój katalog /usr/src/linux nadal ma stare pliki nagówkowe 2.2.13, nawet mimo że nie używałem jądra 2.2.13 już _daawno_. Ale Glibc była kompilowana na tych nagłówkach, więc one pasują do plików obiektów tej biblioteki.

I to właśnie zaleca się jako środowisko przez ostatnie pięć lat. Nie wiem czemu nadal trwają tam linki symboliczne, jak zły zombie. Prawie każda dystrybucja ma nadal to nieczynne dowiązanie symboliczne, a ludzie nadal pamiętają, że źródła linuksa powinny iść do "/usr/src/linux" mimo, iż nie jest to prawdą już od bardzo _daawna_. </cit>

Sedno stanowi część, w któej Linus stwierdza, że pliki nagłówków powinny być te właśnie, dla których została skompilowana Glibc. Są to te nagłówki, których powinnaś użyć kompilując później inne pakiety, ponieważ to one odpowiadają plikom kodów obiektów tej biblioteki. Kopiując te nagłówki zapewniamy, że będą nadal dostępne, kiedy odświeżymy (upgrade) sobie jądro.

Zauważ przy okazji, że to zupełnie nic złego, mieć źródła jądra w /usr/src/linux, o ile nie masz dowiązań symbolicznych /usr/include/{linux,asm}.