Kernel configuratie scherm

Je eigen linux kernel bouwen

Michelle Techniek

Een eigen linux kernel bouwen klinkt als iets heel moeilijks maar eigenlijk valt het wel mee. Je moet alleen weten wat je moet doen. Ik heb sinds ik bij Infi werk al een stuk of 10 keer een linux kernel gebouwd met als doel mijn wifi adapter werkend te krijgen op Ubuntu. Helaas, zijn de juiste drivers en firmware nog niet beschikbaar en is dit dus nog steeds work-in-progress. (Dit heeft dus niets te maken met het bouwen van de linux kernel)

Voordat je begint met het bouwen van een linux kernel, is het misschien handig een back-up te maken. In principe zou er niks moeten gebeuren, want je kan bijna altijd terug naar je huidige kernel (but you never know).

Stap 1: download de linux broncode

Op de officiële  website: The Linux Kernel Archives zijn verschillende linux kernels te vinden. Je hebt namelijk de longterm kernels die voor langere tijd ondersteund worden. De stable versie waarbij alleen nog patches worden gedaan en geen grote features worden opgenomen en als laatste de mainline. Dit is de meest recente linux kernel. 

Om je huidige linux kernel op te vragen:

$ uname -r
5.10.7

Maak een map aan. Dit is optioneel. Je hebt dan wel al je bestanden in 1 map.

$ mkdir Linux

Haal de linux broncode op met het volgende commando (in dezelfde map):

$ wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.10.tar.xz

Extract de tar.xz file:

$ tar -xJf linux-5.10.10.tar.xz

Stap 2: configureren van de linux kernel en modules

Je kan tijdens deze stap je linux kernel configureren zoals jezelf wilt. Het makkelijkst is om je huidige configuratie te kopiëren en deze aan te passen.

$ cd linux-5.10.10
$ cp -v /boot/config-$(uname -r) .config
'/boot/config-5.10.7' -> '.config'             // output

Daarna kan je het volgende commando uitvoeren:

$ make menuconfig

Dan zie je het volgende scherm:

Kernel configuratie scherm

Hier kan je nog instellingen aanpassen voor je linux kernel. Als je alles hebt geconfigureerd naar wens, moet je selecteren save en daarna exit.

Ik heb zelf in dit menu de Qualcomm ath11k driver feature moeten inschakelen. Deze is namelijk niet standaard ingeschakeld. Het inschakelen van deze feature zou mijn wifi problemen moeten oplossen, maar dat is nog niet het geval. Ik hoop met een nieuwere versie van de kernel dat mijn wifi probleem wel is opgelost.

Stap 3: compileer de linux kernel

We willen een linux kernel installeren die ook nog makkelijk te verwijderen is. Daarom compileren we de linux kernel naar deb bestanden met make.

$ make deb-pkg -j 16

Met -j 16  geef je aan hoeveel cores je wilt gebruiken om de linux kernel te compileren. Dit betekent dus dat er 16 cores worden gebruikt.

Alternatief is:

$ make deb-pkg -j $(nproc)

Deze maakt dan gebruikt van alle cores die beschikbaar zijn.

Het compileren van de linux kernel kan lang duren. Dit is afhankelijk van het computersysteem en het aantal cores dat gebruikt wordt.

Hierna installeren we de deb bestanden.

$ dpkg -i linux-*.deb

LET OP: als je nog andere deb bestanden hebt die met linux- beginnen worden deze ook geïnstalleerd.

Grub moet ook geüpdatet worden:

$ update-grub

 

Stap 4: reboot

Hierna kan je de computer opnieuw opstarten en zal de nieuwe linux kernel geïnstalleerd zijn.

$ reboot

Nieuwe kernel versie:

$ uname -r
5.10.10

Het kan zijn als je een lagere versie kernel hebt geïnstalleerd dan de huidige dat deze niet meteen geladen wordt. Je zal dan de kernel versies moeten ordenen in Grub.

Een afspraak maken bij ons op kantoor of wil je even iemand spreken? Stuur ons een mail of geef een belletje.