Kompilering af en kerne: Hvordan gør man det på en Debian-baseret distro?

Kompilering af en kerne: Hvordan gør man det på en Debian-baseret distro?

Kompilering af en kerne: Hvordan gør man det på en Debian-baseret distro?

I vores forrige post, ring "The Linux Kernel: Kernel Basics" vi henvender os til nogle væsentlige teoretiske grundlag om Operativsystems kerner, som regel; og Linux-kerne, specifik.

Og som vi udtrykte i det, i denne, vil vi afslutte sagt væsentlige teoretiske grundlag med andre vigtige begreber og information, ud over at vise den nuværende procedure for at opnå "kompiler en Linux-kerne" fra bunden, på en Debian GNU/Linux 11 distribution (Bullseye) eller baseret på det.

Linux-kernen: Grundlæggende om kernen

Linux-kernen: Grundlæggende om kernen

Og før du begynder at læse dette indlæg om "kompiler en kerne" Linux Generelt vil vi efterlade nogle links til tidligere relaterede indlæg til senere læsning:

Linux-kernen: Alt om kernen i det gratis operativsystem
relateret artikel:
Linux-kernen: Grundlæggende om kernen
sårbarhed
relateret artikel:
Indtil videre i denne måned er flere sårbarheder fundet i Linux-kernen allerede blevet afsløret

Byg en kerne: Byg selvstudie

Byg en kerne: Byg selvstudie

Hvad vil det sige at kompilere et program?

Dybest set dette teknisk proces (også kaldet emballage) består i at opnå konvertering af kildekoden til et program eller en del af softwaren, fra dens kilde (programmeringssprog, der bruges til at skrive sig selv) til en læsbart produkt (programmeringssprog på højt niveau kan fortolkes) af en computer.

Det vil sige opnå transformere fra din kildekode indtil det bliver en eksekverbart og funktionelt program, ved at bruge en processor (kompileringssoftware) til konvertering af det anvendte programmeringssprog til en kode af binær- og assembler-type.

Og når det kommer til udvikle og kompilere enhver form for pakke, applikation og program, grundlæggende og native, ligesom kerner om Debian GNU / Linux, er følgende pakker egnede og nødvendige for at opnå en vare udviklingsstøttebase, og disse er:

apt install autoconf automake autotools-dev build-essential dh-make debhelper debmake devscripts dpkg fakeroot file gfortran git gnupg fp-compiler lintian patch pbuilder perl python quilt xutils-dev
Optimer dine GNU/Linux: Debian-pakker til at udvikle apps
relateret artikel:
Optimer dine GNU/Linux: Debian-pakker til at udvikle apps

Fordele og ulemper ved at kompilere en Linux-kerne fra bunden

Når vi specialkompilerer og konfigurerer fra bunden en specifik kerne til en bestemt computer, kan vi opnå følgende fordele:

  • Opnå bedre ydeevne og lavere CPU-forbrug.
  • Få en bedre optimering og et lavere forbrug af RAM-hukommelse.
  • Forbedre tilpasningsevnen og kompatibiliteten af ​​operativsystemet.
  • Øg effektiviteten og produktiviteten af ​​operativsystemet.

Mens vi tværtimod kunne generere følgende ulemper:

  • Drifts- og tilgængelighedsfejl af de ønskede ressourcer og tjenester på den anvendte computer på grund af dårlige konfigurationer og problemer forårsaget under kompileringen.
  • Et konstant, langt og kedeligt arbejde i starten med at generere det, og derefter til senere for at holde det opdateret manuelt. Hvilket kan gå fra minutter til timer, afhængigt af den anvendte hardware.
  • Lange timers studier og prøver, da der er behov for et højt niveau af viden både om de tilgængelige konfigurationsmuligheder i kernen og om computeren (endelig hardware), hvor den vil blive udført.

Tilgængelige kernekategorier

Tilgængelige kernekategorier

til kompiler en kerne, den første ting, vi skal vide, er, hvilken kerne vi skal vælge. For at gøre dette skal vi gå til officielle hjemmeside af kernerne, og vælg en blandt de eksisterende kategorier. Hvilke er følgende:

  • Hovedlinje for udvikling (Mainline): Denne kategori inkluderer de kerner i udviklingsstadiet, derfor indeholder de nye funktioner og funktioner, der skal testes, før de kan sættes i en stabil version. Disse vedligeholdes og frigives direkte af Linus Torvalds, og udgives i gennemsnit hver 2-3 måned.
  • Stabil: Denne kategori inkluderer de kerner, der efter at have bestået testene i den lange udviklingsproces bliver stabile, så de kun er genstand for rettelser gennem en udpeget officiel vedligeholder. Desuden har de kun nogle få fejlrettelser, indtil den næste Mainline er tilgængelig.
  • Langsigtet: Denne kategori inkluderer de kerner, der efter at have bestået testene af den lange udviklingsproces bliver stabile, men som understøttes af fejlrettelser og vedligeholdelse i ekstremt lang tid (år). Årsagen til, at der anvendes vigtige fejlrettelser, som kan blive meget hyppige.

