"Se ci sono due o più modi di fare una cosa,
e uno di questi modi può condurre a una catastrofe,
allora qualcuno la farà in quel modo.

(Edward Murphy)

Come installare e configurare Ubuntu 12.04 su MacBook Pro 8

Ven, 08/06/2012 - 00:00 -- arturu
Linux VS OSX

Recentemente ho comprato un MacBook Pro, l'impatto per chi lavora su linux non è proprio morbido. Un linuxiano sul Mac si sente come un hyppie in un negozio di Armani "Se vesti Armani non sei sfigato". Non mi riferisco all'hardware che è veramente performante, ma al sistema operativo, OSX è un sistema chiuso e non ha un sacco di funzionalità che i sistemi linux danno per scontate. Quindi, per diversi motivi ho deciso di installare Ubuntu 12.04 LTS, l'installazione è semplice, invece, il tuning del sistema richiede un po' di impegno aggiuntivo.

La goccia che fa traboccare il vaso

Queste sono considerazioni personali, se non ti va di leggerle puoi saltare al prossimo paragrafo.

La cosa assurda di OSX è che pur avendo una base OpenSource non permette di installare liberamente software open, per chi vuole dare un occhiata al codice http://opensource.apple.com/. In realtà esistono un sacco di progetti che portano il software Open su OSX, come: MacPort (basato su BSD), Fink (basato su Debian) e HomeBrew (mi sembra la scelta migliore tra i tre), ma il problema principale è che per poter utilizzare questi tool bisogna scaricare gli strumenti di sviluppo Apple che richiedono registrazioni su registrazioni, richieste e moduli, sinceramente è scocciante.

Fin dai primi giorni ho notato un eccessivo utilizzo di RAM, 2GB occupati subito dopo aver fatto il boot, non va bene. Ho notato anche un eccessivo surriscaldamento, specialmente durante l'utilizzo intensivo del disco, temperature alte non vanno bene con le prestazioni. Temperatura alta = Aumento impedenza = Degradazione dei segnali = Errori di calcolo con conseguente ricalcolo = Lentezza e risorse sprecate e conseguente pericolo per le celle della batteria = Lo sanno tutti. :D

Un'altra disavventura su OSX l'ho avuta dopo qualche giorno dall'acquisto. Mi ero messo a copiare tramite SSH un po' di file (poco più di un milione di file, un totale di 200GB), operazione che con linux facevo tranquillamente, il sistema si è inspiegabilmente messo a swappare 12GB (in parole povere usa l'HDD come RAM). Il problema non è l'operazione di swapping, che è notoriamente lenta, ma le ripercussioni che ha sull'hardisc, lo stressa! Il mac dopo un ora di swapping aveva raggiunto una temperatura talmente alta che le ventole giravano al massimo per tutto il tempo, mi sono preso di paura e ho annullato tutto.

Un'altra disavventura che mi è capitata su OSX, ed ha fatto traboccare la fatidica goccia, è stata una perdita dati. Stavo lavorando su un documento presente su un volume ftp, e contemporaneamente anche un mio collega stava lavorando sullo stesso file, operazione che ho sempre fatto senza problemi. Durante un salvataggio il file si è corrotto, mai successo in tanti anni su linux, rischiavo di perdere una settimana di lavoro, ma sono stato fortunato in quanto avevo fatto un backup non fidandomi tanto di OSX.

Tutte queste problematiche durante i primi giorni di utilizzo mi hanno convinto a installare Ubuntu 12.04.

Installare Ubuntu 12.04 su MacBook Pro 8,1

Come detto in precedenza l'installazione è semplice e abbastanza veloce. Su internet si trovano tantissime guide, dato che non mi piace copiare, vi indirizzo su quelle che ho utilizzato. Consiglio di leggere prima tutto l'articolo e poi procedere all'installazione. Come prima cosa bisogna installare un programma per fare partire più sistemi sul MAC. Una buona soluzione è rEFIt, successivamente bisogna creare dello spazio libero nel disco di MAC OSX, per fare tutto potete usare i primi due paragrafi di questa guida: http://www.ubuntu-linux.it/guida-installazione-ubuntu-desktop-mac-refit/

A questo punto abbiamo installato rEFIt e abbiamo dello spazio libero sul disco.

Il secondo passo consiste nel recuperare l'.iso con Ubuntu, è vivamente consigliato l'uso della versione a 32bit, la versione a 64 bit su MAC non va tanto bene. Per la questione della quantità massima di RAM, su linux non è un problema, quando il sistema di installazione rileva più di 3GB di RAM, installa in automatico il kernel con supporto PAE che permette di utilizzare più di 3GB di RAM su sistemi a 32bit. Anche se l'immagine di Ubuntu entra in un CD masterizzatela su un DVD, altrimenti non si avvia sul MacBook. Riavviate il computer e vi apparirà la schermata di boot di rEFIt, inserite il DVD con Ubuntu, appena appare il disco cliccateci sopra.

Questa guida è stata testata su MacBook Pro 8.1, se non conoscete la vostra versione aprite il terminale dalla live di Ubuntu e date questo comando

$ sudo dmidecode -s system-product-name
$ MacBookPro8,1

Il Processo d'installazione è semplice, basta seguire gli step avendo la cura di scegliere:

  • Nella schermata di scelta della tastiera scegliete "Italiana", non vi fate ingannare dalla scritta Macintosh.
  • Nella schermata di configurazione del disco scegliete tranquillamente "Installa accanto a MAC OSX", Ubuntu farà tutto da solo senza problemi.

Questi consigli li ho presi da questa pagina e vanno bene: http://www.ispaziomac.com/20922/proviamo...de-ispaziomac. Finito il processo di installazione riavviate e avrete Ubuntu installato. Ancora non è finita, dobbiamo fare alcuni piccoli accorgimenti e tutto funzionerà alla perfezione.

Installare i demoni dei sensori

Come prima cosa è meglio installare i demoni dei sensori termici, così riusciamo a migliorare il raffreddamento del computer. L'operazione da compiere è molto banale:

sudo apt-add-repository ppa:mpodroid/mactel
sudo apt-get update
sudo apt-get install macfanctld

appena installato sentirete la ventola del MAC che parte per un bel po', anche al prossimo riavvio sarà così se il computer è caldo, dopo che la temperatura interna si stabilizza intorno ai 45 gradi la sentirete di tanto in tanto. Nel file "/etc/macfanctl.conf" si trovano le impostazioni. Di default la ventola inizia a girare a 55 gradi e si ferma a 45, se queste impostazioni vi sembrano eccessivamente fredde sentitevi liberi di modificarle mettendo valori più alti, magari inserendo le stesse impostazioni di OSX. Bisogna dire che questa impostazione fa consumare un po' di batteria in più, ma in compenso ci assicura una maggiore longevità dei componenti interni e abbassa le probabilità di rotture hardware. Tra qualche paragrafo andremo a fare un touning dei consumi energetici in modo da recuperare quello che abbiamo appena perso.

EDIT 20 giugno 2012

Su suggerimento di "PIO". I possessori di MacBook Pro 5,5 possono usare come repo

sudo add-apt-repository ppa:mactel-support/ppa

che quello indicato nella guida da errori nell'installazione.

Installare il firmware della scheda Wi-Fi

La scheda Wi-Fi non viene riconosciuta in automatico, non è un problema, l'installazione è semplice e banale.

sudo add-apt-repository ppa:mpodroid/mactel
sudo apt-get update
sudo apt-get install b43-fwcutter firmware-b43-installer

successivamente, bisogna editare il file "/etc/modprobe.d/blacklist.conf" e aggiungere la seguente linea

blacklist ndiswrapper

infine, per ultimo bisogna aggiungere una linea in "/etc/pm/config.d/modules" (in caso non esiste il file e/o la cartella crearne una) con

SUSPEND_MODULES="b43 bcma"

Riavviamo e la nostra scheda Wi-Fi è perfettamente funzionante.

Batteria e consumo energetico

Questo potrebbe essere il tasto dolente dell'installazione se si lasciano le impostazioni di default. Vediamo che cosa possiamo fare per ridurre un po' i consumi. Nella prima settimana di vita del mio computer ho notato che la batteria dura molto di più rispetto a un normale pc, non perché il MacBook Pro abbia una batteria magica ma grazie alle impostazioni di risparmio energetico.

Bisogna precisare subito una cosa, le 7/8 ore di autonomia OSX li raggiunge solo in un caso: luminosità schermo al 40% circa; luminosità tastiera a zero; bluetooth spento; due CPU attive (le altre due si attivano solo se è necessario); wireless accessa con segnale a 5 tacche o cavo; aperti browser, mail, finder e messaggistica senza mai chiuderli. Possiamo benissimo definire questa modalità "Cazzeggio", cioè un modo d'uso molto leggero. Invece, quando vengono sfruttate tutte le potenzialità dei processori, della RAM, del disco, cioè "Uno sta lavorando!" l'autonomia non supera le 3 ore e mezza. Gli stessi risultati, o quasi, li possiamo ottenere anche con Ubuntu, disattiviamo il Bluetooth, oscuriamo la tastiera, mettiamo al 40% la luminosità dello schermo, lasciamo sempre aperti firefox, thunderbird e skype, sistemiamoci il più vicino possibile all'access point e abbiamo 6 ore e mezza di autonomia, senza toccare niente nel sistema. Ma noi vogliamo di più, dobbiamo arrivare almeno a 10/12 ore di autonomia in modalità "Cazzeggio", ce la faremo? ;)

Questo è un touning un po' articolato, quindi vi descrivo come ho fatto poi ognuno segua la propria strada. La prima informazione che dobbiamo recuperare è la capacità della batteria:

arturu@arturu-MacBookPro:~$ cat /proc/acpi/battery/BAT0/info

present:                 yes
design capacity:         57700 mWh
last full capacity:      55770 mWh
battery technology:      rechargeable
design voltage:          10950 mV
design capacity warning: 250 mWh
design capacity low:     100 mWh
cycle count:          0
capacity granularity 1:  10 mWh
capacity granularity 2:  10 mWh

La capacità massima è di 57,7W e l'ultima volta che l'ho caricata è arrivata a 55W (conviene effettuare la carica a computer spento, in questo modo è più facile avvicinarsi alla carica massima, altrimenti sul lungo periodo la batteria perde capacità più velocemente della normale usura). Facendo un rapido calcolo se vogliamo che la nostra batteria duri almeno 10 ore dobbiamo fare in modo di consumare una media di 5,5 W/h. Come prima cosa installiamo powertop per stabilire quanta energia sta consumando il nostro computer

sudo apt-get install powertop

Appena installato possiamo lanciare il programma che ci darà quanto stiamo consumando in media ogni 15 secondi

arturu@arturu-MacBookPro:~$ sudo powertop -d
La batteria riporta un tasso di scaricamento di 11.0 W

il programma, nella prima riga, ogni 15 secondi ci mostrerà il tasso di scaricamento. Facendo un rapido calcolo 55/11 = 5 ore, riusciamo a capire che la batteria con questo tasso di scarica durerà 5 ore. Attualmente ho in esecuzione firefox, thunderbird, skype, come DE unity, tastiera spenta, bluetooth spento, wireless con 5 tacche e 40% di luminosità dello schermo. Nelle altre righe possiamo vedere quali programmi consumano di più. Facendo un po' di prove si risparmia 0,5W circa usando unity 2D: 55/10,5 = 5 ore e un quarto. Ora possiamo vedere quali altri programmi consumano di più e dare qualche altra limatura, già unity 2D ci fa risparmiare qualcosina.

 Uso         Eventi/s    Categoria      Descrizione
              6,7%                      Device         Display backlight
              6,7%                      Device         Display backlight
             36,1 ms/s      74,3        Process        /usr/lib/firefox/firefox
             20,2 ms/s     203,5        Process        unity-2d-shell
             12,5 ms/s     178,1        Process        /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp v
              6,1 ms/s       0,1        Process        /usr/sbin/macfanctld
              4,9 ms/s     178,4        Timer          hrtimer_wakeup
             25,8 pkts/s                Device         Interfaccia di rete: wlan0
              2,3 ms/s       3,3        Process        skype
              1,1 ms/s      20,0        Timer          tick_sched_timer
              0,9 ms/s       0,0        Interrupt      [22] ehci_hcd:usb2
              0,8 ms/s       0,0        Timer          delayed_work_timer_fn
              0,8 ms/s       0,0        kWork          do_dbs_timer

Notiamo che firefox è il programma che consuma più risorse, ho quattro schede: twitter, facebook, il backend wordpress e l'anteprima di questo articolo. I consumi di firefox aumentano quando nella pagina ci stanno video flash, ma questo comportamento lo abbiamo anche su OSX. Volendo potete provare con diversi browser per vedere se cambia qualcosa, io per motivi presonali preferisco usare firefox. Su unity abbiamo già risparmiato un po', bisognerebbe provare anche con gnome-shell per vedere quale DE conviene usare, ma questa scoperta la lascio a voi :) Anche macfanctld consuma un bel po', ma preferisco mantenere bassa la temperatura del computer che risparmiare energia, se lo ritenete utile cambiate le impostazioni di macfanctld in modo che avvii le ventole più di rado es: tra 60 e 45 gradi.

