Jak skompilować jądro waniliowe Linux ze źródła na Fedorze

Jak skompilować jądro waniliowe Linux ze źródła na Fedorze

Jądro jest najważniejszym elementem systemu operacyjnego: między innymi zapewnia obsługę różnych rodzajów sprzętu i zarządza alokacją zasobów.

Linux to jądro monolityczne: chociaż jego funkcje mogą być uwzględnione statycznie lub zbudowane i załadowane jako osobne moduły, Zawsze działa jako „pojedynczy kawałek” w tej samej przestrzeni adresowej. W tym samouczku zobaczymy, jak pobrać, skompilować i zainstalować jądro waniliowe Linux. Podane instrukcje powinny działać na wszystkich rozkładach Linux, jednak ten przewodnik koncentruje się na opracowaniu jądra w systemie Fedora.

W tym samouczku nauczysz się:

  • Jak skonfigurować, skompilować i zainstalować waniliowe jądro Linux
  • Jak spakować skompilowane jądro i jego moduły


Menu konfiguracji oparte na NCurses dla jądra Linux

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Fedora
Oprogramowanie
  • GCC
  • przewód
  • robić
  • bizon
  • OpenSsl-devel
  • Elfutils-libelf-devel
  • NCURSES-DEVEL (potrzebne do użycia menu opartego na NCurses do skonfigurowania jądra)
  • QT-DEVEL (potrzebny do użycia interfejsu graficznego QT do skonfigurowania jądra)
  • Build RPM (potrzebny do pakowania jądra w formacie RPM)
Inny Uprawnienia korzeniowe w celu zainstalowania potrzebnych zależności i skompilowanego jądra
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Instalowanie zależności

Aby móc skompilować jądro Linux ze źródła, musimy zainstalować niektóre pakiety w naszym systemie:

$ sudo dnf instaluj gcc flex Make Bison openSsl-devel Elfutils-libelf-devel


Te powyżej to tylko pakiety „podstawowe”, których potrzebujemy. Aby wywołać określoną konfigurację, należy zainstalować dodatkowe pakiety: ncurses-devel I QT-devel Na przykład pakiety są potrzebne do skonfigurowania odpowiednio jądra, odpowiednio, opartego na NCurses i interfejsie graficznego QT, podczas gdy Build RPM Pakiet jest potrzebny do zbudowania RPM zawierający skompilowane jądro.

Pobieranie źródła Tarball

Jako pierwszą rzeczą musimy uzyskać tarball zawierający najnowsze stabilne źródła jądra Linuksa. Możemy pobrać i wyodrębnić Tarball za pomocą jednego polecenia:

$ curl https: // cdn.jądro.org/pub/linux/jądro/v5.X/Linux-5.1.5.smoła.xz | tar -xj

Na końcu procesu pobierania, w naszym obecnym katalogu roboczym, powinniśmy znaleźć nowy folder zawierający kod źródłowy jądra. W tym przypadku musimy go wprowadzić:

$ CD Linux-5.1.5

W tym momencie możemy skonfigurować jądro. W następnym akapicie przyjrzymy się najczęstszym celom konfiguracji używanym do wykonania zadania.

Konfigurowanie jądra

Istnieją różne sposoby skonfigurowania jądra, które odpowiadają innym Cele konfiguracji. Po wywołaniu celu konfiguracji, jeśli plik wymieniony .konfigurator zawierający prawidłową konfigurację jądra znajduje się w katalogu źródeł, jest on używany jako punkt wyjścia do konfiguracji. To sprawia, że ​​możliwość aktualizacji lub modyfikacji już istniejącej konfiguracji, być może ta, która jest dostarczana z jądrem zainstalowanym domyślnie w naszym dystrybucji (można je znaleźć w środku w /uruchomić katalog, nazwany na cześć używanego jądra).

Jeśli plik nie zostanie znaleziony, konfiguracja rozpocznie się od zera i .konfigurator plik zostanie wygenerowany po zapisaniu naszej konfiguracji. Zobaczmy trochę Cele konfiguracji możemy użyć:

konfigurator

Jeśli ten cel zostanie wywołany, użytkownik zostaje poproszony o skonfigurowanie jądra, odpowiadając na serię pytań w następujący sposób:

* * Linux/x86 5.1.5 Konfiguracja jądra * * * Kompilator: GCC (GCC) 9.1.1 20190503 (Red Hat 9.1.1-1) * * * Ogólna konfiguracja * kompiluj również sterowniki, które nie załadują (compile_test) [n/y/?] 

Menuconfig

Ten cel wykorzystuje ładne i przyjazne dla użytkownika ncurses interfejs, aby umożliwić nam generowanie lub zaktualizowanie konfiguracji jądra. Jak powiedziano wcześniej, aby móc korzystać z tego interfejsu ncurses-devel Pakiet musi być zainstalowany w systemie.



IntEface konfiguracyjna oparta na NCurses

Korzystając z tego interfejsu, możemy nacisnąć H Klucz przy wyróżnianiu konkretnej opcji w celu uzyskania informacji i sugestii na ten temat:



Uzyskanie informacji o opcji to tylko kwestia jej wyboru i naciśnięcia klawisza H Y W opcji będzie to statycznie zawierać ją do jądra (opcja zostanie oznaczona *), naciskanie N wykluczy to i naciskając M Klucz będzie zawierać go jako moduł (opcja zostanie oznaczona M). Aby wyszukać określoną opcję, możemy użyć / Klucz i podaj ciąg lub regularność do wyszukiwania:

Interfejs NCurses w celu wyszukiwania określonej opcji

xconfig

Wzywając to, czyń cel, aby konfiguracja jądra za pomocą interfejsu graficznego na podstawie interfejsu graficznego Qt narzędzia, jeśli QT-devel Pakiet jest zainstalowany w systemie.



Interfejs konfiguracji oparty na QT

Oldconfig

Ten cel jest przydatny, gdy chcemy użyć już istniejącej konfiguracji jądra jako punktu wyjścia. Kiedy wywołujemy ten cel, jesteśmy zachęcani do skonfigurowania tylko funkcji dostępnych w jądrze, który konfigurujemy, ale nie uwzględniamy w oryginalnym pliku konfiguracyjnym.

LocalModConfig

Wzywanie tego celu wygeneruje lub zaktualizuje nowy plik konfiguracyjny jądra na podstawie modułów aktualnie załadowanych w systemie. Tylko je zostaną uwzględnione w konfiguracji, pozostałe będą wyłączone. Można to wykorzystać jako szybki sposób na uzyskanie dostosowanego jądra na podstawie aktualnego stanu maszyny.

Localyesconfig

Ten cel działa podobnie jak LocalModConfig Z jedną dużą różnicą: funkcje dostarczone przez moduły obecnie załadowane w systemie będą statycznie włączone do jądra.

Kompilowanie i instalowanie jądra

Po zakończeniu konfiguracji jądra możemy skompilować kod źródłowy. Wszystko, co musimy zrobić, to uruchomić:

$ MAK


Operacja może potrwać trochę czasu, w zależności od funkcji, które postanowiliśmy uwzględnić w jądrze. Aby przyspieszyć proces, który możemy uruchomić robić z -J Opcja i określ liczbę zadań, które należy uruchomić jednocześnie: Wartością często używaną dla tej opcji jest liczba logicznych rdzeni procesora + 1. Na maszynie z 4 logicznymi rdzeniami uruchomilibyśmy zatem:

$ make -J5

Po skompilowaniu, aby zainstalować jądro, możemy po prostu uruchomić:

$ sudo tworzy instalację

Pliki podstawowe jądra zostaną skopiowane wewnątrz /uruchomić informator. Aby skompilować i zainstalować moduły jądra, zamiast tego możemy uruchomić:

$ sudo tworzy moduły_install

Moduły jądra zostaną zainstalowane w katalogu poniżej /lib/moduły nazwany na cześć wersji jądra. Wreszcie, aby nowe jądro było dostępne i wybierane w BOOT, musimy zregenerować konfigurację Gruba:

$ sudo grub2 -mkconfig -o/boot/grub2/grub.CFG

Pakowanie jądra

Zamiast instalować skompilowane jądro bezpośrednio, jak to zrobiliśmy powyżej, aby móc zarządzać jego instalacją i usuwaniem za pośrednictwem menedżera pakietów systemowych, możemy utworzyć Pakiet RPM. Aby wykonać zadanie, musimy użyć jednego między RPM-PKG I binrpm-pkg cele. Pierwszy zbuduje zarówno pakiety źródłowe, jak i binarne RPM, drugi tylko binarny. Aby ten cel mógł poprawnie działać, Build RPM Pakiet musi być zainstalowany. Aby zbudować tylko pakiet binarny RPM, uruchomimy:

$ Make binrpm-pkg

Jeśli operacje są wykonywane bez błędów, rpmbuild Drzewo katalogu zostanie utworzone w naszym katalogu domowym. Zbudowany pakiet RPM będzie dostępny w podwodnicy ~/rpmbuild/rpms nazwany na cześć architektury systemu.

Inną opcją jest pakowanie jądra i jego moduł TARGZ-PKG, TARBZ2-PKG I TARXZ-PKG cele, w zależności od kompresji, której chcemy użyć. Tarball zostanie utworzony w katalogu źródła jądra.



Wnioski

W tym samouczku nauczyliśmy się wiedzieć, dlaczego Linux nazywa się jądrem monolitycznym i jak można konfigurować jego komponenty statycznie lub jako moduły. Widzieliśmy, jak pobrać jądro waniliowe i różne metody, których możemy użyć do jego skonfigurowania. Na koniec widzieliśmy, jak go skompilować, pakować i zainstalować w naszym systemie. Ostatnia rada: jeśli zdecydujesz się ponownie skompilować jądro, zawsze dobrym pomysłem jest wywołanie jednego z Cele czyszczące Przed kontynuowaniem:

  • czysty: Usuwa większość wygenerowanych plików, ale zachowaj konfigurację i wystarczającą obsługę kompilacji, aby budować moduły zewnętrzne
  • MrProper: Usuwa wszystkie wygenerowane pliki + config + różne pliki kopii zapasowych
  • distclean: Wykonuje MRProper, a także usuwa pliki kopii zapasowych i łatki edytora

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Pobierz Linux
  • Linux Pliki konfiguracyjne: Top 30 Najważniejsze
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 22.04 JAMMY Jellyfish…
  • Mint 20: Lepsze niż Ubuntu i Microsoft Windows?
  • Czy Linux może uzyskać wirusy? Badanie podatności Linuksa…
  • Rzeczy do zainstalowania na Ubuntu 22.04
  • Jak podwójnie rozruch Kali Linux i Windows 10