January 11, 2009

Arch Linux su MacBook Aluminium

Ora che il portatile nuovo è configurato a fondo mi sento pronto per condividere qualche consiglio con chi si è appena ritrovato in mano uno di questi gioiellini e sta cercando di capire se valga la pena di installarci linux e a che punto sia il supporto hardware. Più che un howto, questo post è una serie di consigli, con qualche configurazione sparsa qua e là. Personalmente ho optato per la versione a 64 bit (come ho già detto nel post precedente) perché ormai tutti i plugin principali sono disponibili, e a parte wine, di cui fortunatamente non ho bisogno, c’è tutto quello che può servire. Ma andiamo avanti.

Prima di tutto è pressoché fondamentale il kernel 2.6.28, che al momento si trova in [testing], perché è il primo ad introdurre il supporto alla maggior parte dell’hardware per questo portatile. In particolare i moduli hid-apple, bcm5974 e applesmc hanno ricevuto in questa release importanti aggiornamenti. Al kernel ho poi applicato alcune patch recuperate dalla LKML, quattro specifiche per il modulo bcm5974, quello che si occupa del trackpad, una per la ethernet e una per l’undervolting. Le patch sono allegate a questo post, per chi fosse interessato ad applicarle, insieme alla configurazione del kernel che ho utilizzato, e nel corso del post spiegherò cosa fanno esattamente. Ci tengo a precisare che non ricompilo un kernel da un annetto, quindi potrei aver infilato dentro tonnellate di opzioni inutili, ma funziona bene, è molto rapido (12 secondi da grub al login prompt della shell) e c’è più o meno tutto quel che serve.

Dopo pochi giorni di test della home condivisa mi sento di sconsigliarla: mi sono capitate diverse corruzioni del filesystem nel giro di pochi giorni che mi hanno costretto ad un intervento da Mac OS X, dato che gli hfsprogs segfaultano su linux a 64 bit. Ho quindi lasciato OS X su una sola partizione (che mi risparmia alcuni mali di testa anche da quel lato) e formattato la nuova home in ext4. La root è rimasta in ext3.

La scheda wireless funziona abbastanza bene con il driver broadcom-wl, che sta in AUR, anche se alcuni (me compreso) segnalano qualche problema con alcune reti WPA.

Le ultime versioni di pommed e gpomme danno supporto pressoché completo ai tasti funzione della tastiera Apple, retroilluminazione compresa. Entrambi i pacchetti sono disponibili, non aggiornati, in AUR, quindi è necessario modificare $pkgver in 1.25 e l’url di download (quanto odio le url non uniformi…) sostituendo il numero 2689 con 2707. Due i bug riscontrati: la retroilluminazione della tastiera, quando azzerata del tutto, torna da sola a circa un terzo e la retroilluminazione dello schermo non funziona in X. Per quest’ultimo problema il workaround, che permette di risparmiare anche 3W, è spostarsi in shell pura e cambiare da lì la retroilluminazione, per poi tornare nella sessione grafica.

A livello di durata della batteria OS X è piuttosto impressionante… supera tranquillamente le cinque ore in caso di utilizzo “leggero” (navigazione su Internet, posta elettronica, editing di documenti). Molti, su Internet, facevano notare la grande differenza sotto linux, che difficilmente superava le tre ore, io ho deciso di vedere fin dove si può arrivare. Un pacman -S powertop mi ha dato un’idea del consumo effettivo, almeno sotto linux. 15W circa. Molto meno del mio vecchio Compal CL56 classe 2004, ma non certo un gran risultato. Oltretutto, scaldava parecchio più che sotto OS X, dove era praticamente freddo. Ho provveduto all’installazione del pacchetto cpufrequtils, e ho impostato conservative come default governor in /etc/conf.d/cpufreq.

Sempre tramite powertop, oltre ad applicare i consigli di default proposti dal programma, mi sono accorto che circa metà degli interrupt dell’intero sistema, 100 al secondo, veniva dal driver della ethernet, forcedeth. Ho così scoperto che, per un bug presente in molti chipset nforce, gli interrupt sui TX devono essere forzati via software. La nostra scheda fa parte della stessa famiglia di chip, e anche se non presenta il bug il kernel la forza ai 100 int/s perché non fa parte della lista di esclusione presente nel sorgente del modulo, forcedeth.c. La patch aggiunge la periferica a questa lista, riducendo non di poco il consumo del laptop.

Dato che comunque tutto questo aiutava a diminuire il calore fino ad un certo punto (compresa la modalità powersave di cpufreq) mi sono detto che OS X doveva fare qualcos’altro al processore. Undervolting? Ho deciso di provarci, e ho aggiunto phc.patch, inserendo in /etc/rc.local un paio di righe per impostare le tensioni al minimo. Pare che non serva a molto, funzionare sembra funzionare, a leggere i valori in /proc, ma non ho notato una grossa differenza di riscaldamento o consumo. Comunque ho tenuto la patch just in case.

Che cosa fa quindi OS X? Magari clock dinamici sulla scheda nVidia. Ho impostato l’opzione CoolBits in xorg.conf e ho cercato di modificare il clock della scheda, prima tramite nvclock, poi con nvidia-settings. Nessuno dei due programmi ha funzionato, nemmeno con i driver nvidia-beta, disponibili in AUR. Probabilmente questo modello non è ancora supportato.

Dal punto di vista riscaldamento/consumi non sono riuscito ad arrivare oltre, ma comunque in idle sono tra i 9 e i 10 Watt, che dovrebbero garantirmi almeno 4 ore e potrebbero superare le 5 in alcuni casi. Non male direi :-)

