Je eigen linux kernel bouwen
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:
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.