Scegliendo le applicazioni da usare certamente limiamo un pochino il consumo energetico, ma possiamo ottenere molto di più utilizzando la modalità risparmio energetico delle diverse periferiche. Questo lo possiamo fare sempre con powertop, se ci spostiamo nella scheda "Regolazioni" possiamo decidere di attivare la modalità risparmio energetico per le diverse periferiche.

Come detto prima in "Modalità cazeggio" molte periferiche non le utilizziamo, per risparmire energia possiamo mettere in sospensione quelle che non ci servono, facendo prove e smanettando sono riuscito a scendere a 7W d'utilizzo (non nascondo che alcune volte ho sbagliato a mandare in sospensione la periferica sbagliata e ho dovuto riavviare :D ), con 7W si hanno  quasi 8 ore di autonomia.

Per chi possiede il macbook con la scheda nvidia può sfruttare l'overclocking/downclocking della GPU. Aggiungiamo, in "/etc/X11/xorg.conf" le seguenti linee nella sezione Device

Option "OnDemandVBlankInterrupts" "True"
Option "RegistryDwords" "PowerMizerLevel=0x3"

e la seguente linea nella sezione screen

Option	   "Coolbits" "1"

I più temerari, io non l'ho fatto, possono aggiungere un'opzione a quelle esistenti nella riga di boot del kernel "/boot/grub/menu.list"

usbcore.autosuspend=1 hpet=force

Per chi vuole risparmiare anche il centesimo possiamo utilizzare il seguente script che ho trovato metre mi documentavo su powertop

#!/usr/bin/env bash

# Nel caso in cui si è con la corrente. Simile alle impostazioni di UBUNTU
if on_ac_power; then
  # Set the drive to mostly stay awake.  Some may want to change -B 254
  # to -B 255 to avoid accumulating Load_Cycle_Counts
  hdparm -B 254 -S 240 -M 254 /dev/sda

  # Rimonta ext3 filesystems ed effettua la scrittura ogni 60 secondi.
  # di default è ogni 5 secondi. Riduce l'utilizzo e l'usura del disco
  mount -o remount,commit=60 /
  mount -o remount,commit=60 /home

  # Dato che con la corrente non usa laptop_mode
  #echo 0 > /proc/sys/vm/laptop_mode

  # Set kernel dirty page value back to default
  echo 10 > /proc/sys/vm/dirty_ratio
  echo 5 > /proc/sys/vm/dirty_background_ratio

  # Only wakeup every 60 seconds to see if we need to write dirty pages
  # By default this is every 5 seconds but, I prefer 60 to reduce disk
  # activity.
  echo 6000 > /proc/sys/vm/dirty_writeback_centisecs

  # Turn off sound card power savings
  echo 0 > /sys/module/snd_hda_intel/parameters/power_save

  # Set the SATA to max performance
  echo max_performance > /sys/class/scsi_host/host0/link_power_management_policy
  echo max_performance > /sys/class/scsi_host/host1/link_power_management_policy

  # Make sure ondemand governor is set
  echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 

  # Enable the webcam driver
  # modprobe uvcvideo

  #restart bluetooth #you can also decide to use RFKILL here.
  sudo /usr/sbin/hciconfig hci0 up

  # Start optional  services
  # sudo /etc/init.d/cron start
  sudo /etc/init.d/bluetooth start
  sudo /etc/init.d/preload start

  #reset brightness of screen and keyboard
  sudo nvclock -S 85
  sudo echo 50 | sudo tee -a /sys/class/leds/smc::kbd_backlight/brightness

  #Enable eth0
  sudo ifconfig eth0 up

  #reset clock nvidia card (requires coolbits=1)
  sudo nvidia-settings -a GPU2DClockFreqs=100,0
  sudo nvidia-settings -a GPU3DClockFreqs=450,0

else # in caso siamo con la batteria

  # Set the disks to aggressively save power and use the lowest acoustic
  # level.  Some might find these settings too aggressive.  If so, change
  # "-S 4" to something larger like -S 24 (two minutes) and -B 128 to -B 254.
  hdparm -B 128 -S 4 -M 128 /dev/sda

  # Rimonta ext3 filesystems ed effettua la scrittura ogni 10 minuti.
  mount -o remount,commit=600 /

  # attiva laptop_mode
  echo 5 > /proc/sys/vm/laptop_mode

  # Manually set the iwl3945 driver to power savings.
  echo 5 > /sys/bus/pci/drivers/iwl????/0000\:??\:00.0/power_level  

  # Reduce disk activity by waiting up to 10 minutes before doing writes
  echo 90 > /proc/sys/vm/dirty_ratio
  echo 1 > /proc/sys/vm/dirty_background_ratio
  echo 60000 > /proc/sys/vm/dirty_writeback_centisecs

  # Set sound card power savings
  echo 10 > /sys/module/snd_hda_intel/parameters/power_save

  # Set SATA to minimum power
  echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
  echo min_power > /sys/class/scsi_host/host1/link_power_management_policy

  # Imposta la frequenza della cpu su ondemand
  echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 

  # Remove the webcam driver
  # modprobe -r uvcvideo

  #Disable eth0
  sudo ifconfig eth0 down

  # Stop unneccessary  services
  # sudo /etc/init.d/cron stop
  sudo /etc/init.d/bluetooth stop
  sudo /etc/init.d/preload stop

  #poweroff bluetooth
  sudo /usr/sbin/hciconfig hci0 down

  #dim screen and keyboard brightness to minimum
  sudo nvclock -S 15
  sudo echo 0 | sudo tee -a /sys/class/leds/smc::kbd_backlight/brightness

  #downclock nvidia card (requires coolbits=1)
  sudo nvidia-settings -a GPU2DClockFreqs=25,0
  sudo nvidia-settings -a GPU3DClockFreqs=125,0

fi

Se preferite modificatelo per renderlo più "ecologico", successivamente, salvatelo come "99-cazzeggio-mod" (importante è il numero 99) e lo installiamo

sudo install 99-savings /etc/pm/sleep.d
sudo install 99-savings /etc/pm/power.d

Dovreste arrivare a circa 6W che corrispondo a poco più di 9 ore di autonomia, poi ognuno, smanettando può aumentare l'autonomia. Logicamente saranno 9 ore solo se mantene le stesse condizioni d'utilizzo descritte precedentemente. State certi che se lavorate intensamente la batteria non dura più di 3 ore e mezza, come su OSX.

Un piccolo appunto, l'applet della batteria di Ubuntu calcola il tempo di scarica ogni 200 secondi in maniera molto grossolana, sembra non fare una media. Come abbiamo visto fino ad ora l'autonomia la calcoliamo su una media 15 secondi di scarica, es: 55W/10Wh=5h; quei 10Wh di scarica non sono costanti, se ci sono più compiti da fare per alcuni secondi sarà 20W al contario per altri secondi sarà 1W, quindi, è saggio calcolare il tempo rimanente su una media e non su un valore preso singolarmente che sicuramente sarà affetto da errori grossolani. Mi è capitato spesso, a batteria carica, subito dopo il boot che l'applet di Ubuntu mi segni solo mezzora di autonomia, questo non significa che la batteria è scarica, o peggio rovinata, significa soltanto che il calcolo è errato, invece alcune volte mi è stato segnalato un'autonomia di 16 ore, è soltanto un problema di calcolo e se avete letto bene questo paragrafo riuscite a capire il perché. Visto questo problema, mi regolo con i led della batteria del MacBook, se sto cazzeggiando ogni led equivale a circa un'ora, invece, se sto lavorando ogni led corrisponde a mezzora.

