Hoe u uw eigen Linux-kernel kunt compileren

Het compileren van je eigen Linux-kernel is een van die geeky, technische dingen, toch? We hebben al een paar redenen behandeld waarom u dit zou willen doen - nu is het tijd om het zelf te proberen!

Het compileren van je eigen Linux-kernel is een van die geeky, technische dingen, toch?  We hebben al een paar redenen behandeld waarom u dit zou willen doen - nu is het tijd om het zelf te proberen!
Advertentie

Samen met het installeren van Gentoo Gentoo: een Linux-distributie waar je je eigen geoptimaliseerde software compileert Gentoo: een Linux-distributie waar je je eigen geoptimaliseerde software compileert Het enorme aantal verschillende manieren waarop Linux kan worden uitgevoerd is verbluffend, want er zijn genoeg keuzemogelijkheden om ga eromheen. Hoewel er veel distributies zijn die afhankelijk zijn van de .deb ... Lees meer, het compileren van je eigen Linux-kernel is een van die dingen die als zeer nerd en technisch worden beschouwd. We hebben al enkele redenen behandeld 3 Redenen waarom je graag je eigen kernel zou willen compileren [Linux] 3 Redenen waarom je misschien je eigen kernel zou willen compileren [Linux] Linux-systemen zijn zo belachelijk flexibel en configureerbaar, het is ronduit idioot. Een groot deel van waarom Linux zo flexibel is, is vanwege de modulaire structuur. Elk systeemonderdeel en programma is opgesplitst ... Lees meer waarom u dit zou willen doen. Voordat we u door de stappen leiden, vindt u hier een kort overzicht van enkele belangrijke concepten.

Wat is een kernel?

Kortom, het is een essentieel onderdeel van uw besturingssysteem, zo niet het belangrijkste. Een besturingssysteem is verantwoordelijk voor het laten werken van uw programma's, door hen toegang te geven tot uw hardware. Het is echter de kernel De Linux Kernel: een uitleg in de termen van de leek De Linux-kernel: een uitleg in de termen van de leek Er is maar één de facto ding dat Linux-distributies gemeen hebben: de Linux-kernel. Maar hoewel er vaak over wordt gesproken, weten veel mensen niet precies wat het doet. Lees meer die al deze taken daadwerkelijk uitvoert.

De Linux-kernel is speciaal omdat deze op maat kan worden gemaakt voor de hardware die u bezit. Vergelijk dit met de Windows NT-kernel, die over het algemeen op elke computer hetzelfde zal zijn. Om dit te doen, moet de kernel door een proces gaan dat compileren heet.

Wat is compileren?

Over het algemeen worden programma's geschreven in een door mensen leesbaar formaat. Dit maakt het gemakkelijker voor mensen om software te maken. De Linux-kernel is bijvoorbeeld voornamelijk geschreven in een programmeertaal die C heet. Computers kunnen dit echter niet begrijpen. Ze herkennen alleen een ingewikkelde taal die machinecode wordt genoemd . Om dit te doen, moeten de tekstregels worden vertaald. Hoe compileren en installeren TAR GZ en TAR BZ2 bestanden in Ubuntu Linux Compileren en installeren TAR GZ en TAR BZ2 bestanden in Ubuntu Linux Lees meer met een speciaal stuk software genaamd a compiler .

Verschillende compilers worden gebruikt om verschillende programmeertalen te converteren. GCC is bijvoorbeeld een compiler die C-code vertaalt in machinecode (onder andere). Maar dat is niet alles wat ze doen - compilers kunnen de vertaalde code ook optimaliseren voor specifieke machines. Daarnaast kunnen ze ook ongewenste functies uit programma's verwijderen.

Meestal is dit proces al voor veel software gedaan. In plaats daarvan downloaden mensen de geconverteerde binaire instructies, die uit de doos werken. De webbrowser Gebruikt u bijvoorbeeld de beste webbrowser voor Linux in 2016? Gebruikt u de beste webbrowser voor Linux in 2016? Het gebruik van de "verkeerde" browser kan leiden tot veel onnodige hoofdpijn, verspilde productiviteit en zelfs verloren gegevens. Dus welke browser is het beste voor uw Linux-computer? Laten we het uitzoeken. Meer informatie die u nu uitvoert, is al gecompileerd. Dit komt omdat het compileren van iets een beetje ingewikkeld en tijdrovend kan zijn. Zie het als het vertalen van een groot boek in een vreemde taal.

Kort gezegd, het compileren van de kernel betekent dat de code wordt geconverteerd naar iets dat daadwerkelijk op je computer zal worden uitgevoerd .

Kernel Bronnen verkrijgen

Je kunt geen vuur maken zonder brandstof. Evenzo kunt u geen programma's compileren als u de code hiervoor niet in de eerste plaats heeft. De methode is over het algemeen hetzelfde voor de meeste Linux-besturingssystemen, op enkele uitzonderingen na. Velen van hen leveren hun eigen aangepaste kernelbronnen. Je zou moeten proberen om dat te gebruiken als je kunt. Als u bijvoorbeeld een op Debian gebaseerd besturingssysteem zoals Ubuntu gebruikt, moet u de bronnen installeren met behulp van deze opdrachten:

sudo apt-get update sudo apt-get install linux-source 

Hoe compileer je je eigen Linux-kernel Debian Linux-bron

Je kunt ook verschillende versies van dit pakket installeren (bijvoorbeeld linux-source-4.8.0 ) als je wilt. Je vindt de geïnstalleerde bestanden in de / usr / src / directory, dus ga daarheen en bekijk de inhoud:

 cd /usr/src/ ls 

Je ziet een bestand dat eindigt op .tar.bz2 . Dit is de bron die u gaat gebruiken. Pak het uit met dit commando:

 sudo tar xjvf linux-source-4.4.0.tar.bz2 

Zorg ervoor dat je het bestand natuurlijk vervangt door de juiste naam. Het bestand zal vrij groot zijn, dus het proces zal een tijdje duren!

Alternatieve methode

Als je wilt, kun je je bronnen verkrijgen via de officiële Linux Kernel-website. Ik raad dit alleen aan als je Linux-besturingssysteem ze niet levert. Selecteer de gewenste versie en download deze weg. Als u deze route doorloopt, moet u deze downloaden naar een lege map. Op deze manier, als je in de toekomst meer kernels wilt compileren, heb je een leuke map om ze in te organiseren.

Het compileren van uw eigen Linux kernel Vanilla Kernel Bronnen

Na dit gedaan te hebben, extraheert u het bestand met deze opdracht:

 tar xJvf linux-4.9.11.tar.xz 

Hoe je je eigen Linux Kernel Vanilla Linux-bron compileert

Zorg ervoor dat u de bestandsnaam gebruikt die overeenkomt met de versie die u hebt gedownload!

Pas de kernel aan

Dit is de stap waar je kunt kiezen welke delen van de kernel je wilt verwijderen. De kernel wordt bijvoorbeeld geleverd met veel verschillende stuurprogramma's voor verschillende apparaten. Als je die ondersteuning niet nodig hebt, kan het verwijderen ervan een aantal snelheidsvoordelen opleveren, samen met een kleinere kernel.

voorwaarden

Voordat u verder gaat, moet u enkele programma's installeren waarmee u het programma kunt aanpassen en compileren.

Op Debian-gebaseerde systemen heb je onder andere het essentiële pakket nodig:

 sudo apt-get install build-essential gcc libncurses5-dev libssl-dev 

Het libncurses5-dev- pakket zal het gemakkelijker maken om de kernel te configureren, dus zorg ervoor dat je het installeert. Andere Linux-besturingssystemen hebben een soortgelijk programma, maar dit kan een andere naam hebben. Bijvoorbeeld, als je Fedora 5 Redenen gebruikt om Pure Open Source Distro te gebruiken, Fedora 5 redenen om Pure Open Source Distro te gebruiken, is Fedora Fedora niet zo bekend als Ubuntu en heeft het de reputatie moeilijk te gebruiken te zijn. Maar als dit waar is, waarom blijven zoveel mensen Fedora gebruiken? Lees meer, het wordt ncurses genoemd .

Als het nog niet is geïnstalleerd, hebt u ook de GNU Compiler Collection (GCC) nodig. Dit is de tool die verantwoordelijk is voor het vertalen van de onbewerkte broncode in iets dat begrijpelijk is voor computers. Dat wil zeggen, compileren.

Nadat je deze programma's hebt geïnstalleerd, open je je terminal zodat je je in de uitgepakte bronmap van Linux bevindt. Als u bijvoorbeeld de linux-source methode gebruikt, zou u dit doen:

 cd /usr/src/linux-source-4.4.0 

Kernel configuratiebestand

Voordat u de kernel compileert, moet u GCC vertellen hoe u het wilt doen. U doet dit met behulp van een opdrachtregelprogramma met de naam make . Voer deze opdracht in:

 sudo make localmodconfig 

Hiermee wordt een bestand met de naam .config gemaakt, dat GCC vertelt wat er uit de kernelbronnen moet worden gecompileerd. De make localmodconfig- opdracht detecteert momenteel draaiende kernelcomponenten en markeert deze voor compilatie. Als de kernel in een map staat waarvan je de eigenaar bent, heb je sudo niet nodig om te werken.

U kunt enkele berichten tegenkomen, zoals de onderstaande. Druk gewoon op de Enter- toets om ze over te slaan - het zijn meestal gewoon nieuwe kernelfuncties.

Hoe u uw eigen Linux-kernel kunt compileren Maak Localmodconfig nieuw

Localmodconfig is echter niet perfect! Als u op dit moment bepaalde delen van uw computer niet gebruikt, detecteert het mogelijk niet alle dingen die het ondersteunt. Daarom moet u ze handmatig inschakelen. U kunt deze stap ook helemaal overslaan en in plaats hiervan de volgende opdracht gebruiken. Hiermee compileer je de nieuwe kernel met dezelfde opties als degene die je momenteel gebruikt.

Als u dat wilt, maar eerder de opdracht localmodconifg hebt gebruikt, doet u het volgende:

 sudo make clean 

Dit geeft je een schone build. U moet deze opdracht ook gebruiken als u eerder een kernel met deze bronnen hebt gecompileerd.

Verdere configuratie

In de bronmap van de kernel bevindt zich een bestand met de naam .config . Dit is wat GCC zal gebruiken om te kiezen wat te compileren. In plaats van deze handmatig te bewerken (niet aanbevolen), gebruikt u in plaats daarvan een paar terminalhulpmiddelen. Dit maakt het selecteren van compileeropties veel eenvoudiger.

Nadat u dit hebt gedaan, stelt u het verder op:

 sudo make nconfig 

Je ziet een kleurrijk menu verschijnen. Dit is het kernelconfiguratiemenu. Gebruik de pijltjestoetsen om te navigeren. U kunt op de rechterpijltoets drukken om vermeldingen uit te vouwen met een -> teken ernaast. Navigeer uit deze submenu's door op de linkerpijltoets te drukken.

Hoe compileer je je eigen Linux-kernel Maak Nconfig

U kunt menu-items met het of [] -teken naast elkaar schakelen door op de spatiebalk te drukken. Dit zal door de verschillende menu-opties bladeren. Als je een * of M vanbinnen ziet, wordt die specifieke kernelcomponent gecompileerd. Het enige verschil tussen beide is dat de M- optie wordt geladen wanneer dat nodig is. Dit kan handig zijn als u bijvoorbeeld een stuurprogramma compileert, dat niet vaak zal worden gebruikt.

