Jak skompilować jądro waniliowe Linux ze źródła na Fedorze
- 2170
- 691
- Juliusz Sienkiewicz
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
Kategoria | Wymagania, konwencje lub wersja oprogramowania |
---|---|
System | Fedora |
Oprogramowanie |
|
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