Handleidingen > Kernel compileren Fedora

Contents

Waarom een eigen kernel compileren?

Hoewel het Fedora Project haar kernel zoveel mogelijk hardware probeert te laten ondersteunen, komt het nog wel eens voor dat er een bepaald stuk hardware niet werkt. In dit geval kan het helpen je eigen kernel te bouwen, welke de benodigde ondersteuning ingebouwd krijgt. Daarnaast is het handig als je een kernel wilt bouwen, die specifiek is gebouwd voor jouw PC. Je laat bijvoorbeeld hardwareondersteuning voor hardware die niet in jouw PC voorkomt weg. Dit kan tot gevolg hebben dat je computer iets sneller wordt en dat er mogelijk minder geheugen wordt gebruikt, omdat er geen onnodige dingen worden geladen. Maar natuurlijk kan je het ook doen omdat je leuk vind of gewoon eens wat nieuws wil uitproberen.

Je moet er wel op letten dat wanneer je belangrijke delen uit de kernel laat, dat je PC niet zal opstarten met jouw kernel. Zorg er daarom altijd voor dat je je oude kernel niet weggooit!

De kernel compileren gebeurt op eigen risico. Doe dit alleen als je weet waar je mee bezig bent! Noch de schrijver(s) van dit artikel noch Fedora-Linux.nl zijn aansprakelijk voor eventuele schade die kan optreden bij het volgen van deze Howto!

Jouw eigen kernel compileren

Benodigdheden bij het compileren van de kernel

Ontwikkelingshulpmiddelen

Het is ten eerste belangrijk dat je de ontwikkelingshulpmiddelen hebt geïnstalleerd. Wanneer je deze niet hebt meegeïnstalleerd tijdens de installatie van Fedora Core, moet je deze alsnog installeren. Om deze achteraf te installeren moet je de volgende stappen volgen:

  • Open Software toevoegen/verwijderen. Deze is te vinden via Werkplek > Systeeminstellingen.
  • Geef het root wachtwoord op wanneer hierom wordt gevraagt.
  • In het venster wat hierna verschijnt scroll je naar het onderdeel “Ontwikkeling”
  • Vink hier ontwikkelingshulpmiddelen aan, als dit nog niet het geval is.
  • Klik op Vernieuwen en volg de stappen die hierna volgen

Voor bovenstaande stappen is de zijn de installatiecd’s voor Fedora Core nodig. Heb je de installatiecd’s niet, bijvoorbeeld omdat je een Netwerkinstallatie hebt uitgevoerd, dan kan je met yum de ontwikkelinghulpmiddelen installeren. Dat kan op deze manier:

su -
  • Typ dit commando:
yum groupinstall "Development Tools"

Nadat de ontwikkelingshulpmiddelen geïnstalleerd zijn, kunnen we door naar de volgende stap.

De kernel zelf…

In tegenstelling tot wat velen denken moet de kernel van Fedora Core niet van kernel.org gehaald worden. Het Fedora Project heeft eigen Source RPMS op de servers en mirrors staan. Op de officiele Fedora Core server kan je zowel de kernel downloaden die bij je installatie aanwezig was, of degene die het laatst is uitgebracht. Om de laatste te downloaden kies je eerst updates. Nu moet je kiezen voor welke versie je bestanden wilt downloaden. Klik hiertoe op de juiste versienummer van jouw Fedora Core installatie. Vervolgens klik je op de map die de naam SRPMS draagt. Hier zoek je naar de kernel. Deze heeft een naam die lijkt op de volgende: kernel-x.x.xx-x.xxx_FCX.src.rpm. Deze moet je downloaden en ergens opslaan waar je hem makkelijk terug kan vinden.

Het echte werk

De bron installeren

De Source RPM die zojuist is gedownload, moet geïnstalleerd worden. In dit geval wordt hiermee bedoelt dat het pakket uitgepakt moet worden.

  • Open een terminal
  • Wordt root met de opdracht su –
  • Wissel naar de map waar de download is opgeslagen
  • Voer onderstaande opdracht uit:
 rpm -ivh kernel-*.src.rpm

Hierna is de inhoud van het RPM pakket uitgepakt naar de map /usr/src/redhat

RPM pakket opbouwen

De volgende stap is niet zo moeilijk. Wissel naar de volgende map:

 cd /usr/src/redhat/SPECS

Eenmaal in deze map aangekomen geef je de volgende opdracht:

 rpmbuild -bp --target=arch kernel-x.x.spec

Waarbij:

  • arch de architectuur is van jouw CPU. Dit kan zijn: i386, i586, i686, x86_64 of PPC. Je kunt je architectuur achterhalen door het commando arch uit te voeren in een terminal.
  • x.x in kernelx.x.spec wordt vervangen door de juiste getallen. Deze kunnen gevonden worden door de opdracht ls te geven

De kernel bewerken

Wanneer bovenstaande stappen goed zijn verlopen, kan het aanpassen van de kernel beginnen. Hiervoor moet er eerst weer overgeschakeld worden naar een andere map:

cd /usr/src/redhat/BUILD/kernel*/linux*

