24 de juny de 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.

19 de juny de 2012

Pinta: editor d'imatges senzill a l'estil Paint.NET

De ben segur que de vegades us han demanat consell sobre un editor d'imatges senzill, per fer quatre retocs o simplement retallar una foto. Jo de seguida penso en el Gimp, però de vegades se m'espanten. I és que s'ha de reconèixer que d'entrada resulta un xic complexe.

Per sort, hi ha alternatives, i algunes de molt bones. Com ara el Pinta, que s'inspira en el Paint.NET per oferir una eina senzilla, però eficaç (fins i tot és multicapa i gestiona un historial per desfer les operacions anteriors).

Des d'Ubuntu el podem instal·lar fàcilment, ja que està present en els repositoris oficials:
$ sudo apt-get install pinta
Tot seguit ja la podem invocar des del Dash:


I de seguida podrem veure la seva interfície:


Com es pot observar, l'aplicació és senzilla però suficient per moltes de les operacions del dia a dia. La versió disponible a Ubuntu es la 1.1 (a la seva web hi ha la 1.3) i, tal com es pot veure, no està del tot traduïda al català.

Però segur que hi haurà algú que agraeixi aquesta alternativa al Gimp. No creieu?

14 de juny de 2012

*ERROR* Hangcheck timer elapsed... GPU hung [Solució Temporal]

Per fi bones notícies respecte al famós error que estic ajudant a depurar des de fa dies. Després de provar més d'una vintena de nuclis i opcions, hem pogut establir que el problema es va introduir entre els nuclis:
  • 3.4.0-030400rc1-generic (funciona)
  • 3.4.0-030400rc2-generic (falla)
Això ha permès que Daniel Vetter, un dels desenvolupadors, recordés que justament entre aquestes dues versions es va tocar el valor per defecte d'una opció relacionada amb l'estalvi d'energia en les gràfiques d'Intel.

Efectivament, arrencant el nucli amb l'opció i915.i915_enable_rc6=0 l'error ja no apareix. Per tant, a faltar de poder acabar de solucionar el problema real, aquesta pot ser una solució temporal vàlida.

Si heu seguit les meves recomanacions prèvies i teniu el carregador gràfic Burg instal·lat, editeu les opcions de càrrega del nucli amb:
$ gksudo gedit /etc/default/burg &
Heu d'afegir l'opció i915.i915_enable_rc6=0 a la variable GRUB_CMDLINE_LINUX_DEFAULT, just a l'inici, tal com podeu veure en l'imatge:


Tot seguit, cal regenerar els fitxers d'arranc amb:
$ sudo update-burg
I si no teniu el Burg, no patiu, que podeu fer l'equivalent en els fitxers del Grub:
$ gksudo gedit /etc/default/grub &
  ( editar igual que abans )
$ sudo update-grub

Bé, encara no està solucionat del tot, però finalment tenim una manera senzilla de poder carregar els nuclis problemàtics. Són bones notícies, no creieu?

10 de juny de 2012

Canviant la mida del buffer del registre de missatges en el nucli

Encara estic depurant l'error del "GPU Hung", i molt em temo que en tinc per dies... De moment, m'ha calgut ampliar la memòria que el sistema destina per guardar els registres (logs). Es pot fer directament en arrencar el nucli, afegint-hi el paràmetre:
log_buf_size=4M
Enlloc de 4M, podem posar el que creiem convenient, però penseu que per defecte hi ha 256K. Ho podem comprovar amb:
$ grep CONFIG_LOG_BUF_SHIFT /boot/config-`uname -r`
El resultat el podeu veure a la imatge de sota. Com que no hi ha unitats, el resultat és una potència de 2, és a dir, 2^18 = 256K.
 

Si volem que el canvi sigui permanent, sempre podem editar el fitxer de configuració:
$ gksudo gedit /boot/config-`uname -r` &
En fi, aquí ho deixo escrit, per si ho torno a necessitar.