Flash Sale! to get a free eCookbook with our top 25 recipes.

Jak skompilować i zainstalować Linux Kernel 5.12 z kodu źródłowego

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:

  1. Pobierz najnowsze jądro z kernel.org
  2. Zweryfikuj jądro
  3. Rozpakuj plik tarballa z jądrem
  4. Skopiuj istniejący plik konfiguracyjny jądra Linux
  5. Skompiluj i zbuduj jądro Linux 5.12
  6. Zainstaluj jądro Linux i moduły (sterowniki)
  7. Aktualizacja konfiguracji Grub
  8. 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