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.

19 de juny del 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 del 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 del 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.

30 de maig del 2012

Versió base del nucli Ubuntu

A estones lliures, segueixo depurant l'error del "GPU hung" del qual us vaig parlar ja fa uns dies. És un procés llarg i pesat...

El cas és que m'ha calgut conèixer en quina versió està basada cada nucli d'Ubuntu (ja que estic provant nuclis de Linux, i la numeració no es correspon amb la d'Ubuntu). La manera més senzilla és fer:
$ cat /proc/version_signature
En el meu cas, el resultat el podeu veure a la imatge:


El valor que ens interessa és el final (3.0.22) que ens indica la versió base del nucli que podeu trobar en el mainline. Alternativament, podeu obtenir el mateix resultat consultant aquesta taula.

Espero no haver-ho de fer servir gaires més vegades, però en tot cas ho deixo apuntat. Per si de cas.

23 de maig del 2012

Ubuntu Precise: *ERROR* Hangcheck timer elapsed... GPU hung

Jo vaig ser dels valents que ven instal·lar la Beta 2 del Ubuntu Precise, cosa que em va portar algun maldecap amb el controlador ATI en un dels ordinadors. El que no havia tingut temps de comentar encara eren els problemes, més greus encara, en el meu PC principal (un i5-2500k).

Es tracta d'un bug que encara és present, i que provoca diversos salts a pantalla negre durant 2-3 segons per tornar a la normalitat durant 10-20 segons fins que es produeix, o bé una penjada total del sistema que requereix apagar l'ordinador, o bé la mort del gestor de finestres (desapareixen les decoracions de les finestres, el panell del Unity, i fins i tot els menús apareixen amb la mida correcte però totalment en blanc; la imatge de sota n'és un exemple). L'error passa prou sovint com per fer impossible treballar normalment amb el sistema.


Si l'ordinador no s'ha penjat del tot i podem fer un cop d'ull al resultat del dmesg veurem el missatge d'error:
[drm:i915_hangcheck_hung] *ERROR* Hangcheck timer elapsed...GPU hung
[drm] capturing error event; look for more information in \
      /debug/dri/0/i915_error_state
Tal com us comento, l'error encara està present en la versió definitiva, fins i tot en el darrer kernel v3.2.0-24. Per si us hi heu trobat i podeu comentar alguna cosa o sí simplement voleu seguir-ne l'evolució, he posat un informe al Kernel Bug Tracker.

La bona notícia és que hi ha una solució temporal: podeu arrencar amb un nucli antic del Oneiric i ja no tindreu aquest problema. Jo utilitzo el kernel v3.0.0.17 des de gairebé fa un mes, i sense problemes.

19 de maig del 2012

Gimp 2.8 a Ubuntu Precise

Gràcies a un article dels amics de GNULinux.cat m'he assabentat que el Gimp 2.8 ha estat alliberat. Evidentment, encara no està disponible als repositoris oficials d'Ubuntu Precise, però es pot instal·lar fàcilment afegint un PPA:
$ sudo add-apt-repository ppa:otto-kesselgulasch/gimp
$ sudo apt-get update
$ sudo apt-get install gimp
Però aquest cop m'ha sorgit un problema, tal com podeu veure en la imatge de sota:


Mirant en detall el missatge d'error, es pot veure que es tracta d'un paquet trencat. El que cal fer és eliminar-lo i acabar d'instal·lar el Gimp:
$ sudo apt-get remove gimp-plugin-registry
$ sudo apt-get install gimp
Aquest cop ja no hi ha errors, així que tot seguit invoco el Gimp des del Dash. En la imatge de sota es pot veure una de les novetats més destacades: el Gimp treballant en una sola finestra (activeu-lo des del menú Finestres -> Mode de finestra única):


També es poden apreciar fàcilment els canvis en la interfície: per exemple totes les imatges obertes en mostren en miniatura a la part superior, i les eines mostren les opcions més clarament. En fi, una versió molt esperada, de la qual espero treure'n força profit.