Kompilowanie własnego kernela ma swoje zalety i wady. Jednakże, nowi użytkownicy/administrowie Linuksa mają trudności z kompilacją jądra. Kompilowanie jądra wymaga zrozumienia kilku rzeczy a następnie wpisania kilku komend. To howto krok po kroku obejmuje kompilację jądra Linux w wersji 5.12 pod Ubuntu lub Debian Linux. Poniższe instrukcje zostały pomyślnie przetestowane na RHEL/CentOS 7/8 (i klonach), Debian Linux, Ubuntu Linux i Fedora Linux 30/31. Jednakże, instrukcje pozostają takie same dla każdej innej dystrybucji Linuksa
Jak skompilować i zainstalować jądro Linux Kernel 5.12
Procedura budowania (kompilacji) i instalacji najnowszego jądra Linuksa ze źródła jest następująca:
- Pobierz najnowsze jądro z kernel.org
- Zweryfikuj jądro
- Rozpakuj plik tarballa z jądrem
- Skopiuj istniejący plik konfiguracyjny jądra Linux
- Skompiluj i zbuduj jądro Linux 5.12
- Zainstaluj jądro Linux i moduły (sterowniki)
- Aktualizacja konfiguracji Grub
- Ponowne uruchomienie systemu
Zobaczmy wszystkie kroki w szczegółach.
Krok 1. Pobierz najnowszy kod źródłowy jądra Linux


Odwiedź oficjalną stronę projektu i pobierz najnowszy kod źródłowy. Kliknij na duży żółty przycisk z napisem „Latest Stable Kernel„:
Nazwa pliku to linux-x.y.z.tar.xz, gdzie x.y.z jest numerem wersji jądra Linuksa. Na przykład plik linux-5.12.1.tar.xz reprezentuje jądro Linuksa w wersji 5.12.1. Użyj polecenia wget, aby pobrać kod źródłowy jądra Linuksa:
$ cd /usr/src
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.12.1.tar.xz
Step 2. Rozpakuj tar.xz plik
Naprawdę nie musisz rozpakowywać kodu źródłowego w /usr/src. Możesz wyodrębnić kod źródłowy w swoim katalogu $HOME lub w dowolnym innym katalogu używając następującej komendy unzx lub xz:
$ unxz -v linux-5.12.1.tar.xz
Lub
$ xz -d -v linux-5.12.1.tar.xz
Weryfikacja tartball jądra Linux za pomocą pgp
Najpierw pobierz sygnaturę PGP dla linux-5.12.1.tar:
$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.12.1.tar.sign
Spróbuj to zweryfikować:
$ apt-get install gnupg
$ gpg --verify linux-5.12.1.tar.sign
Przykładowe dane wyjściowe:
gpg: assuming signed data in 'linux-5.12.1.tar' gpg: Podpisano w nie, 2 maj 2021, 11:13:09 CEST gpg: przy użyciu klucza RSA 647F28654894E3BD457199BE38DBBDC86092693E gpg: Nie można sprawdzić podpisu: No public key
Pobierz klucz publiczny z serwera kluczy PGP w celu weryfikacji podpisu, np. klucz RSA ID 79BE3E4300411886 (from the above outputs):$ gpg --recv-keys 647F28654894E3BD457199BE38DBBDC86092693E
Przykładowe dane wyjściowe:
gpg: key 38DBBDC86092693E: new key but contains no user ID - skipped gpg: Ogółem przetworzonych kluczy: 1 gpg: bez identyfikatora: 1 gpg: key 79BE3E4300411886: 7 duplicate signatures removed gpg: key 79BE3E4300411886: 172 signatures not checked due to missing keys gpg: /home/vivek/.gnupg/trustdb.gpg: trustdb created gpg: key 79BE3E4300411886: public key "Linus Torvalds <torvalds@kernel.org>" imported gpg: no ultimately trusted keys found gpg: Total number processed: 1 gpg: imported: 1
Teraz ponownie zweryfikuj klucz gpg za pomocą polecenia gpg:$ gpg --verify linux-5.12.1.tar.sign
Sample outputs:
gpg: assuming signed data in 'linux-5.12.1.tar' gpg: Signature made Sun 12 Aug 2018 04:00:28 PM CDT gpg: using RSA key 79BE3E4300411886 gpg: Good signature from "Linus Torvalds <torvalds@kernel.org>" [unknown] gpg: aka "Linus Torvalds <torvalds@linux-foundation.org>" [unknown] gpg: WARNING: This key is not certified with a trusted signature! gpg: There is no indication that the signature belongs to the owner. Primary key fingerprint: ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886
Jeśli nie otrzymasz informacji „BAD signature” z polecenia „gpg -verify”, rozpakuj/rozpakuj plik tar z jądrem Linuksa za pomocą polecenia tar, enter:$ tar xvf linux-5.12.1.tar
Step 3. Konfiguracja funkcji i modułów jądra systemu Linux
Przed rozpoczęciem budowania jądra, należy skonfigurować funkcje jądra Linux. Musisz także określić, które moduły jądra (sterowniki) są potrzebne dla twojego systemu. Zadanie to może być przytłaczające dla nowego użytkownika. Proponuję abyś skopiował istniejący plik konfiguracyjny używając komendy cp:$ cd linux-5.12.1
$ cp -v /boot/config-$(uname -r) .config
Sample outputs:
'/boot/config-4.15.0-30-generic' -> '.config'
Step 4. Zainstaluj wymagane kompilatory i inne narzędzia
Musisz mieć zainstalowane narzędzia programistyczne, takie jak kompilatory GCC i powiązane narzędzia, aby skompilować jądro systemu Linux.
Jak zainstalować GCC i narzędzia deweloperskie na Linuksie Debian/Ubuntu
Type the following apt command or apt-get command to install the same:$ sudo apt-get install build-essential libncurses-dev bison flex libssl-dev libelf-dev
See “Ubuntu Linux Install GNU GCC Compiler and Development Environment” for more info.
Jak zainstalować GCC i narzędzia programistyczne w CentOS/RHEL/Oracle/Scientific Linux
Try yum command:$ sudo yum group install "Development Tools"
OR$ sudo yum groupinstall "Development Tools"
Additional packages too:$ sudo yum install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
How to install GCC and development tools on a Fedora Linux
Run the following dnf command:$ sudo dnf group install "Development Tools"
$ sudo dnf install ncurses-devel bison flex elfutils-libelf-devel openssl-devel
Step 5. Configuring the kernel
Teraz możesz rozpocząć konfigurację kernela wpisując jedną z poniższych komend w katalogu z kodem źródłowym:
- $ make menuconfig – Tekstowe kolorowe menu, listy radiolokacyjne i okna dialogowe. Opcja ta jest również przydatna na zdalnym serwerze, jeśli chcesz skompilować kernel zdalnie.
- $ make xconfig – X windows (Qt) based configuration tool, works best under KDE desktop
- $ make gconfig – X windows (Gtk) based configuration tool, works best under Gnome Dekstop.

For example, run make menuconfig command launches following screen:$ make menuconfig
Musisz wybrać różne opcje w zależności od swoich potrzeb. Każda opcja konfiguracji ma przypisany przycisk HELP, więc wybierz przycisk help aby uzyskać pomoc. Proszę zauważyć, że 'make menuconfig’ jest opcjonalne. Użyłem go tutaj tylko do celów demonstracyjnych. Możesz włączyć lub wyłączyć pewne funkcje lub sterownik jądra za pomocą tej opcji. Łatwo jest usunąć wsparcie dla sterownika urządzenia lub opcji i skończyć z uszkodzonym jądrem. Na przykład, jeśli sterownik ext4 zostanie usunięty z pliku konfiguracyjnego jądra, system może się nie uruchomić. Jeśli masz wątpliwości, po prostu pozostaw wsparcie w jądrze.
Step 5. How to compile a Linux Kernel

Rozpocznij kompilację i aby utworzyć skompresowany obraz jądra, wpisz:$ make
To speed up compile time, pass the -j as follows:## use 4 core/thread ##
$ make -j 4
## get thread or cpu core count using nproc command ##
$ make -j $(nproc)
Kompilacja i budowanie jądra Linuksa zajmuje znaczną ilość czasu. Czas kompilacji zależy od zasobów twojego systemu, takich jak dostępny rdzeń procesora i aktualne obciążenie systemu. Więc miej trochę cierpliwości.
Install the Linux kernel modules

$ sudo make modules_install
Install the Linux kernel

So far we have compiled the Linux kernel and installed kernel modules. It is time to install the kernel itself:$ sudo make install
It will install three files into /boot directory as well as modification to your kernel grub configuration file:
- initramfs-5.6.9.img
- System.map-5.6.9
- vmlinuz-5.6.9
Step 6. Update grub config
You need to modify Grub 2 boot loader configurations. Type the following command at a shell prompt as per your Linux distro:
CentOS/RHEL/Oracle/Scientific and Fedora Linux
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
$ sudo grubby --set-default /boot/vmlinuz-5.6.9
You can confirm the details with the following commands:grubby --info=ALL | more
grubby --default-index
grubby --default-kernel
Debian/Ubuntu Linux
The following commands are optional as make install does everything for your but included here for historical reasons only:$ sudo update-initramfs -c -k 5.6.9
$ sudo update-grub
How to build and install the latest Linux kernel from source code
You have compiled a Linux kernel. The process takes some time, however now you have a custom Linux kernel for your system. Let us reboot the system.
Reboot Linux computer and boot into your new kernel
Just issue the reboot command or shutdown command:# reboot
Verify new Linux kernel version after reboot:$ uname -mrs
Sample outputs:
Linux 5.6.9 x86_64
Conclusion – Linux Compile Kernel version 5.6.9
Configurations! You completed various steps to build the Linux kernel from source code and compiled kernel should be running on your system. I strongly suggest that you always keep backup of essential data and visit the kernel.org page here for more info.
Źródło: www.cyberciti.biz