In deze map moet de volgende opdracht worden gegeven:

 make menuconfig

Met deze opdracht wordt de grafische tekst interface opgebouwd, waarmee je je kernel kunt aanpassen. Hier kun je onderdelen van de kernel inschakelen, uitschakelen of als module instellen. Wanneer je nog hulp nodig hebt, navigeer je met de pijltjestoetsen naar Help. Dit scherm geeft algemene informatie. Wanneer je een kernel onderdeel hebt geselecteerd en je weet niet wat het inhoudt, dan geeft Help hier informatie over. Daarnaast wordt er een advies gegeven, wanneer je niet zeker bent van je keuze.

De kernel installeren

RPM maken

Voordat je je kernel kan installeren, moet je hier een RPM van maken. Om deze te maken moet er een simpele opdracht worden gegeven:

 make rpm

Dit proces kan een tijdje in beslag nemen, afhankelijk van de aanpassingen die je hebt gemaakt in de kernel en de snelheid van je PC. Tijdens dit proces gebeurt er hetzelfde als wat er gebeurt wanneer je de opdracht make geeft, alleen er wordt een RPM gemaakt van de uitvoer. Deze RPM wordt geplaatst in één van de volgende mappen:

 /usr/src/redhat/RPMS/i386
 /usr/src/redhat/RPMS/i486
 /usr/src/redhat/RPMS/i586
 /usr/src/redhat/RPMS/i686
 /usr/src/redhat/RPMS/athlon
 /usr/src/redhat/RPMS/noarch

Meestal komt de RPM gewoon terecht in de eerste map. Als dit niet het geval is, moet je deze zoeken in één van de gegeven mappen. In de volgende stappen wordt er vanuit gegaan dat de RPM in /usr/src/redhat/RPMS/i386 staat. Schakel nu eerst naar deze map:

 cd /usr/src/redhat/RPMS/i386

In deze map moet je de kernel gewoon installeren, net zoals je andere RPM’s via de terminal installeert:

 rpm -ivh kernel*.rpm

Wanneer dit proces klaar is zijn er twee mogelijkheden:

  • De kernel wordt automatisch toegevoegd aan grub.conf
    • In dit geval moet je gewoon je PC opnieuw opstarten en de nieuwe kernel selecteren bij het opstarten.
  • De kernel wordt niet automatisch toegevoegd aan grub.conf
    • Mocht dit het geval zijn, dan moeten onderstaande paragraven nog uitgevoerd worden.

initrd maken

Het kan zijn dat je bij onderstaande stappen de melding command not found krijgt. De reden is onbekend, maar het is op te lossen door jezelf als root aan te melden. Als je command not found krijgt moet je dus even opnieuw inloggen. Let erop dat je root wordt met de opdracht “su -“! Eenmaal als root aangemeld, moet de terminal weer geopend worden en geschakeld worden naar de map /boot.

 cd /boot

In deze map moet de volgende opdracht worden uitgevoerd:

 mkinitrd initrd*versievanjekernel*.img vmlinuz*versievanjekernel*

Hierbij moet je erop letten dat je *versievanjekernel* wel vervangt door het complete getal! Dus geen jokertekens gebruiken, want dit zou kunnen betekenen dat er verkeerde bestanden worden aangemaakt. Een voorbeeld:

 mkinitrd initrd-2.6.11-prep1.1369_FC4smp.img vmlinuz-2.6.11-prep1.1369_FC4smp

Moest er als error komen : /lib/modules/vmlinuz-*versievanjekernel* is not a directory. Ga dan even naar de map /lib/modules en kijk hoe de map noemt. Het zou ook kunnen dat je map versievanjekernel noemt, dus zonder de vmlinuz. Als dit is gelukt, rest er nog één stap uitgevoerd te worden: de kernel in grub.conf toevoegen.

grub.conf aanpassen

Deze laatste stap is nodig, om ervoor te zorgen dat de PC kan opstarten met de nieuwe kernel. Hiervoor moet grub.conf bewerkt worden met een teksteditor, zoals nano, of in GNOME met een programma zoals gedit. Geef één van de volgende opdrachten hiervoor:

  • Met nano:
 nano /boot/grub/grub.conf
  • Met gedit:
 gedit /boot/grub/grub.conf

Selecteer een item uit het bestand, en kopieer deze naar de onderkant van het bestand. Hier moeten de versienummers in de bestanden worden vervangen door de juiste. Het gaat hierbij om de volgende onderdelen:

 kernel /vmlinuz-2.6.11-prep1.1369_FC4smp
 initrd /initrd-2.6.11-prep1.1369_FC4smp.img

Het versienummer dient vervangen te worden door de juiste getallen. Let erop dat bovenstaande slechts een voorbeeld is!

De motor laten draaien!

Als laatste moet de PC opnieuw worden opgestart. Zodra grub tevoorschijn komt, let er dan op dat je de juiste kernel opstart! Start Fedora Core gewoon op, dan is het gelukt! Gefeliciteerd 😉

Mocht je ondanks alles nog problemen en/of vragen hebben, twijfel dan niet en stel ze op het forum van Fedora-linux.nl!

Category: