24 de juny del 2012

Compilant un nucli Linux per aplicar un pedaç

Tot i que de moment hem trobat una solució temporal a l'error del "GPU Hung", cal veure si es pot solucionar d'una vegada per totes. Per això, els desenvolupadors proposen pedaços, que s'han d'aplicar al nucli base del Linux. I aquest és el motiu de l'article, comentar com es pot compilar un nucli de Linux, tot aplicant-li un pedaç.

El procés pot ser relativament senzill si no volem crear branques en les quals fer els nostres propis canvis mentre seguim els desenvolupament principal del nucli. Si només volem provar un pedaç, com és el cas, ho poder fer tal com us comentaré tot seguit.

En primer lloc, hem d'instal·lar un conjunt d'eines de desenvolupament:
$ sudo su -
$ apt-get install kernel-package fakeroot build-essential devscripts
$ apt-get install crash kexec-tools makedumpfile kernel-wedge
$ apt-get build-dep linux-image-$(uname -r)
$ apt-get install git libncurses5 libncurses5-dev libnewt-dev
$ exit
Potser no caldrien totes per fer una compilació simple, però val més instal·lar-les per si més endavant ens animem a tocar coses més complexes.

Un cop fets els preparatius, hem de descarregar el codi. Inicialment pot semblar una bona opció baixar-lo amb un fitxer comprimit (és més ràpid), però per si més endavant volem fer canvis o actualitzacions, jo aconsellaria baixar-lo amb el git:
$ mkdir ~/Kernel
$ cd ~/Kernel
$ git clone \
  git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git \
  source
$ cd source
La descàrrega trigarà una bona estona. Un cop fet, ja podem aplicar els pedaços que siguin necessaris (prèviament descarregats). Ho farem amb una comanda similar a:
$ patch -p1 <0001-drm-i915-Imp-w-a-for-sporadic-read-failures.patch
Finalment, si els pedaços s'han pogut aplicar correctament, ja estem a punt per a la compilació pròpiament dita:
$ cp /boot/config-$(uname -r) .config
$ make oldconfig
$ fakeroot make-kpkg --initrd \
  --append-to-version=-custom kernel-image kernel-headers
A l'executar la segona línia ens anirà preguntant per un munt d'opcions noves del nucli. Normalment n'hi ha prou d'anar prement el retorn per acceptar les opcions per defecte.

La tercera línia és la que engega la compilació pròpiament dita, cosa que durarà una bona estona. Si tot ha anat bé, acabarem amb un parell de paquets *.deb que contenen el nostre flamant nucli compilat, al directori ~/Kernel, tal com es pot veure en la imatge:


Només ens resta instal·lar-los al sistema i provar si el pedaç ha anat bé o no. En el cas de l'error del "GPU hung", el primer intent ha fallat. Què hi farem. S'haurà de tornar a provar. Us mantindré informats.

Cap comentari:

Publica un comentari a l'entrada