main index Click here for helicopters La mia tesi di laurea Linux pages Nota: le mie pagine sugli Apple Mac sono qui!


Linux Slackintosh 12 on Apple Mac Mini G4

Mi è capitato di mettere le mani su un Mac Mini G4, e non vedevo l'ora di installarci Linux. In questa pagina racconto avventure e disavventure relative all'installazione della Slackintosh 12 (che era stata rilasciata proprio pochi giorni prima che io rimediassi questo Mac Mini).

La Slackintosh 12 è una Slackware 12 ricompilata per PowerPC (in gergo, "PPC") e con poche aggiunte su misura dei Mac, basata sul kernel Linux 2.6.21.5. La Slackware è nota per essere la distribuzione Linux per gli smanettoni (la OpenSuse certamente sarà più user-friendly, ma preferisco aspettare la 10.3 perché la OpenSuse 10.2 per PPC risulta avere problemi con l'audio).

Eh, ne è passato di tempo dalla mia prima Slackware contenuta in dieci dischetti da 1.44Mb...! :-)

Usabilità:

Situazione attuale (non ho ancora potuto provare tutto):


Installazione di Linux Slackware 12 sul Mac Mini G4

Cosa ho a disposizione:

Scopo dell'installazione:

Risorse nell'internet:

Note sulla RAM e sull'ardisco:

Prima di tutto, ripartizionare il disco da 80 giga del Mac Mini:

Per qualche terribile bug della Utility Disco di Mac OS X, la partizione journaled risulta di soli quarantadue gigabyte (metà del disco?!) - si tratta di bug sul ricalcolo delle dimensioni delle quattro partizioni (che a video talvolta tirano fuori valori addirittura negativi). Trascinando su e giù il bordo che separa le partizioni Mac/Linux col mouse, si ottiene finalmente il valore esatto (circa "56 giga" per OS X, che dopo verranno visti come "63 giga", magie dell'installazione Mac OS X! sembrano i bug di Win*ows...)

Cliccando su "partiziona", esce l'avviso che si sta per procedere alla partizione in tre volumi (quello che abbiamo chiamato "Newworld", per qualche strano motivo non mi veniva citato a video: magie dei bug dell'Utility Disco di Mac OS X).

Usciamo da Utility Disco e completiamo l'installazione di OS X Tiger sulla nuova partizione. Purtroppo questo passaggio è necessario, perché in caso di ulteriori guai durante l'installazione di Linux non vogliamo rimanere a piedi con un computer inutilizzabile! (la colpa non è di Linux ma della bagarre del partizionamento dei dischi in formato Mac). Solo dopo che l'installazione Linux è completa, provvederemo a ripristinare il backup del Mac OS X del Mac Mini.

Dunque, ora che abbiamo un Mac Mini pluripartizionato e con un Mac OS X installato e funzionante, passiamo all'installazione di Linux:

A questo punto, dovrebbe filare tutto liscio come l'olio fino alla fine dell'installazione della Slackintosh 12.

A me, invece, dramma e tragedia: il disco DVD della Slackintosh sembrava danneggiato (alla faccia della masterizzazione 2× e verifica su due diversi dischi DVD+RW): riesce a fare il boot, ma al momento del setup ha i mal di pancia (premendo Alt-F3 e dando il comando dmesg scopro, alla fine dei messaggi del kernel, degli errori ripetuti durante la lettura del DVD).

Inutile provare a masterizzare di nuovo: il problema è altrove. Quei "buffer I/O error", "seek error", etc, non dipendono da una errata masterizzazione (così come appariva dopo aver fatto manualmente il mount del disco DVD). Ho qualche sospetto sul fatto che era dovuto all'aver utilizzato dei DVD+RW (sia pure di marca!)

Per aggirare il problema è bastato sputare fuori il disco dal Mac Mini e reinserirvelo (incredibile ma vero). È stato sufficiente utilizzare: eject -T /dev/hdb (per qualche strano motivo il solo eject non bastava). A questo punto, dopo i soliti tentativi a vuoto col disco e con un po' di rallentamenti, il setup va avanti e fa scegliere la tastiera, identifica correttamente la partizione di swap (e la attiva), e quindi identifica la partizione root di Linux, scrivendo "K" alla fine (quando in realtà si trattava di settori, non di kilobytes), prendendo cioè fischi per fiaschi (la partizione da 11 giga sembrava così di 22 giga, ma per fortuna il valore non veniva segnalato a mkfs per cui non ha pasticciato).

Una volta arrivato a scegliere i pacchetti, è fatta: il tutto mi fila liscio come l'olio fino al termine dell'installazione.

Avevo resistito alla tentazione di tentare di utilizzare il filesystem HFS (con opzione "case-sensitive") perché non ero sicuro di quanta fatica ci volesse per farlo vedere a yaboot e al kernel. Una volta formattato in tal modo da Utility Disco, durante l'installazione della Slackintosh sarebbe bastato chiedere modprobe hfs in una finestra terminale e poi chiedere di non riformattare la partizione "root" di Linux.

Insomma, ho resistito alla tentazione di cui sopra (per adesso!) ed ho utilizzato il mefitico ext3 (il reiserfs di cui sono stato per tanti anni tifoso, e che è più veloce di ext3, ormai non mi ispira più).

Comunque, comicissimo: reinserendo il disco e rifacendo manualmente mount -t iso9660 -o ro /dev/hdb /mnt vedevo che non risultavano più errori (il guaio è che i vari probe e lvm etc, in sede di installazione mi continuavano a dare le stesse rogne di prima; per fortuna non ci sono "logical volumes" mostruosi su un semplice Mac Mini!).

Naturalmente questo è un sistema per smanettoni: dopo aver fatto l'installazione completa (che richiede 5-6 gigabyte), c'è ancora da creare un utente (con "adduser" o "useradd", a seconda delle preferenze; ricordarsi sempre di approvarlo per i gruppi "audio", "cdrom" e "tty"; poi, una volta in login con quell'utente, si usa il comando startx per avviare Xorg e KDE) e si ha il sistema pronto in modo testo. Per di più Slackintosh 12 abbisogna già di alcune patch (nessuno è perfetto, in questo mondo), prelevabili dal loro stesso sito ufficiale sotto la directory patches/packages. E infine c'è da sistemare X.org, poiché startx la prima volta non fa partire niente...

E naturalmente occorre smanettare sul resto, visto che per default restano aperte le porte dei servizi scelti durante l'installazione (ssh, http, sunrpc, ident, afp-over-tcp).


Configurazione di X.org

Basterebbe utilizzare xorgconfig, ma bisogna smanettarci un po'.

Comunque, ecco il mio /etc/X11/xorg.conf già bello e pronto per Mac Mini G4 con display LCD 1280×1024. Notare che la tastiera è marcata come tipo "apple" (le tastiere degli iBook hanno invece layout "pc104").

Ricordarsi poi, dal Control Center di KDE, nella sezione "Regional-Accessibility", di scegliere "keyboard layout: Apple" e "keyboard shortcuts: modifier Keys: Macintosh keyboard, Mac OS style modifier usage". Ci sarebbero da modificare ancora i parametri di xkb perché al momento per ottenere i caratteri "#", "@", etc, si può usare solo il tasto Alt destro, anziché entrambi gli Alt (arrrgh! io ero abituato a usare entrambi!)

Notare che nel server layout ci sono solo tastiera e mouse USB (oltre che l'identificazione dello schermo). Inoltre, nella sezione "Module" non vengono caricati i moduli inutili su questa piattarforma (notevolmente il "vbe").


Section "ServerLayout"
        Identifier     "Layout0"
        Screen      0  "Screen0" 0 0
        InputDevice    "Keyboard0" "CoreKeyboard"
        InputDevice    "Mouse0" "CorePointer"
EndSection

Section "Files"
        FontPath   "/usr/X11R6/lib/X11/fonts/mscorefonts"
        FontPath   "/usr/X11R6/lib/X11/fonts/freefont"
        FontPath   "/usr/X11R6/lib/X11/fonts/TTF/"
        FontPath   "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath   "/usr/X11R6/lib/X11/fonts/local/"
        FontPath   "/usr/X11R6/lib/X11/fonts/misc/"
        FontPath   "/usr/X11R6/lib/X11/fonts/TTF/"
        FontPath   "/usr/X11R6/lib/X11/fonts/CID/"
        FontPath   "/usr/X11R6/lib/X11/fonts/Speedo/"
        FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/"
        FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/"
        FontPath   "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
        FontPath   "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
        FontPath   "/usr/X11R6/lib/X11/fonts/cyrillic/"
EndSection

Section "Module"
        Load    "GLcore"
        Load    "bitmap"
        Load    "dbe"
        Load    "ddc"
        Load    "dri"
        Load    "extmod"
        Load    "freetype"
        Load    "glx"
        Load    "int10"
        Load    "record"
        Load    "speedo"
        Load    "type1"
        Load    "v4l"
        Load    "xtt"
        #Load   "vbe"
        #Load   "bitmap"
        #Load   "fbdevhw"
        #Load   "record"
        #Load   "xtrap"
EndSection

Section "InputDevice"
        Identifier  "Mouse0"
        Driver      "mouse"
        Option      "Protocol" "Auto"
        #Option     "Emulate3Buttons"
        Option      "Device" "/dev/mouse"
        Option      "ZAxisMapping"  "4 5"
EndSection

Section "InputDevice"
        Identifier  "Mouse1"
        Driver      "evdev"
        Option      "CorePointer"
        Option      "Name" "Apple Bluetooth mouse"
        Option      "Protocol" "Auto"
        Option      "HWHEELRelativeAxisButtons" "7 6"
        Option      "WHEELRelativeAxisButtons" "4 5"
EndSection

Section "InputDevice"
        Identifier  "Keyboard0"
        Driver      "kbd"
        Option      "CoreKeyboard"
        Option      "XkbRules" "xorg"
        Option      "XkbModel" "apple"
        Option      "XkbLayout" "it"
EndSection

Section "InputDevice"
        Identifier  "Keyboard1"
        Driver      "evdev"
        Option      "XkbRules" "xorg"
        Option      "XkbModel" "apple"
        Option      "XkbLayout" "it"
EndSection

Section "Monitor"
        Identifier   "Monitor0"
        VendorName   "Monitor Vendor"
        ModelName    "FP71G"
        DisplaySize  340 270
        HorizSync    31.0 - 83.0
        VertRefresh  56.0 - 76.0
        Option      "dpms"
EndSection

Section "Device"
        Identifier  "Card0"
        Driver      "radeon"
        Option      "UseFBDev"          "true"
        Option      "RenderAccel"       "true"
        Option      "AGPFastWrite"      "true"
        Option      "EnablePageFlip"    "true"
        Option      "AGPMode"           "4"
EndSection

Section "Screen"
        Identifier "Screen0"
        Device     "Card0"
        Monitor    "Monitor0"
        DefaultDepth     24
        SubSection "Display"
                Viewport   0 0
                Depth     24
                Modes    "1280x1024"
        EndSubSection
EndSection


Section "DRI"
        Mode 0666
EndSection

L'accelerazione grafica funziona discretamente bene: glxgears riporta ben 923 fps.

Caso comico: aggiungendo al volo un altro mouse USB (stavolta un mouse USB Asus con due tasti e rotellina) al connettore USB della tastiera Apple, viene immediatamente riconosciuto con questa stessa configurazione (miracoli del supporto USB HID).


Filesystem del Mac OS X

Per default il Mac OS X utilizza il filesystem HFS+, cioè "Mac esteso con journaling". Quest'ultimo è supportato da Linux in sola lettura (il driver capace di scrivere è ancora sperimentale).

Sulle partizioni Mac dove non è abilitato il journaling (vanno create di proposito), si può accedere invece regolarmente in lettura e scrittura (dunque al momento del partizionamento si poteva benissimo creare una partizione in più, in HFS, leggibile e scrivibile sia da OS X che da Linux). Queste ultime vengono chiamate "Mac OS esteso" (senza journaling) dalla Utility Disco di OS X, e il filesystem corrispondente sotto Linux è "hfs" (laddove quello journaled e read-only è "hfsplus").

In breve, basta aggiungere una riga come questa all'/etc/fstab per avere la partizione OS X disponibile da Linux in lettura:
/dev/hda10 /mac hfsplus defaults 0 0
(dove "hda10" è la partizione dove sta OS X e "/mac" è il nome della directory di Linux - già esistente e vuota - su cui verrà "montato" il filesystem al prossimo reboot o al prossimo mount -a; nel caso di partizione comune in "esteso non journaled", si usa "hfs" al posto di "hfsplus").


Il guaio del mouse monotasto

Al momento ho un mouse monotasto Apple bluetooth, ed un mouse monotasto Apple classico. Dovrò mica comprare un mouse USB o wireless con almeno un paio di tasti? :-)

Nel frattempo è possibile istruire il kernel di Linux per simulare il tasto destro ("button2") e il tasto centrale ("button3") con dei tasti della tastiera. Nel mio caso ho utilizzato il tasto Mela destro come "button2", ed il tasto "quadratino cancellato" (quello che sta nel tastierino numerico, proprio sotto il tasto di "abbassa il volume") come "button3": è bastato creare un file /etc/sysctl.conf contenente queste tre righe:
dev.mac_hid.mouse_button3_keycode = 69
dev.mac_hid.mouse_button2_keycode = 126
dev.mac_hid.mouse_button_emulation = 1

e poi lanciare (sempre da "root") sysctl -p (che viene eseguito comunque ad ogni reboot). Notare che "button2" significa "tasto destro del mouse" e "button3" significa "tasto centrale di un mouse a tre tasti".

Non è la soluzione ottimale, certo, ma almeno funziona. Sarà che sono da anni abituato ad usare il Ctrl sinistro più la cliccata del monotasto per dirgli "tasto destro del mouse"...

Ho scelto i due sopracitati tasti della tastiera perché sono quelli che non tocco praticamente mai. Per vedere quali keycode si possono usare, basta usare il comando showkey da "root" in text mode (poiché sotto Xorg non vanno); così, per esempio, si potrebbero usare i keycode da 183 a 186, che appartengono rispettivamente ai tasti F13 F14 F15 F16 delle tastiere Apple).

Non ho potuto usare il tasto Alt destro come "button3" perché tasto Alt destro serve a ottenere i simboli strani usati spesso ("#", "@", "[", "]", etc): non mi andava dover cambiare il layout della tastiera da italiano ad US/English ogni volta che devo scrivere un paio di righe di codice...!


Audio: ALSA

Il KDE se la cava benissimo con l'audio, che non abbisogna di configurazione.

Per il modo testo, siccome alsaconf non riesce a capire di che scheda audio si tratta, pare che basti creare un file /etc/modprobe.d/alsa contenente:
alias char-major-116 snd
alias char-major-14 soundcore
alias snd-card-0 snd-powermac
alias sound-slot-0 snd-card-0
alias sound-service-0-0 snd-mixer-oss
alias sound-service-0-1 snd-seq-oss
alias sound-service-0-3 snd-pcm-oss
alias sound-service-0-8 snd-seq-oss
alias sound-service-0-12 snd-pcm-oss
alias /dev/mixer snd-mixer-oss
alias /dev/dsp snd-pcm-oss
alias /dev/midi snd-seq-oss
options snd cards_limit=1

Dopodiché, dal prossimo boot, anche in modo testo sarà possibile usare alsamixer e alsactl (con alsactl store vengono salvati su disco i valori del volume, che verranno conservati al prossimo reboot).

Più informazioni sull'audio le troviamo sotto /proc/asound (risultano presenti anche i sequencer Midi, etc, ma mancano ovviamente i connettori hardware: il Mac Mini è stato ridotto all'essenziale...!)


Ethernet e wifi (airport)

Per qualche misterioso motivo, dopo la prima installazione, la ethernet (basata su chipset SunGEM) viene talvolta riconosciuta come eth0, talaltra eth1; e viceversa per la scheda wifi (che Apple chiama pomposamente "AirPort"). Per stabilire definitivamente che eth0 è internet ed eth1 è wifi, basta prendere nota del "mac-address" della ethernet (utilizzando dmesg | grep 00:0) ed editare il file /etc/udev/rules.d/75-network-devices.rules per specificare che a quello corrisponde il "name" eth0 e all'altro (che è il wifi) eth1 (in questo modo, dal prossimo reboot, siamo sicuri che eth1 sarà la wifi).

Per la ethernet la configurazione è semplice, basta usare dhcpcd eth0 se la si vuole con DHCP (per esempio nel caso in cui un altro Mac, lì vicino, sia configurato per "condividi la tua connessione XYZ ai computer che usano ethernet) oppure i soliti comandi per dare manualmente un indirizzo IP, come per esempio ifconfig eth0 192.168.0.44 up ; route add default gw 192.168.0.1 (o configurazione simile).

Meglio ancora, si può editare il file /etc/rc.d/rc.inet1.conf dove si possono indicare gli indirizzi IP fissi, le netmask, l'indirizzo di gateway, etc, che verranno attivati ad ogni reboot della macchina. Per dire che un'interfaccia va configurata con DHCP basta mettere "yes" nella corrispondente riga USE_DHCP.

Passiamo alla scheda wifi, che è della serie BCM43xx, i cui driver ora fanno parte del kernel Linux ufficiale (dal 2.6.14 in poi). Per la scheda occorre recuperare il firmware, che sta nella partizione Mac OS X (sono circa 700k): /System/Library/Extensions/AppleAirPort2.kext/Contents/MacOS/AppleAirPort2

Questo file va copiato sotto /tmp e quindi va eseguito il comando:
bcm43xx-fwcutter -w /lib/firmware /tmp/AppleAirPort2

Importante: nelle vecchie versioni di Mac OS X (per esempio Panther 10.3.7) -e forse fino a quelle più recenti- è presente un firmware un po' datato che il bcm43xx-fwcutter non riesce ad "estrarre" per intero, e per di più si lamenta che il supporto è limitato agli standard 802.11b/g (mancando l'802.11a). Non pensate di fare i furbi tentando truffaldinamente di riciclarvi il firmware AppleAirPort2 presente nella directory corrispondente di un Powerbook dotato dell'ultimissima release di Mac OS X... :-)

Ora, nel file /etc/rc.d/rc.wireless.conf si può inserire, subito dopo la riga case $HWADDR in:

0A:1B:2C:3D:4E:5F)
    INFO="Airport Extreme"
    ESSID="any"
    ;;
(sostituendo ovviamente 0A:1B... con il mac-address della scheda wifi, mac-address che possiamo recuperare con il comando ifconfig eth1 - occhio alle maiuscole nel mac-address).

Al posto di "any" (che significa "connessione a una rete qualsiasi") si può mettere il nome della rete wireless a cui connettersi. Nel resto dello stesso file ci sono altri esempi su come connettersi a reti wireless protette.

Una volta riavviato il sistema, è possibile finalmente vedere il tutto in funzione; per esempio, col comando iwlist eth1 scan si possono vedere le reti wireless disponibili.

Con ifconfig si vedono le interfacce attive (la lo per uso interno loopback, la eth0 ethernet e la eth1 wifi); con route (o route -n) si vede la tabella di routing; con iwconfig si vedono le estensioni wireless (naturalmente di interesse solo per la eth1). Un ping ad un sito che risponde (per esempio lo stesso Google) ci confermerà che funziona tutto.

Il mio uplink wireless è alquanto tonto quanto al nameserver, e pertanto ho dovuto specificare esplicitamente un nameserver nella configurazione di cui sopra (mettendo per esempio 195.210.91.1 o 212.216.112.222).


Tasti volume/mute della tastiera

Per qualche strano motivo il KDE non capisce bene i tasti del volume della tastiera (quelli con scancode 113-114-115), che Xorg ha associato rispettivamente ai bindings "XF86AudioMute", "XF86AudioLowerVolume", "XF86AudioRaiseVolume".

Una mezza soluzione è definire direttamente dei bindings da associare al comando aumix: basta andare nel Control Center del KDE, nel menu Regional/Accessibility, scegliere Input Actions, e nelle Preset Actions (dove di default c'è solo un innocuo "printscreen") con il tasto New Action definire i nuovi bindings.

Per esempio, per il comando per alzare il volume, basta definire in "General" l'azione col nome "VolumeUp", di tipo "keyboard shortcut - command/url"; poi, nel menu "keyboard shortcut", cliccare sul tasto di "select keyboard shortcut" (si apre la finestrella "configure shortcut"); premere il tasto dalla tastiera Mac "alza volume" (ignorando il finestrone "Volume 11%" che esce per un attimo): il tastone a video viene rinominato "XF86AudioRaiseVolume". A questo punto andare sul terzo menu, "Command/URL settings" e scrivere aumix -w +10 nella casella di testo, e premere in basso il tasto "Apply".

Ripetere la stessa operazione per creare le azioni "VolumeDown" (usando aumix -w -10) e "VolumeMute" (usando aumix -w 0).

Il valore del volume del canale PCM, per aumix va da 0 a 100, per cui si possono usare anche valori diversi da -10 e +10 per abbassare e alzare il volume.

Dunque, a parte il vergognoso "Volume:11%" a video, abbiamo i tasti del volume che funzionano... per rendere elegante la soluzione, devo solo trovare il modo di disabilitare i default dei keybindings "XF86Audio*.*" a Xorg. Suggerimenti?

Già che ci siamo, andiamo a cambiare il binding del "PrintScreen" e utilizziamo - per esempio - il tasto F13 (il tasto "Print" sulle tastiere Apple non c'è). Così, con F13, partirà il comodossimo ksnapshot del KDE.

Il tasto "sputa fuori il disco" funziona già correttamente (altrimenti lo avremmo tranquillamente associato al comando eject -T /dev/hdb).

Nota bene: questi "bindings" sono relativi al solo KDE, per cui al di fuori di KDE, salvo rare eccezioni, ovviamente non funzionano (occorrerà trovare qualche altro trucco).

Importante: con questi stessi trucchetti si possono associare altre funzioni a qualsiasi combinazione di tasti (per esempio Ctrl-F16 per abbattere/riavviare la connessione internet, o cose del genere).


Bluetooth

Prima di proseguire, assicuriamoci di quali siano i "bluetooth device address" (BD-address) delle periferiche che vogliamo collegare. Nel mio caso, da Mac OS X, dal Preferenze di Sistema, sotto Bluetooth, nel sottomenu Dispositivi, cliccando sul mouse Bluetooth Apple vedo il suo BD-address 00:0A:95:xx:yy:zz e cliccando sulla tastiera Bluetooth Apple vedo invece il suo 00:0A:95:xx:yy:zz (visualizzabili anche se in quel momento non sono "abbinati").

Ora il processo sembra macchinoso, ma solo perché stiamo smanettando con una Slackware, la regina delle distribuzioni per gli smanettoni:

Se tutto è filato liscio, il mouse Apple bluetooth dovrebbe essere attivo già subito (entro 10-15 secondi al massimo); nel dubbio, riavviare il Mac Mini. Che delizia vedere il mouse USB Apple ed il mouse Bluetooth Apple muovere lo stesso cursore (in modo testo con gpm o nell'ambiente grafico KDE/Xorg).

Per abilitare il mouse Apple bluetooth anche nel KDE basta aggiungere una sezione apposita nell'xorg.conf (cosa già fatta per quello presentato in questa pagina, quello con protocollo "evdev").

Lanciando hcitool scan vedo che il Mac Mini si accorge anche della presenza del telefonino e del Powerbook, segnalando i loro BD-address; viceversa, il Mac OS X del Powerbook, dopo aver lanciato "Imposta dispositivo Bluetooth", trova il Mac Mini con Linux (se appare il nome di default "BlueZ(0)" vuol dire che non avete ancora modificato il file /etc/bluetooth/hcid.conf oppure avete configurato ma non ancora riavviato per la prima volta il supporto bluetooth).

Da notare che le periferiche bluetooth Apple (mouse e tastiera) sono un po' sorde e dure di comprendonio, per cui non è detto che funzioni tutto al primo colpo (magari "pensavano" ancora di essere connesse al Powerbook, o magari le batterie sono alquanto scariche, o magari avevate dimenticato di spegnerle e riaccenderle per il primo tentativo).

Ancora non riesco a connettere la tastiera bluetooth Apple, temo che qui si tratti di smanettare col bluepin...

(continua...)


Performance dell'ardisco

Dopo ripetuti hdparm -tT /dev/hda vedo che l'hard disk del Mac Mini, con la normale installazione Slackintosh, legge a circa 32Mb/sec (e circa 350Mb/sec nelle "cached reads"). Da hdparm -iv /dev/hda vediamo che usa il modo UDMA5. Il mio è un Seagate ST9808210A (80Gb nominali, 4200rpm).

Le prestazioni sembrano di tutto rispetto, ed infatti provando il "tuning" dei miei vecchi notebook Thinkpad ed Asus vedo che non ci sono miglioramenti (anzi, forse un leggerissimo peggioramento), almeno per quel che riguarda il test brutale di lettura:
hdparm -ivm 16 -c 1 /dev/hda
hdparm -t /dev/hda
/dev/hda: Timing buffered disk reads: 98 MB in 3.02 seconds = 32.46 MB/sec

Resta da vedere se durante l'utilizzo normale del computer quel multicount 16 e quell'IO-support 32 bit faranno davvero una differenza visibile (sospetto che sia una domanda inutile, cioè che non ci saranno miglioramenti).


Come ripristinare il bootloader Yaboot

Nel caso si aggiorni il Mac OS X con una patch più recente, il bootloader yaboot viene disabilitato. In questo caso è sufficiente ripartire col DVD di boot della Slackintosh (tenendo premuto "C" all'accensione per partire da CD/DVD anziché da hard disk); una volta arrivati al prompt di root, anziché dare il comando setup per avviare l'installazione, si può montare la partizione Linux e la directory virtuale /proc (necessaria ad ybin), passare al filesystem Linux con chroot ed eseguire ybin per risistemare il tutto. In parole povere:
mount /dev/hda8 /mnt
chroot /mnt
mount -t proc /proc /proc
ybin
reboot

(nota: se la prima mount dà errori, è perché avete usato una partizione sbagliata; la hda8 in questione va infatti sostituita con la partizione "root" su cui avevate originariamente installato Linux; secondo l'esempio citato più su in questa pagina, era la famosa "partizione da dieci giga e passa").


Hard disk esterno su porta firewire 400

Il KDE si accorge dell'esistenza del disco esterno su porta Firewire 400; comunque, da modo testo, lo potevamo già notare col comando cat /proc/partitions (oltre alle partizioni del disco ATA interno /dev/hda vedo anche le partizioni del disco esterno /dev/sda).

Col comando mac-fdisk /dev/sda possiamo visualizzare le partizioni (il comando fdisk infatti è per i dischi formattati in modo classico Unix, MS/DOS, Win, etc). Una volta visualizzate le partizioni, possiamo pure montarle, per esempio: mount -t hfsplus /dev/sda7 /discoesterno2 (dove /discoesterno2 è una directory vuota creata di proposito). Invece, per "smontarla", basta il solito umount /discoesterno2

Se il disco firewire in questione è destinato a rimanere perennemente collegato, per "montare" automaticamente ad ogni reboot le singole partizioni è sufficiente aggiungere nel file /etc/fstab una riga per ogni partizione; l'esempio di poco fa finirebbe nel fstab così: /dev/sda7 /discoesterno2 hfsplus ro 0 0

Da notare che le partizioni hfsplus sono solo leggibili (abbiamo infatti usato quel "ro" - cioè read-only - al posto del "defaults") mentre quelle hfs sono anche scrivibili. Per cui, per avere un'area leggibile e scrivibile sia da Linux che da Mac OS X, è sufficiente creare da qualche parte una partizione hfs come specificato un po' più su in questa stessa pagina.

Clamorosamente hdparm mi dice 24Mb/sec, cioè circa il 25% in meno rispetto al disco interno ATA, nonostante il disco esterno sia a 7200 giri Firewire e quello interno a 5400 giri ATA... mah! Vedremo con l'uso se il Firewire è davvero così "lento" (a prima vista sembra velocissimo).


Compact-disc

Come c'era da aspettarsi, funzionano senza problemi. Il KDE della Slackintosh, la prima volta che si inserisce un CD, chiede cosa fare di default (aprire in una nuova finestra, aprire K3b per farne copie, oppure nessuna operazione).

Se si tratta di un CD vergine, non accade nulla (ma dal comando dmesg vediamo un messaggio del kernel Linux "cdrom: this disc doesn't have any tracks I recognize!"). Se si sceglie di non fare niente, si può più tardi montarlo manualmente, col comando: mount -t iso9660 -o ro /dev/hdb /mnt
(dove /mnt è una directory vuota su cui "montarlo" in "ro", cioè read-only). Per espellerlo, basta il comando eject come al solito.

Se un CD contiene musica, allora il KDE ci chiede se vogliamo ascoltarlo con Amarok oppure "ripparlo" o copiarlo. Anche qui, come prevedibile, nessun problema. Amarok però è più orientato a suonare files MP3 (infatti ci è voluto un bel po' per capire che Amarok non possiede alcun comando per espellere il CD: bastava comunque premere il tasto di espulsione dalla tastiera, oppure il sopracitato comando eject).


Networking via cavo firewire

Lo stesso cavo firewire (6pin-6pin) utilizzato per connettere il disco esterno LaCie, è stato sufficiente per connettere il Powerbook (rete locale via cavo firewire anziché cavo ethernet). Dalla Slackintosh Linux è bastato dare da root un modprobe ed un ifconfig, per esempio così:
modprobe eth1394
ifconfig eth2 192.168.91.2

Il modulo eth1394 del kernel non viene caricato automaticamente (neppure se il cavo firewire viene collegato a un altro computer), per cui per far "svegliare" l'interfaccia eth2 occorre usare il modprobe), ma una volta attivato, si può usare come una ethernet qualsiasi (per cui valgono le osservazioni indicate sopra, in modo da fissare eth0 per la ethernet, eth1 per il wifi, ed eth2 per la firewire 400). Nel caso in questione, il "Preferenze di sistema" del Mac si è accorto della presenza della firewire, ma bisognava configurargli un indirizzo IP.

Nota bene: mentre sotto Linux le interfacce si chiamano eth0, eth1, eth2 su Mac OS X si chiamano en0 (ethernet) en1 (wifi) fw0 (firewire).


Tavoletta grafica Wacom Graphire4 USB

Dopo aver connesso la tavoletta alla porta USB del Mac Mini, dando il comando dmesg e ls -al /dev/input/by-id vediamo a quale device è stata associata. Se per esempio è stata associata ad input5 allora aggiungiamo queste tre sezioni nella configurazione /etc/X11/xorg.conf:
Section "InputDevice"
    Driver     "wacom"
    Identifier "stylus"
    Option     "Device" "/dev/input/event5"
    Option     "Type"   "stylus"
    Option     "USB"    "on"
EndSection

Section "InputDevice"
    Driver     "wacom"
    Identifier "eraser"
    Option     "Device" "/dev/input/event5"
    Option     "Type"   "eraser"
    Option     "USB"    "on"
EndSection

Section "InputDevice"
    Driver     "wacom"
    Identifier "cursor"
    Option     "Device" "/dev/input/event5"
    Option     "Type"   "cursor"
    Option     "USB"    "on"
EndSection

# This section is for Intuos3, Cintiq 21UX, or Graphire4 only
Section "InputDevice"
    Driver        "wacom"
    Identifier    "pad"
    Option        "Device" "/dev/input/event5"
    Option        "Type"   "pad"
    Option        "USB"    "on"
EndSection

E poi aggiungere queste righe nella sezione "ServerLayout" (dove sono già stati definiti mouse e tastiera):
    InputDevice "stylus"
    InputDevice "eraser"
    InputDevice "cursor"
    InputDevice "pad"

Se invece sotto /dev/input/by-id non troviamo nessun link relativo alla tavoletta grafica, allora vuol dire che il kernel va ricompilato attivando il supporto per i device Wacom (questo è purtroppo il caso della Slackintosh 12).


IMPORTANTE: questa pagina di appunti sparsi non ha la pretesa di essere un trattato esaustivo sull'argomento, e verrà aggiornata man mano che vengono fuori migliorie e novità. Non aspettatevi però chissà che cosa, perché non vi posso promettere che ci lavorerò ancora (segnalerò però su questa stessa pagina altri che hanno fatto un lavoro come questo).


Linux and Mac OS X inside!

send e-mail - continua (next page)