L’ultima patch che ho applicato (quattro in realtà, bcm5974-[1-4].patch) serve a fornire un buon supporto al trackpad. Con questa patch diventa possibile sfruttare il multitouch fino a quattro dita, esattamente come sotto OS X. Io, da fan del tapping, ho impostato il driver synaptics per fare clic destro su tapping a due dita e clic centrale su tapping a tre dita. La configurazione, in /etc/hal/fdi/policy/11-x11-synaptics.fdi ho inserito le seguenti opzioni, che rendono il trackpad funzionale, anche se un po’ troppo sensibile:

<merge key=”input.x11_options.EmulateMidButtonTime” type=”string”>75</merge>
<merge key=”input.x11_options.HorizTwoFingerScroll” type=”string”>1</merge>
<merge key=”input.x11_options.MaxTapTime” type=”string”>180</merge>
<merge key=”input.x11_options.PalmDetect” type=”string”>True</merge>
<merge key=”input.x11_options.SHMConfig” type=”string”>True</merge>
<merge key=”input.x11_options.TapButton1″ type=”string”>1</merge>
<merge key=”input.x11_options.TapButton2″ type=”string”>3</merge>
<merge key=”input.x11_options.TapButton3″ type=”string”>2</merge>
<merge key=”input.x11_options.VertTwoFingerScroll” type=”string”>1</merge>

Bene. Questo dovrebbe essere più o meno tutto. Ovviamente se qualcuno ha altre proposte o idee sarò felice di testarle e condividerle, ogni commento è bene accetto!

UPDATE: ho pubblicato la seconda parte del post, la trovate qui.

File allegato: moduli e configurazione per il kernel

Posted by bardo under arch,g33k1ng around | Comments (5)

5 Comments »

  1. ciao

    complimenti prima di tutto

    ho letto la page ed è interessante……

    io però ho un macbook vecchia gen
    sono appena passato ad arch e mi sembra fantastico…..
    IL vero LINUX…. a confronto di ubuntu

    appena ho un po’ di tempo mi metto anch’io a configurare x benino la mia arch magari prendendo spunto da te soprattutto x il risparmio energetico

    ciau :)

    Comment by mattia ITALY Windows XP Safari 525.26.13 — 12 January 2009 @ 21:19

  2. Ciao, sono interessata alla compilazione del kernel seguendo le tue indicazioni.. ma sono su arch da poche settimane!

    Buio totale.. puoi suggerirmi la procedura pratica, o indicarmi qualche buona guida?

    grazie mille

    Comment by Emanuele ITALY Linux Mozilla Firefox 3.0.5 — 13 January 2009 @ 09:27

  3. @Emanuele: ciao e benvenuto!
    Dunque, se sei da poco nel mondo arch ci sono un po’ di cose da sapere prima di poter ricompilare un kernel alla “Arch way”. In due parole, devi recuperare la build e tutti i file relativi, aggiungere le mie patch, compilare ed installare il pacchetto.
    Per spiegare un po’ più in dettaglio, la build del kernel la puoi scaricare con ABS: lanci abs, copi direttamente la cartella /var/abs/testing/kernel26 da qualche parte nella tua home e ci metti le sei patch che trovi allegate al post. Poi modifichi il PKGBUILD ed aggiungi i nomi dei file delle patch all’array source e le loro somme md5 all’array md5sums. Nella funzione build(), subito dopo l’applicazione della patch di arch, aggiungi delle righe simili che applicano le altre patch. Se vuoi personalizzarti la configurazione del kernel poi, commenta la riga yes “” | make config e sostituiscila con make menuconfig. Salva il tutto, esci, lancia makepkg e a fine compilazione installa il tutto con un bel pacman -U kernel26-*.pkg.tar.gz. Ora il kernel è installato, per evitare che venga sovrascritto automaticamente al prossimo aggiornamento devi inserire il nome del pacchetto (kernel26) alla voce IgnorePkg in /etc/pacman.conf.
    Più difficile a dirlo che a farlo :P Potrebbe servirti un po’ di documentazione, però. Ti consiglio di guardare, su wiki.archlinux.org, le pagine relative ad abs, makepkg, pacman e PKGBUILD. Se pensi che sia molto lavoro non ti scoraggiare: dopo le prime volte in cui si fa un po’ fatica diventa un processo automatico, e ti assicuro molto più semplice che in altre distro…

    Comment by bardo ITALY Linux Mozilla Firefox 3.0.5 — 16 January 2009 @ 01:02

  4. @mattia: innanzitutto grazie per i complimenti, mi fa piacere che qualcuno trovi utili i miei post :) In effetti Arch fa proprio un altro effetto rispetto ad Ubuntu.

    Per quanto riguarda il risparmio energetico ti consiglio di dare un’occhiata anche ai post di Ugaciaka a riguardo, che danno alcune linee guida un po’ più generali, le mie sono molto specifiche per questo modello di Macbook. Come detto, in giro di guide per linux ce n’è tante, ma ho visto che per questo portatile non si trova ancora molto, quindi mi sono limitato a parlare di quello che ancora manca…

    Comment by bardo ITALY Linux Mozilla Firefox 3.0.5 — 16 January 2009 @ 01:16

  5. [...] il successo del post precedente sull’argomento ho pensato bene di integrarlo un po’ con altre informazioni utili, e di [...]

    Pingback by Col senno di poi » Arch Linux su MacBook Aluminium /2 UNITED STATES WordPress 2.7 — 24 January 2009 @ 20:27

RSS feed for comments on this post. | Trackback: http://blog.bardland.org/2009/01/11/arch-linux-su-macbook-aluminium/trackback/

Leave a comment

XHTML ( You can use these tags): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> .