Wyszukiwanie w witrynie

Jak skompilować swoje pierwsze jądro Linuksa (i 3 powody, dla których powinieneś)


Zdobycie tej odznaki honorowej wśród większości użytkowników Linuksa nie jest tak trudne, jak mogłoby się wydawać.

Pamiętam, kiedy po raz pierwszy skompilowałem jądro Linuksa. Byłem zdenerwowany. To było coś, czego nigdy wcześniej nie robiłem i wydawało mi się to niezwykle trudnym zadaniem. W końcu, czy jądro nie jest dziełem elitarnych programistów? Jeśli tak, to po co w ogóle miałbym się tym przejmować?

Bo mógłbym.

A ponieważ wszystkie fajne open-source, alternakids to robiły.

Jeśli chciałem się dopasować, musiałem sprawić, by (widzisz, co ja tam zrobiłem?) to się stało.

Pobrałem więc kod źródłowy jądra, wziąłem głęboki oddech i zanurzyłem się w grze.

To było około 2000 lub 2001 roku, a kiedy mi się to udało, jestem pewien, że wykonałem radosny taniec lub dwa.

Ale jak to zrobiłem?

Wierzcie lub nie, ale proces kompilacji jądra Linuksa nie jest tak trudny, jak mogłoby się wydawać. Jest to czasochłonne, ale jest to wyzwanie, któremu z pewnością możesz sprostać.

Dlaczego miałbyś chcieć skompilować jądro?

Istnieją trzy powody, dla których warto to zrobić:

  • Chcesz użyć nowszego lub innego jądra niż zapewnia Twoja dystrybucja (takiego jak jądro działające w czasie rzeczywistym lub o małym opóźnieniu).
  • Potrzebujesz jądra z bardzo specyficznymi konfiguracjami i tylko określonymi modułami.
  • Chcesz pochwalić się znajomym, że skompilowałeś jądro Linuksa.

Pozwólcie, że pokażę wam, jak to się robi.

Jak skompilować jądro Linuksa ze źródeł

Czego będziesz potrzebować: Aby skompilować jądro, musisz pobrać źródło jądra, użytkownika z uprawnieniami sudo i dużo czasu. Zademonstruję to na przykładzie Ubuntu Desktop 24.04. Jeśli używasz dystrybucji, która nie jest oparta na Debianie lub Ubuntu, musisz upewnić się, że zainstalowałeś niezbędne zależności za pomocą menedżera pakietów swojej dystrybucji.

Zanim wyruszysz w tę podróż, znajdź maszynę zapasową lub wdróż maszynę wirtualną. Nie chcesz kompilować swojego pierwszego jądra Linuksa na maszynie produkcyjnej.

1. Pobierz źródło

Pierwszą rzeczą, którą zamierzasz zrobić, to pobrać źródło jądra, którego chcesz użyć. Sugerowałbym przejście bezpośrednio do archiwów jądra Linuksa i pobranie pliku tar żądanego jądra. Zamierzam pobrać kod źródłowy 6.13 w celach demonstracyjnych.

2. Zainstaluj niezbędne zależności

Otwórz okno terminala i wydaj następujące polecenie, aby zainstalować zależności:

sudo apt-get install build-essential libncurses-dev git bison flex libssl-dev -y 	 	 	

2. Rozpakuj zarchiwizowany plik

Otwórz okno terminala i przejdź do katalogu, w którym znajduje się pobrany plik i rozpakuj go za pomocą polecenia:

unxz --keep linux-XXX.tar.xz 	 	 	

Gdzie XXX to numer wydania.

3. Rozpakuj plik

Możemy teraz rozpakować plik tar za pomocą polecenia:

tar -xf linux-XXX.tar 	 	 	

Gdzie XXX to numer wydania.

4. Konfiguracja jądra

W tym momencie możesz albo użyć konfiguracji ogólnej, albo ręcznie edytować plik .conf w nowo utworzonym katalogu (który będzie nosił nazwę linux-XXX - gdzie XXX to numer wydania). Inną metodą, której możesz użyć (którą sugerowałbym dla pierwszej rundy), jest skopiowanie pliku konfiguracyjnego twojej dystrybucji.

