Debian GNU/Linux & iBook G4 12"

Premessa

Ho comprato un iBook di Apple solo perchè trovo che l'hardware non abbia simili per quanto riguarda il rapporto
qualità/prezzo, quando ho fatto l'acquisto un portatile equivalente (un ibm serie X) costava 2400€ contro i 1000
dell'iBook…

Sapevo già, fin dall'inizio, che MacOs X non avrebbe occupato più di 15 gb sul disco fisso, il resto sarebbe stato
dedicato a GNU/Linux, in particolare a Debian.

Caratteristiche

/proc/cpuinfo
processor       : 0
cpu             : 7447A, altivec supported
clock           : 1333MHz
revision        : 0.2 (pvr 8003 0102)
bogomips        : 663.55
machine         : PowerBook6,7
motherboard     : PowerBook6,7 MacRISC3 Power Macintosh
detected as     : 287 (iBook G4)
pmac flags      : 0000001b
L2 cache        : 512K unified
memory          : 512MB
pmac-generation : NewWorld
lspci
0000:00:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 AGP
0000:00:10.0 VGA compatible controller: ATI Technologies Inc M11 NV [FireGL Mobility T2e] (rev 80)
0001:10:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 PCI
0001:10:12.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)
0001:10:17.0 ff00: Apple Computer Inc. KeyLargo/Intrepid Mac I/O
0001:10:18.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
0001:10:19.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
0001:10:1a.0 USB Controller: Apple Computer Inc. KeyLargo/Intrepid USB
0001:10:1b.0 USB Controller: NEC Corporation USB (rev 43)
0001:10:1b.1 USB Controller: NEC Corporation USB (rev 43)
0001:10:1b.2 USB Controller: NEC Corporation USB 2.0 (rev 04)
0002:20:0b.0 Host bridge: Apple Computer Inc. UniNorth 2 Internal PCI
0002:20:0d.0 ff00: Apple Computer Inc. UniNorth/Intrepid ATA/100
0002:20:0e.0 FireWire (IEEE 1394): Apple Computer Inc. UniNorth 2 FireWire (rev 81)
0002:20:0f.0 Ethernet controller: Apple Computer Inc. UniNorth 2 GMAC (Sun GEM) (rev 8
free -m
             total       used       free     shared    buffers     cached
Mem:           502        498          4          0          1        172
-/+ buffers/cache:        323        179
Swap:          953         78        874

Cosa Funziona

Periferica Stato
Scheda Video 2d ok, 3d molto limitato
Video Out Non testato, dovrebbe funzionare
Scheda Audio OK
DVD/CD-RW OK
Hdd OK, ~25 MB/sec
Airport Extreme OK
Ethernet OK
Modem Non testato, ma non sembra essere riconosciuto
Bluetooth OK
Firewire OK
Touchpad OK
Suspend OK

Installazione

Siccome l'ibook viene venduto con MacOs X preinstallato e non è possibile avere un iBook “vergine”
bisogna quindi formattare e reinstallare MacOs.

Io personalmente ho deciso di lasciare per MacOs una partizione da 15 GB all'inizio del disco fisso, ecco la mia
tabella delle partizioni

fdisk -l /dev/hda
/dev/hda
#                       type name                       length   base      ( size )  system
/dev/hda1     Apple_partition_map Apple                     63 @ 1         ( 31.5k)  Partition map
/dev/hda2         Apple_Bootstrap untitled                1954 @ 64        (977.0k)  NewWorld bootblock
/dev/hda3               Apple_HFS Apple_HFS_Untitled_1  31195120 @ 86015104  ( 14.9G)  HFS
/dev/hda4         Apple_UNIX_SVR2 untitled               97657 @ 2018      ( 47.7M)  Linux native
/dev/hda5         Apple_UNIX_SVR2 swap                 1953126 @ 19533269  (953.7M)  Linux swap
/dev/hda6         Apple_UNIX_SVR2 untitled            64528709 @ 21486395  ( 30.8G)  Linux native
/dev/hda7         Apple_UNIX_SVR2 untitled            19433594 @ 99675     (  9.3G)  Linux native
/dev/hda8              Apple_Free Extra                     16 @ 117210224 (  8.0k)  Free space
Block size=512, Number of Blocks=117210240
DeviceType=0x0, DeviceId=0x0

hda1 e hda2 sono partizioni che vengono create dal programma di partizionamento e servono all'OpenFirmware per bootare la macchina
hda3 è la partizione di MacOs
hda4 è dedicata a /boot
hda5 è la partizione di swap, ho scelto la dimensione di 1 GB per evitare problemi con il suspend-to-ram
hda6 è la partizione di /
hda7 è la partizione di /home

Una volta reinstallato MacOs si incomincia con l'installazione di Debian sul disco fisso, io personalmente ho
scelto l'installazione tramite NetInstall, ho usato l'immagine di Sarge.

Una volta avviata l'installazione si deve scegliere la lingua e la mappa per la tastiera.
La mappa corretta non è quella presente nella sezione dedicata ai macintosh, ma una normalissima mappa
per i computer i386, dato che apple ha deciso (finalmente) di usare un layout standard.

Sistemata la mappa per la tastiera procedete con l'installazione come al solito, il divertimento inizierà al riavvio, dato che il kernel fornito con Sarge (2.6.8.1)
purtroppo non supporta ne il suspend, ne il nuovo touchpad.

Configurazione del Kernel

Il 2.6.14 è la prima release della serie 2.6 a supportare sia il suspend che il driver appletouch per il touchpad della nuova serie che si appoggia al bus usb invece che al vecchio bus adb.

Ecco una lista (relativa al kernel 2.6.17.4) delle opzioni da abilitare durante la configurazione:

Processor Support
Processor Type (6xx/7xx/74xx)
AltiVec Support
General Setup
Automatically append version information to the version string
Support for paging of anonymous memory (swap)
System V IPC                                                     
POSIX Message Queues
Sysctl support
Support for hot-pluggable devices
Kernel Userspace Events
Kernel .config support 
Enable access to .config through /proc/config.gz
Platform Support
Machine type (Generic desktop/server/laptop)
Apple PowerMac based machines
Proc interface to RTAS
CPU Frequency scaling
  CPU frequency translation statistics
  Default CPUFreq governor (Scegliete quello che volete, io uso 'userspace')
  Support for Apple PowerBooks
On-chip CPU temperature sensor support
Kernel options
Preemption Model (Voluntary Kernel Preemption (Desktop))
Kernel support for ELF binaries
Support for device tree in /proc
Power Management support
  Legacy Power Management API
Software Suspend
  (Vostra partizione di swap) Default resume partition
  Encrypt suspend image 
Enable seccomp to safely compute untrusted bytecode                                 

Device Drivers

ATA/ATAPI/MFM/RLL support
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Include IDE/ATA-2 DISK support
Use multi-mode by default
Include IDE/ATAPI CDROM support
PCI IDE chipset support
Sharing PCI IDE interrupts support
Generic PCI IDE Chipset Support
Use PCI DMA by default when available
Builtin PowerMac IDE support
Probe internal ATA/100 (Kauai) first
PowerMac IDE DMA support
Scsi Devide support
SCSI device support
  SCSI disk support
  SCSI generic support
IEEE 1394 (FireWire) support
OUI Database built-in
OHCI-1394 support
OHCI-1394 Video support
SBP-2 support (Harddisks etc.)
Ethernet over 1394
OHCI-DV I/O support
Raw IEEE1394 I/O support
Macintosh device drivers
Apple Desktop Bus (ADB) support
Support for PMU  based PowerMacs
APM emulation 
Backlight control for LCD screens
Include MacIO (CHRP) ADB driver
Support for ADB input devices (keyboard, mice, ...)
  Support for mouse button 2+3 emulation
Support for thermal mgmnt on laptops with ADT 746x chipset
Network device support
Ethernet (10 or 100Mbit)
  Generic Media Independent Interface device support
  Sun GEM support
Wireless LAN (non-hamradio)
  Wireless LAN drivers (non-hamradio) & Wireless Extensions
   Broadcom BCM43xx wireless support
    Broadcom BCM43xx debugging (RECOMMENDED)
    BCM43xx data transfer mode (DMA + PIO)
Input device support
(1024)  Horizontal screen resolution
(768)   Vertical screen resolution
Event interface
Keyboards
  AT Keyboards
Miscellaneous devices
  User level driver support
Character devices
/dev/nvram support
Generic /dev/rtc emulation
  Extended RTC operation
/dev/agpgart (AGP Support)
Apple UniNorth & U3 AGP support
Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
Ati Radeon  
Graphic Support
Support for frame buffer devices
Open Firmware frame buffer device support
ATI Radeon display support
DDC/I2C for ATI Radeon support
Logo Configuration
  Standard 224-color Linux logo
Sound
Sound card support
PowerMac DMA sound support
Advanced Linux Sound Architecture
  Sequencer support 
  OSS Mixer API
  OSS PCM (digital audio) API
  OSS Sequencer API
  ALSA PowerMac devices
    PowerMac (AWACS, DACA, Burgundy, Tumbler, Keywest)
    Toggle DRC automatically at headphone/line plug-in
USB support
USB verbose debug messages
USB device filesystem
Enforce USB bandwidth allocation
Dynamic USB minor allocation
USB suspend/resume
EHCI HCD
OHCI HCD support
USB Printer support
USB Mass Storage support
USB Human Interface Device
  HID input layer support
  /dev/hiddev raw HID device support
Apple USB Touchpad support
File Systems
Ext3 journalling file system support
Ext3 extended attributes
Kernel automounter version 4 support
DOS/FAT/NT Filesystems
  VFAT (Windows-95) fs support
  (437) Default codepage for FAT
  (iso8859-15) Default iocharset for FAT 
Pseudo filesystems
  /proc file system support
  /proc/kcore support
  Virtual memory file system support (former shm fs
Miscellaneous filesystems
  Apple Extended HFS file system support

Nella sezione files troverete il config completo.

Xorg

Purtroppo il modello di giugno 2005 monta una ATI Radeon 9550 che non è supportata appieno da Xorg 6.8.2
(anche se pare che verrà supportata completamente da Xorg 6.9/7.0 ) In ogni caso il driver Radeon funziona perfettamente per l'accelerazione 2D.

UPDATE!

Il driver r300 è entrato nel branch di sviluppo di dri. Per avere un minimo di accelerazione 3d (~300fps) è necessario installare il pacchetto libgl1-mesa-dri, che permette di sgravare la cpu di gran parte del lavoro.

Tasto Alt Gr

La tastiera dell'iBook non ha il tasto AltGr, questo è parecchio fastidioso in quanto per scrivere simboli
speciali bisogna schiacciare complicate combinazioni di tasti (ad esempio per la parentesi graffa aperta bisogna
schiacciare il tasto Fn seguito dal tasto Alt, rilasciare Fn, premere shift e il tasto “è”).
Per evitare tutto questo basta rimappare il tasto command (più conosciuto come tasto “Mela”) come Alt Gr usando
il modificatore

"XkbOptions"	"lv3:lwin_switch"

all'interno della sezione relativa alla tastiera in xorg.conf:

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "keyboard"
        Option          "CoreKeyboard"
        Option          "XkbRules"      "xfree86"
        Option          "XkbModel"      "macintosh"
        Option          "XkbLayout"     "it"
        Option          "XkbOptions"    "lv3:lwin_switch"
        Option          "XkbModel"      "pc105"
        Option          "LeftAlt"       "Meta"
        Option          "RightAlt"      "LWin"
EndSection

Mouse

Il driver Appletouch per il touchpad fornisce un layer di compatibilità che viene sfruttato dai driver Synaptic di Xorg:

Section "InputDevice"
        Identifier      "Synaptics Touchpad"
        Driver          "synaptics"
        Option          "SendCoreEvents"        "true"
        Option          "Device"                "/dev/input/mice"
        Option          "Protocol"              "auto-dev"
        Option          "LeftEdge"              "60"
        Option          "RightEdge"             "900"
        Option          "BottomEdge"            "511"
        Option          "HorizScrollDelta"      "0"
        Option          "MinSpeed"              "0.4"
        Option          "MaxSpeed"              "1"
        Option          "AccelFactor"           "0.08"
        Option          "MaxTapTime"            "0"
        Option          "TapButton1"            "0"
        #Two Finger Scroll
        Option          "VertTwoFingerScroll"   "1"
        Option          "HorizTwoFingerScroll"  "1"
EndSection

L'opzione “AccelFactor” è settata in maniera che il touchpad risponda in maniera molto molto simile a quella di
MacOs x, le opzioni “MaxTipTime” e “TabButton1” servono per disabilitare il tapping, dato che il touchpad in
questione è veramente molto sensibile.

Dato che come da tradizione Apple il touchpad è dotato di un solo pulsante è necessario attivare l'emulazione
degli altri due pulsanti, io uso F10 per il tasto centrale (l'equivalente della rotellina) e F11 per il tasto destro.
Per abilitare l'emulazione è necessario agire sui parametri del kernel, per fare questo ho modificato il file
/etc/sysctl.conf in questa maniera:

dev/mac_hid/mouse_button_emulation=1 
dev/mac_hid/mouse_button2_keycode=68       # F10
dev/mac_hid/mouse_button3_keycode=87       # F11

e dato il comando

sysctl -p

per rendere effettive le modifiche.

Sleep e tasti funzione

Per far funzionare correttamente lo sleep e i tasti funzione dell'iBook è necessario usare pbbuttonsd.

Ecco le lineee di configurazione che uso per i tasti funzione (tutto ciò che segue un ”;” è un commento):

SleepKey              = 116   ; tasto di accensione/spegnimento
LCD_IllumDownKey      = 224   ; Fn+F1 abbassa la luminosità dello schermo
LCD_IllumUpKey        = 225   ; Fn+F2 alza la luminosità dello schermo
MuteKey               = 113   ; Fn+F3 attiva/disattiva il mute
VolumeDownKey         = 114   ; Fn+F4 abbassa il volume
VolumeUpKey           = 115   ; Fn+F5 alza il volume
EjectCDKey            = 161   ; Fn+F12 espelle il CD-ROM

Per maggiori informazioni sulle opzioni disponibili rimando alle manpages di pbbuttonsd (man 1 pbbuttonsd) e di
pbbuttonsd.conf (man 5 pbbuttonsd.conf).

Nella sezione Files trovate il mio pbbuttonsd.conf

Gestione delle ventole di raffreddamento

La gestione delle ventole di raffreddamento è demandata al modulo therm_adt746x.

Il modulo, ha dei limiti piuttosto bassi, e quindi le ventole partono decisamente spesso riducendo così l'autonomia
del portatile, per risolvere questo problema basta alzare i limiti creando un alias in /etc/modprobe.d/therm_adt746x
contenente le righe:

alias therm_adt746x therm_adt746x
options therm_adt746x fan_speed=60 limit_adjust=6

Questo abbasserà di parecchio la velocità di rotazione delle ventole e inalzerà di 6 gradi il limite di attivazione,
in maniera che le ventole si attivino all'incirca alla stessa temperatura impostata su MacOs X

Frequency Scaling

Non c'è molto da dire sul frequency scaling se non che basta installare cpufreqd o powernowd per avere lo scaling. Il processore montato su questo modello di iBook è in grado di funzionare a due frequenze:
la minima di 667 MHz e la massima di 1.33 GHz

Usando powernowd e il gestore 'userspace' non ho notato nessun tipo di rallentamente ne' diminuzioni nell'autonomia
della batteria rispetto a MacOs.

Laptop Mode

Laptop Mode è una modalità del kernel (presente a partire dalla release 2.6.6) che permette di estendere l'autonomia
della batteria tramite la gestione ottimizzata degli accessi al disco.

Per attivare Laptop Mode (oltre ad avere un kernel configurato adeguatamente) è necessario installare
laptop-mode-tools un insieme di script capaci di controllare Laptop Mode.

Una volta installato laptop-mode-tools è necessario modificare il file di configurazione per impostare l'unità
che dovrà gestire:

Il file di configurazione è /etc/laptop-mode/laptop-mode.conf.

Il file originale è configurato per essere attivato su qualsiasi tipo di unità disco, cosa che provocherà parecchi
errori per tanto la riga

HD="/dev/[hs]d[abcdefgh]"

dovrà essere sostituita con:

HD="/dev/hda"

È importantissimo non usare laptop-mode sul lettore cd, altrimenti ad ogni avvio di laptop mode sarete sommersi da
errori simili ai seguenti:

hdc: drive_cmd: status=0x51 { DriveReady SeekComplete Error }
hdc: drive_cmd: error=0x04 { AbortedCommand }
ide: failed opcode was: 0xec

Nella sezione files troverete il mio laptop-mode.conf

Hdparm

Per abilitare l'Ultra DMA sul disco fisso è necessario usare hdparm.

In /etc/default/hdparm ho inserito le seguenti linee:

harddisks="/dev/hda"
hdparm_opts="-c1 -d1 -X66 -m16"

Il mio hdparm -i:

/dev/hda:
 Model=FUJITSU MHV2060AT, FwRev=00810099, SerialNo=NS37T5625EFW
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=DualPortCache, BuffSize=8192kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=117210240
 IORDY=yes, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=yes: mode=0x80 (128) WriteCache=enabled
 Drive conforms to: ATA/ATAPI-6 T13 1410D revision 3a:  ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5 ATA/ATAPI-6
  • signifies the current active mode

Il mio hdparm -tT /dev/hda:

/dev/hda:
 Timing cached reads:   996 MB in  2.00 seconds = 498.00 MB/sec
 Timing buffered disk reads:   78 MB in  3.07 seconds =  25.39 MB/sec

Mac-On-Linux

Al momento non è possibile utilizzare mol per avviare Tiger, installato di default su questo modello di iBook
bisognerà aspettare la versione 0.9.71.

Airport Extreme

Perfettamente funzionante grazie al driver bcm43xx che è incluso direttamente nel kernel dalla release 2.6.17

Una volta compilato il modulo dovrete estrarre il firmware da uno dei driver forniti dai produttori di schede wireless basate su chipset Broadcom, uno di essi è fornito con Mac Os X, lo potete trovare in:
$OSX_ROOT/System/Library/Extensions/AppleAirPort2.kext/Contents/MacOS/AppleAirPort2.

Copiatelo in una directory e lanciate il comando

bcm43xx-fwcutter AppleAirPort2

e spostate i file .fw ottenuti in /lib/firmware.

Un'altra fonte per il firmware è il file wl_apsta.o che è il modulo binario presente nel firmware dei router wireless Asus, lo trovate nella sezione files.

Bluetooth

Con un piccolo hack il bluetooth viene rilevato, ma purtroppo non posso fare test più accurati dal momento che non ho nessun dispositivo bt.

Per far rilevare il modulo bluetooth bisogna fare in modo che il modulo usbcore venga inizializzato secondo il vecchio schema, per fare ciò è sufficiente avere usbcore compilato come modulo e creare il file /etc/modprobe.d/usbcore, contentente la seconda riga:

options usbcore use_both_schemes=1 old_scheme_first=1

dopo di che bisognerà scaricare e ricaricare il modulo e in /proc/bus/usb/devices dovrà apparire una sezione simile a questa:

:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  8 Spd=12  MxCh= 0
D:  Ver= 2.00 Cls=e0(unk. ) Sub=01 Prot=01 MxPS=64 #Cfgs=  1
P:  Vendor=05ac ProdID=8207 Rev=19.65
C:* #Ifs= 3 Cfg#= 1 Atr=e0 MxPwr=  0mA
I:  If#= 0 Alt= 0 #EPs= 3 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb
E:  Ad=81(I) Atr=03(Int.) MxPS=  16 Ivl=1ms
E:  Ad=02(O) Atr=02(Bulk) MxPS=  64 Ivl=0ms
E:  Ad=82(I) Atr=02(Bulk) MxPS=  64 Ivl=0ms
I:  If#= 1 Alt= 0 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb
E:  Ad=03(O) Atr=01(Isoc) MxPS=   0 Ivl=1ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=   0 Ivl=1ms
I:  If#= 1 Alt= 1 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb
E:  Ad=03(O) Atr=01(Isoc) MxPS=   9 Ivl=1ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=   9 Ivl=1ms
I:  If#= 1 Alt= 2 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb
E:  Ad=03(O) Atr=01(Isoc) MxPS=  17 Ivl=1ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=  17 Ivl=1ms
I:  If#= 1 Alt= 3 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb
E:  Ad=03(O) Atr=01(Isoc) MxPS=  25 Ivl=1ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=  25 Ivl=1ms
I:  If#= 1 Alt= 4 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb
E:  Ad=03(O) Atr=01(Isoc) MxPS=  33 Ivl=1ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=  33 Ivl=1ms
I:  If#= 1 Alt= 5 #EPs= 2 Cls=e0(unk. ) Sub=01 Prot=01 Driver=hci_usb
E:  Ad=03(O) Atr=01(Isoc) MxPS=  49 Ivl=1ms
E:  Ad=83(I) Atr=01(Isoc) MxPS=  49 Ivl=1ms
I:  If#= 2 Alt= 0 #EPs= 0 Cls=fe(app. ) Sub=01 Prot=00 Driver=(none)

che identifica proprio il modulo bluetooth.

Files

 
howto/ibook.txt · Ultima modifica: 07/03/2010 10:46 (modifica esterna)
 
Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è sotto la seguente licenza:GNU Free Documentation License 1.2
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki