Sådan bygger du en ny kerne på Debian og Ubuntu Linux

Ja det er faktisk ret simpelt men jeg havde selv brug for at få det opfrisket da jeg rendte ind i et USB netkort som havde den mest bizare fejl jeg nogensinde er rendt på … netkortet døde når jeg loggede ind på maskinen via ssh på det ramte netkort, og f.eks. cat’ede en logfil.

Jeg talte med nogle forskellige folk og vi kom frem til at det nok var smart at prøve den nyeste kerne og se om ikke problemet var løst, der var et par bugs i driveren som var blevet rettet men som Debian ikke havde fulgt op på.

Ideen er at vi ender med en .deb pakke som vi efterfølgende kan installere på flere maskiner, start med at hente linux kernen:

wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.3.3.tar.xz

Der skal bruges lidt pakker til arbejdet:

apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc kernel-package

Pak tarballen ud og hent config fra dit nuværende system, dette bevirker at alle compile-indstillinger som debian folkene har valgt at køre med automatisk overføres til din kommende build:

tar xvf linux-4.3.3.tar.xz
cd linux-4.3.3/
cp /boot/config-3.16.0-4-amd64 .config

Derefter køres config processen:

make menuconfig
make-kpkg clean

Jeg ændrede ikke noget, jeg gemte blot config som den var … jeg er ikke klar over om det ændrede noget, men umiddelbart vil jeg forvente at evt. nye parametre vil blive tilføjet i den process om nødvendigt, og hvis du har behov for at slå noget til/fra giver det jo sig selv 🙂

Selve build processen kører i ét snuptag (-j 2, skal ændres til antallet af kerner på det system der kompillerer kernen):

fakeroot make-kpkg --initrd --revision=1.0.FW kernel_image kernel_headers -j 2

Revisionen bestemmer du selv, og er primært til internt brug. Så hvis du f.eks. bygger en kerne til alle dine webservere kunne du kalde den 1.0-web og så rulle versionsnummeret hvergang du bygger en ny kerne.

Lav en kop kaffe, se et afsnit af Dr. who eller hvad du nu har lyst til for det tager lidt tid, når den er færdig har du to .deb filer som du kan installere:

dpkg -i linux-headers-4.3.3_1.0.FW_amd64.deb linux-image-4.3.3_1.0.FW_amd64.deb

Reboot og nu skulle din nye kerne gerne boote automatisk.

Godnat, og sov godt 🙂

Dette indlæg blev udgivet i Knowledge Base, Linux, Old Base. Bogmærk permalinket.

Skriv et svar