Zanim to zrobisz, przejdź do nowo utworzonego folderu za pomocą polecenia:

cd linux-XXX 	 	 	

Gdzie XXX to numer wydania.

Następnie skopiuj plik konfiguracyjny z poleceniem:

cp /boot/config-"$(uname -r)" .config 	 	 	

Alternatywnie możesz ręcznie skonfigurować jądro za pomocą polecenia:

make menuconfig 	 	 	

Powyższe polecenie otwiera narzędzie menuconfig, w którym możesz przeglądać i włączać/wyłączać różne funkcje. W ten sposób zawsze kompilowałem jądra. Ta metoda zajmuje trochę czasu (ponieważ jest wiele modułów do przejścia). Jeśli pójdziesz tą drogą, pamiętaj, aby zapisać go w pliku zawierającym:

make savedconfig 	 	 	

Powyższe polecenie utworzy nowy katalog zawierający plik .config.

5. Zaktualizuj konfigurację

Po skopiowaniu konfiguracji należy zaktualizować plik konfiguracyjny (ponieważ ten dostarczony z Twoją dystrybucją jest najprawdopodobniej nieaktualny). Aby to zrobić, wydaj polecenie:

make oldconfig 	 	 	

Plik .config jest teraz aktualizowany dla pobranego źródła jądra.

6. Wyłącz moduł podpisywania

W przypadku użytkowników dystrybucji opartych na Debianie należy wyłączyć moduł używany do podpisywania modułów jądra, ponieważ certyfikat używany do tego celu nie jest dołączony. Aby to zrobić, wydaj polecenia:

scripts/config --disable SYSTEM_TRUSTED_KEYS
   scripts/config --disable SYSTEM_REVOCATION_KEYS 	 	 	

Jeśli tego nie zrobisz, kompilacja zakończy się niepowodzeniem w dalszej części procesu, co oznacza, że zmarnujesz dużo czasu (byłeś tam, zrobiłeś to... zbyt wiele razy).

7. Budowanie jądra

Nadszedł czas, aby zbudować jądro za pomocą polecenia:

make -j$(nproc) 	 	 	

Zajmie to dość dużo czasu.

8. Zainstaluj moduły jądra

Nie chcesz, aby każdy moduł jądra Linuksa ładował się podczas uruchamiania. Zamiast tego budujemy ładowalne moduły. Ten proces nie tylko instaluje moduły jądra, ale także je podpisuje, co oznacza, że proces ten (po raz kolejny) zajmie trochę czasu. Polecenie do tego to:

sudo make modules_install -j$(nproc) 	 	 	

9. (Opcjonalnie) Zainstaluj pliki nagłówkowe jądra

Istnieją pewne przypadki, w których mogą być potrzebne pliki nagłówkowe jądra (na przykład, jeśli zamierzasz napisać własne moduły lub zainstalować określone oprogramowanie serwera). W tym celu wydaj polecenie:

sudo make headers_install

10. Zainstaluj jądro

Nadszedł czas na zainstalowanie jądra, co odbywa się za pomocą polecenia:

sudo make install 	 	 	

11. Generowanie początkowego ramdysku

Ramdisk (początkowy system plików RAM) jest wymagany do uruchomienia systemu i można go utworzyć za pomocą:

sudo dracut --force /boot/initrd.img-XXX-generic XXX-generic 	 	 	

Gdzie XXX to numer wydania jądra, które instalujesz.

12. Zaktualizuj żarcie

Na koniec zaktualizuj bootloader gruba (aby był świadomy nowego jądra) za pomocą:

sudo update-grub2 	 	 	

Możesz teraz ponownie uruchomić komputer i wybrać nowo skompilowane jądro.

Pamiętaj, że zrób to na maszynie wirtualnej lub maszynie testowej, ponieważ nie chcesz bawić się swoim codziennym sterownikiem i skończyć z maszyną, która się nie uruchamia.

Otrzymuj codziennie najważniejsze poranne artykuły w swojej skrzynce odbiorczej dzięki naszemubiuletynowi Tech Today.

Powiązane artykuły