====== 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 [[http://dri.freedesktop.org|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 [[http://pbbuttons.berlios.de/|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 [[http://bcm43xx.berlios.de/|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-config-2.6.17.4.gz|config-2.6.17.4.gz}}\\ {{:howto:ibook-xorg.conf|xorg.conf}}\\ {{:howto:ibook-pbbuttonsd.conf|pbbuttonsd.conf}}\\ {{:howto:ibook-hdparm.conf|hdparm.conf}}\\ {{:howto:ibook-laptop-mode.conf|laptop-mode.conf}}\\ {{:howto:ibook-sysctl.conf|sysctl.conf}}\\ {{:howto:ibook-wl_apsta.o.gz|wl_apsta.o.gz}}\\ \\ \\ --- //mind -- 07/09/2006//