Hvordan kompilerer man en kerne i en GNU/Linux Debian Bullseye Distro?

Hvordan kompilerer man en kerne i en GNU/Linux Debian Bullseye Distro?

Efter at have valgt en specifik kerneversion, på den officielle hjemmeside, og allerede kender (kopierer) din download sti gennem tarball knap af samme, er det kun tilbage at udføre følgende procedure, som vi vil vise med som et eksempel Stabil Linux-kerne version 6.0.8:

Trin 1

cd /usr/src
wget -c https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-6.0.8.tar.xz
sudo unxz linux-6.0.8.tar.xz
sudo tar xvf linux-6.0.8.tar
sudo ln -s linux-6.0.8 linux
cd /usr/src/linux
sudo make clean && make mrproper
sudo cp /boot/config-`uname -r`* .config
make menuconfig

Ved at køre denne sidste kommando starter "Kernekonfigurationsmenu", hvor du kan konfigurere (tilpas) parametre din præference eller behov. Derudover er det her væsentligt ikke at glemme, at det er nødvendigt marker eller fjern markeringen af ​​64-bit kerneindstillingen, alt efter hvad der ønskes eller kræves. Og også, efter at have foretaget alle de foretagne ændringer, skal du tryk på knappen Gem og derefter den Afslut knap.

Kernelkonfigurationsmenu

Trin 2

På dette tidspunkt er der 2 mulige veje at tage:

Kun kerneinstallation
sudo make
sudo make modules_install
sudo make install
sudo update-grub; sudo update-grub2; sudo update-initramfs -u
sudo apt clean; sudo apt autoclean; sudo apt autoremove; sudo apt remove; sudo apt purge

Kernelinstallation og generering af .deb-filer

Kernelinstallation og generering af .deb-filer

For at udføre dette trin er det relevant at få installationen af ​​pakken kaldt kerne-pakke. Derfor er proceduren som følger og starter som følger:

sudo wget -c http://ftp.us.debian.org/debian/pool/main/k/kernel-package/kernel-package_13.018+nmu1~bpo9+1_all.deb
sudo apt install ./kernel-package_13.018+nmu1~bpo9+1_all.deb
fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers
cd /usr/src
sudo dpkg -i *.deb

I tilfælde af, at du under kompileringsprocessen får en fejl relateret til kernecertifikater, forbliver det som en mulighed for at kunne udføre følgende kommandoordre for at rette det automatisk:

sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/s/^/#/g' .config

Ja, alt er endt godt, alt der er tilbage er at genstarte vores computer og teste hvordan vores operativsystem kører med den nye Kernel. Som han er vist før og efter, i følgende skærmbilleder:

Før kerneinstallation

Før installation

Efter kerneinstallation

Efter installation

relateret artikel:
Fast Kernel Headers, et sæt patches, der fremskynder kernekompileringen med 50-80 %
relateret artikel:
Kerla: en ny kerne skrevet i Rust og kompatibel med Linux ABI

Roundup: Bannerpost 2021

Resumé

Sammenfattende håber vi, at denne tutorial vil være meget nyttig, både til Avancerede brugere som Udviklere af Distros eller Respins. som normalt kræver "kompiler en kerne" specifikt på et aktuelt installeret GNU/Linux-operativsystem eller et, der genereres fra bunden, for at inkorporere en bedre ydeevne og optimering på specifik hardware. For det meste, med det formål at opnå, en lavere CPU- og RAM-forbrug.

Selvom, hvis nogen kender til nogen en anden nyttig måde at udføre nævnte procedure eller kender nogen forslag, anbefaling eller rettelse til det, der er angivet her, er du velkommen til at gøre det gennem kommentarerne. Og ja, du kunne simpelthen lide denne publikation, stop ikke med at kommentere den og dele den med andre. Husk også at besøge vores «hjemmeside» for at udforske flere nyheder samt deltage i vores officielle kanal for Telegram af DesdeLinux, Vest gruppe for mere information om dagens emne.


Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.