Als u meer wilt weten over wat een specifieke switch doet, drukt u op F2 . U ziet een nuttige beschrijving van wat u aan het compileren bent.

Hoe compileer je je eigen Linux-kernel Maak Nconfig F2

Als je klaar bent, druk je op de F9- knop om op te slaan en af ​​te sluiten.

Hoe u uw eigen Linux-kernel kunt compileren Maak Nconfig Opslaan

Compilatie en installatie van de kernel

Nu u een aangepast maakbestand hebt gemaakt, moet u compileren hoe TAR GZ en TAR BZ2-bestanden te compileren en te installeren in Ubuntu Linux TAR GZ en TAR BZ2-bestanden compileren en installeren in Ubuntu Linux Lees Meer over de kernel. Voer deze opdracht in:

 sudo make -j$(nproc --all) 

U hebt sudo niet nodig als u de kernelbronnen van internet hebt gedownload. Het tweede deel van de opdracht helpt om de compileertijd van de kernel te versnellen, door gebruik te maken van al je CPU-kernen. Wat is een processorkern? [MakeUseOf Explains] Wat is een processorkern? [MakeUseOf Explains] Elke computer heeft een processor, of het nu een kleine efficiency-professional is of een krachtige powerhouse, anders zou deze niet kunnen werken. Natuurlijk, de processor, ook wel de CPU of centrale verwerking ... Lees meer. U kunt hiervan afkomen of het nummer wijzigen in iets anders (bijv. -j2 ), als u uw computer wilt gebruiken voor andere taken zonder al te veel haperingen. Dit maakt het compileren echter ook langzamer!

Dit proces kan en zal heel lang duren. Hoe minder u ervoor koos om te compileren, hoe korter het zal zijn. Toch zul je waarschijnlijk geduld moeten hebben.

Typ daarna deze opdracht in om de rest van de kernel te compileren:

 sudo make modules_install 

Om deze kernel daadwerkelijk te gebruiken, moet je deze opdracht invoeren:

 sudo make install 

Dit zal de kernel automatisch naar je / boot- map kopiëren en de juiste bestanden genereren om het te laten werken.

Schakelen van kernels met GRUB

Als u opnieuw opstart na het installeren van uw nieuwe kernel, werkt uw systeem mogelijk niet ! Dit is meestal te wijten aan een onjuist gecompileerde kernel (dat wil zeggen, niet genoeg ondersteuning voor uw computer). Een voorbeeld, mijn eigen laptop. Voor het geval dit gebeurt, raad ik aan om GRUB te bewerken. Hoe de GRUB bootloader aan te passen met behulp van BURG [Ubuntu] Hoe de GRUB bootloader aan te passen met behulp van BURG [Ubuntu] Read More zodat het terug kan schakelen naar oudere kernels. Om dit te doen, gebruik deze opdracht:

 sudo nano /etc/default/grub 

Het compileren van je eigen Linux-kernel Ubuntu GRUB

Plaats een # -teken voor de regels GRUB_HIDDEN_TIMEOUT en GRUB_HIDDEN_TIMEOUT_QUIET . Sla nadien deze wijzigingen op met deze opdracht:

 sudo grub-mkconfig -o /boot/grub/grub.cfg 

Hoe je je eigen Linux kernel GRUB-menu compileert

Als u nu uw computer opnieuw opstart, kunt u overschakelen naar een oudere kernel als uw nieuwe niet werkt. Ga gewoon naar het menu-item Geavanceerde opties en selecteer de kernel die je wilt opstarten. Als alles goed komt, gefeliciteerd! Je gebruikt de kernel die je zelf hebt gecompileerd.

Ben je geïnteresseerd in het compileren van meer kernels? Andere programma's? Vind je het de moeite waard?

Afbeeldingscredits: chombosan / Shutterstock

In this article