NB Conviene caricare la batteria a computer spento, o almeno spegnere il computer quando la carica si avvicina al 90%, solo in questo modo si superano i fatidici 55W di carica.

Periferiche riconosciute in automatico

Molte periferiche e funzionalità vengono riconosciute in automatico, alcune hanno piena compatibilità altre parziali

  • Schermo: pienamente supportato.
  • Colori schermo: se non ci piace il profilo colore di Ubuntu basta copiare i profili colore di OSX "/Users/username/Library/ColorSync/Profiles" e "/Library/ColorSync/Profiles/Displays" e importarli in Ubuntu.
  • Sospensione: nessun problema. NB di default Ubuntu non manda in sospensione quando si chiude il coperchio e il computer è attaccato alla rete elettrica, se si desidera sospendere bisogna modificare l'opzione dal pannello di controllo.
  • Lettore CD/DVD: pienamente supportato, forse c'è qualche problemino nella versione MacBook Pro 8.2
  • Tastiera e TouchPad: pienamente supportati, dopo aver fatto il login funzionano come su OSX se si utilizza Unity 3D. Fanno eccezione di tasti f3 ed f4 a cui non è associata alcuna azione, dal pannello di controllo si possono impostare le azioni da compiere. Fa eccezione anche il tasto "Mela", il funzionamento è quello di Ubuntu. Invece, su Unity 2D e Gnome-shell il TouchPad funziona come su ubuntu classico ad eccezione dello scorrimento a due dita e il tasto destro con due dita.
  • Scheda audio: pienamente supportata. NB ho notato che al primo avvio il volume è impostato su "Muto".
  • Microfono: pienamente supportato. Di default è su "Muto".
  • WebCam FaceTime: pienamente supportata.
  • Scheda Ethernet: pienamente supportata.
  • Bluetooth: pienamente supportato. Di default è attivo sullo stato "Invisibile".
  • Lettore Card: funziona, però ho provato solo con schede SD.
  • Thunderbolt, ho provato solo con un secondo schermo vga e funziona. L'adattatore del monitor Thunderbolt va attaccato dopo aver eseguito il login, se fate partire il computer con l'adattatore Thunderbolt collegato il boot si pianta. Da live Ubuntu non funziona.

Per quanto riguarda la porta FireWire e la porta IrDA ancora non ho avuto modo di fare delle prove non avendo i dispositivi da utilizzare, ma lanciando un lsmod i moduli del kernel sono caricati.

Combinazione tasti

Il tasto “Canc” si ottiene con fn+backspace
Il tasto “Fine” si ottiene con fn+freccia_destra
Il tasto “Inizio” si ottiene fn+freccia_sinistra
Il tasto “PagSu” si ottiene fn+freccia_su
Il tatsto “PagGiù” si ottiene fn+freccia_giù
Per switchare tra i vari terminali tty fn+ctrl+alt+[f1|f2|f3|...]

Riconoscimento del Palmo

Potrebbe essere utile disattivare il touchpad quando si poggia l'intera mano o si utilizza la tastiera, semplice e veloce:

sudo cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/my-synaptics.conf
gksudo gedit /etc/X11/xorg.conf.d/my-synaptics.conf

e inserire alla fine della sezione di input

Option "PalmDetect" "1"

Conclusioni

Come abbiamo visto installare e ottimizzare Ubuntu 12.04 LTS su un MacBook non è un'impresa impossibile, anzi ci permette di tirare fuori il massimo dal nostro MacBook Pro.

Edit: a novembre 2012 ho comprato un disco SSD da 256 GB ed Ubuntu è diventato l'unico sistema operativo, addio OSX!!!