Matthias Schmidt

Philipps University Marburg
Department of Mathematics and Computer Science

University logo

Linux auf einem Apple Powerbook 12"

In diesem HOWTO beschreibe ich die Installation von Linux auf einem Apple Powerbook 12".

Apple Powerbook 12 Image

Letztes Update

Tue Apr 25 12:26:11 CEST 2006

Kontakt

My email address as PNG images. Please use a
graphic browser. Sorry, too much spam.

GnuPG public key

matthias.asc

Hardware

0. Generelles

Da bei Apple einiges anderes ist als bei einem x86-kompatiblen Rechner, muss man sich ersteinmal an ein paar neue Dinge gewöhnen. Dazu gehört zum einen die Tastatur und das Dateisystem.

0.1 Akku

Das wichtigste zuerst, der Akku. Laut Herstellerangabe soll er bis zu 5 Stunden halten, dies kann ich aus eigener Erfahrung nicht bestätigen. Unter OS X hat er gerade mal 2.5 Stunden gehalten, dann war Schicht im Schacht. Unter Linux hingegen hielt der Akku dagegen ca. 3.5 Stunden unter Vollast (4 x Kernel compilen, 4 x rebooten, n x make ;). Im Normalbetrieb lief der Laptop je nach Anwendungsart 4 bis 4.5 Stunden.

0.2 Wärmeabgabe

Also im Winter bekommt man zumindest beim Hacken mit dem PB 12" keine kalten Finger :) Der Laptop hat zwar einen aktiven Lüfter, der sehr sehr leise ist, benutzt aber das Alu-Gehäuse als passiven Kühlkörper, was eine enorme Wärmeabgabe mit sich bringt. Fazit: Das Gehäuse wird warm, was aber IMO nicht sehr störend ist. Ich habe jetzt einige Messungen durchgeführt:

Chassis-Temperaturen

  • Normalbetrieb: ca. 25 Grad Celsius
  • Kernel übersetzen: ca. 27-30 Grad C.
  • 0.3 Wichtige Tasten

    Wichtige Tasten

    • Der "Affengriff" bei Apple ist: [Apfel] + [ctrl] + [Einschalter]
    • Die "Command Taste" ist [Apfel]"
    • Die "Option Taste" ist [alt]

    1. Mac OS X

    1.1 Installation von Mac OS X

    Ein Akt sondergleichen ... nein Spass beseite ... es scheint ein Problem der neuen 12" Powerbooks zu sein: Diese wollen par tout nicht von der Mac OS X DVD sowie CD booten. Ich habe mehrmals versucht von der mitgelieferten Software-DVD zu booten. Es erschien immer der graue Apfel und das laufende Rädchen, sonst nichts. Nach über einer Stunde warten war immer noch nichts passiert. Danach habe ich es mit einer alten Mac OS X CD vom iBook versucht, ebenfalls erfolglos. Hier startete einfach das bereits installierte System.

    Nach Recherche im Apple Support Forum habe ich dann erfahren, dass das ganze anscheinend ein Problem mit der DVD/CD-RW Kombi im 12" Modell ist. Es gab dazu einen Tip, mit dem sich dann das Problem lösen liess:

    Lösung

    • Software-Restore DVD einlegen
    • Neustart
    • Direkt nach dem Bootsound [c] drücken
    • Wenn das graue Apple-Logo auf dem Bildschirm erscheint, sofort [Apfel] + [v] drücken und halten
    • Wenn der Debug-Modus startet (Textinfo auf dem Schirm) die Tasten loslassen
    • Jetzt sollte die Installation starten

    Während der Installation habe ich die Festplatte in zwei Partitionen aufgeteilt, eine für OS X, die andere für Linux.

    2. Installation von Debian GNU Linux

    2.1 Vorbereitung

    Als erstes habe ich folgende Files in das root-Verzeichnis von OS X kopiert:

    Zur Installation benötige Dateien

    1. images/root.bin
    2. yaboot
    3. yaboot.conf
    4. linux.bin

    Die ersten drei Files stammen von http://http.us.debian.org/debian/dists/woody/main/disks-powerpc/current/new-powermac/, die vierte ist der Kernel von Orion Buckminster Montoya den ich in linux.bin umgenannt habe. Man muss diesen Kernel verwenden, da der Debian Kernel noch kein ATA 100 unterstützt. "In diesem ATA Chipsatz sind die UniNorth Bridge und der KeyLarge IS ASIC auf einem Chip zusammen. Es ist CONFIG_BLK_DEV_IDE_PMAC in den Kernel Optionen".

    Sollte das Kopieren nicht funktionieren, muss noch der root-account unter OS X aktiviert werden (im Terminal sudo passwd root eingeben).

    Nach dem Neustart muss dann sofort [Apfel] + [alt] + [o] + [f] gedrückt werden um ins Open Firmware BIOS zu gelangen. Nun wird mit

    Installation booten (Dies am Open Firmware Prompt eingeben.)
    > boot hd:X,yaboot

    der Installer gebootet. Hier bitte das X mit der entsprechenden Partition von OS X ersetzen, bei mir war es 9. Sollte 9 nicht eure OS X Partition sein, schaut euch mal den mount output im OS X Terminal an. Danach startet der Debian Installer. Hierzu schreibe ich nichts, da es genug gute Tutorials gibt, die diesen Prozess beschreiben (siehe Anhang). Bitte bei der Partitionierung den NewWorld Bootblock nicht vergessen!

    2.2 Booten des Systems

    Alle die Debian unstable oder testing anstatt von Woody installiert haben, können den folgenden Abschnitt überspringen. Auf diesen boot-floppies ist die benötigte Yaboot Version installiert und das System kann einwandfrei booten.

    Mit dem aktuellen Yaboot von Debian-Woody (1.3.6) wird euer System nicht starten bzw. es wird eine Fehlermeldung während der Installation auftreten. Keine Panik, nach Installation des Base-Systems einfach neu starten und in das Open Firmware BIOS wechseln. Von dort aus dann wieder, wie oben beschrieben, Yaboot booten. Dort kann man dann das installierte System mit dem Kernel auf der OS X Platte starten:

    Installiertes System starten (am Yaboot Prompt)
    boot: hd:X,/linux.bin root=/dev/hdYY ro

    Hier X durch die OS X Partition ersetzen und YY durch die root/boot-Partition des Debian-Systems. Danach sollte Linux starten und man kann die Installation abschliessen. (Vielen Dank an Jonathan Love, der mich auf einen Fehler hier aufmerksam gemacht hat).

    Um das System dauerhaft über yaboot zu starten, muss nun die neuste Version (1.3.10) installiert werden. Diese bekommt man unter http://penguinppc.org/projects/yaboot/. Hinweis: Achtet darauf, dass auch wirklich die neue yaboot-Version genommen wird. Sollte noch die alte Version von Debian installiert sein, wird nämlich meistens diese genommen. Ein ybin -V bzw. apt-get remove yaboot schafft hier Klarheit.

    Hier meine yaboot.conf.

    2.3 Probleme beim Booten

    Sollte der Rechner während dem Einrichten der Partitionen unter Linux abstürzen o.ä. (z.B. Akku leer), kann man sich mit dem DiskUtility auf der Mac OS X CD behelfen. Hiermit die Partitionstabelle neu schreiben und dann nochmal von vorne anfangen :).

    3. Konfiguration

    3.1 Kernel

    Sollte cat /proc/cpuinfo 53MHz als Clock Frequenz angeben

    cpu		: 7455, altivec supported
    clock		: 53MHz
    revision	: 3.3 (pvr 8001 0303)
    bogomips	: 51.90
    machine		: PowerBook6,1
    motherboard	: PowerBook6,1 MacRISC3 Power Macintosh
    detected as	: 271 (Unknown Pangea-based)
    pmac flags	: 00000008
    L2 cache	: 256K unified
    memory		: 384MB
    pmac-generation	: NewWorld
    

    müsst ihr den neusten benh-Kernel (siehe unten) installieren. Weitere Informationen zu dieser "Falschaussage" findet in in den debian-powerpc Archiven. Beim Kernel gibt es eigentlich nur eine Möglichkeit: der Kernel von Benjamin Herrenschmidt. Diesen bekommt man immer frisch via rsync:

    Kernel-Update via rsync
    # mkdir /usr/src/benh_kernel
    # rsync -avz rsync.penguinppc.org::linux-2.4-benh /usr/src/benh_kernel

    Hier meine Kernel-Config

    3.1.1 Netzwerk

    Die Netzwerkkarte von Sun funktioniert einwandfrei, wenn man beim Konfigurieren des Kernels die Option CONFIG_SUNGEM=y aktiviert.
    sungem.c:v0.97 3/20/02 David S. Miller (davem@redhat.com)
    eth0: Sun GEM (PCI) 10/100/1000BaseT Ethernet 00:03:93:cc:b2:a2
    eth0: Found BCM5221 PHY
    

    3.1.2 Sound

    Funktioniert prima. Im Kernel die folgenden Optionen auswählen:

    Kerneloptionen
    CONFIG_SOUND=m
    CONFIG_DMASOUND_PMAC=m
    CONFIG_DMASOUND=m

    und danach noch eine file names sound in /etc/modutils/ mit folgendem Inhalt anlegen:

    /etc/modutils/sound
    alias char-major-14	soundcore
    alias sound-slot-0	dmasound_pmac
    alias char-major-14-3	dmasound_pmac
    alias /dev/dsp		dmasound_pmac
    alias sound-service-0-0	i2c-keywest
    alias char-major-14-0	i2c-keywest
    alias /dev/mixer	i2c-keywest

    3.1.3 Bluetooth

    Ich habe den Bluetooth Support mit einem Mobiltelefon von Sony Ericsson (T68i) getestet und konnte damit problemlos ins Internet gehen.

    3.1.3.1 Kernel-Optionen

    Mit den folgenden Kernel Optionen lässt sich das Telefon ansprechen:

    Bluetooth Kernel Optionen
    CONFIG_BLUEZ=m
    CONFIG_BLUEZ_L2CAP=m
    CONFIG_BLUEZ_RFCOMM=m
    CONFIG_BLUEZ_RFCOMM_TTY=y
    CONFIG_BLUEZ_HCIUSB=m
    CONFIG_BLUEZ_HCIUART=m
    CONFIG_BLUEZ_HCIUART_H4=y
    CONFIG_BLUEZ_HCIVHCI=m

    Zur Laufzeit, sprich zum Arbyten, sollten folgende Module geladen sein:
    hci_usb                 7680   1
    rfcomm                 34696   1
    l2cap                  18612   2
    bluez                  36008   3 [hci_usb rfcomm l2cap]
    

    3.1.3.2 Installation

    Die bluez Userland Programme habe ich nicht als Debian-Pakete installiert, sondern aus den Source übersetzt. Folgende tarballs sind dazu nötig:

    Benötigte Software

  • bluez-libs-2.4.tar.gz
  • bluez-sdp-1.1.tar.gz
  • bluez-utils-2.3.tar.gz
  • Die Pakete sind alle von bluez.sf.net und liessen sich einwandfrei übersetzen und installieren. Danach habe ich im Telefon den Bluetooth Support angeschaltet und es per hcitool gesucht:
    littlejohn!ms:~ $ hcitool scan
    Scanning ...
            00:0A:D9:37:49:9F       Superphone
    
    Nun kann man per rfcomm und einen entsprechenden PPP tool (pppd, wvdial) fein per Bluetooth ins Internet gehen :)

    3.1.4 Internes Modem

    Das interne Modem läuft einwandfrei und liess sich (fast) problemlos installieren. Als erstes habe ich die ppc-Treiber von Linux drivers for Conexant modems heruntergeladen und installiert. Beim Konfigurieren bin ich dann auf ein kleines Problem gestossen. Das hcfusbconfig-Script wollte unbedingt ein awk > 3.1.0 haben. Ich habe mir dann gawk Version 3.1.2 von gnu.org gezogen und installiert. Danach liess sich auch das Modem konfigurieren/installieren.

    Mittels wvdial konnte ich dann eine Verbindung ins Internet herstellen. Allerdings bekam ich am Anfang immer die Meldung NO DIALTONE, nachdem ich den Modem-Init-String verändert hatte ging es dann.

    Veränderter Modem-Init-String
    ATX3

    Hier meine wvdial.conf.

    3.1.5 USB 1.1

    Meine Logitech Maus bzw. ein USB Memory Stick mit dem usb-storage Treiber funktionieren einwandfrei.

    3.1.6 Firewire 400

    Pander hat mir eine E-Mail geschickt, in der er mir von einem gescheiterten Einsatz des Powerbooks mit einer Canon DV MV20 (Digital Video camera) berichtet. Sollte jemand anders Firewire erfolgreich getestet haben, soll er sich bitte bei mir melden.

    3.1.7 Power management

    NEU: Suspend to disk funktioniert jetzt mit Kernel 2.6.9. Den entsprechenden Patch findet man hier. Vor dem suspend sollte man die Firewire bzw. USB Module entladen und natuerlich den resume=partition Kernel Parameter nicht vergessen.

    Mit dem rivafb funktioniert Blacklight control nun auch. Den Patch für den Kernel findet man ebenfalls unter obigem Link.

    Bisher wird Suspend to RAM auf dem 12" Modell noch nicht unterstützt. APM sagt dazu folgendes Sleep mode not supported on this machine und Benjamin Herrenschmidt schrieb auf debian-powerpc folgendes:
    >     sleep support
    No, may take a while before it's supported
    

    Trotzdem bekommt man aber mit einem cat /proc/apm den korrekten Akku-Status.

    3.1.8 CPU

    Die CPU wird tadellos vom Kernel unterstützt. Bei mir fährt die CPU immer mit 533MHz hoch; um auf die volle Taktrate zu kommen, müsst ihr folgendes machen:

    CPU Taktung
    littlejohn!ms:~ $ cat /proc/cpuinfo | grep clock
    clock           : 533MHz
    littlejohn!ms:~ $ echo -n "0%100%100%performance" > /proc/cpufreq
    littlejohn!ms:~ $ cat /proc/cpuinfo | grep clock
    clock           : 867MHz

    Funktioniert natürlich nur, wenn CONFIG_CPU_FREQ im Kernel aktiviert wurde. Mit den folgenden Programmen kann man seine CPU Frequenz dynamisch regeln lassen:

    3.2 DVD/CD-RW Kombi

    Ich hatte jetzt die Möglichkeit das Laufwerk zu testen und es funktioniert mit mplayer ohne Probleme. Bei lassen sich mit mplayer fast alle DVDs abspielen, Berichten zufolge scheint dies auch mit xine einwandfrei möglich sein. Wenigstens funktioniert der xv output unter X *g*

    Auch der Brenner funktioniert mit 24x richtig schön :). Im Kernel SCSI-Emu aktivieren und einen entsprechenden Eintrag in der yaboot.conf machen. Mit dem 2.6er Kernel ist keine SCSI-Emu mehr zum Brennen notwendig. Bei mir sieht die cdrecord -scanbus Ausgabe wie folgt aus:
    Cdrecord 1.10 (powerpc-unknown-linux-gnu) Copyright (C) 1995-2001 Jörg Schilling
    Using libscg version 'schily-0.5'
    scsibus0:
    	0,0,0	  0) 'MATSHITA' 'CD-RW  CW-8122  ' 'BA1D' Removable CD-ROM
    	0,1,0	  1) *
    	0,2,0	  2) *
    	0,3,0	  3) *
    	0,4,0	  4) *
    	0,5,0	  5) *
    	0,6,0	  6) *
    	0,7,0	  7) *
    

    3.3 Tastatur

    Als Keyboardmap habe ich mac-usb-de-latin1 genommen. Zusätzlich habe ich noch den pbbuttonsd installiert. Mit diesem netten daemon kann man die "Sondertasten" (eject, mute, volume, ...) des Powerbooks benutzen. Herunterladen, compilen, installieren und in /usr/local/etc/pbbuttonsd.conf konfigurieren. Zusätzlich habe ich mir noch ein kleines Init-Script geschrieben, was den daemon beim Starten lädt.

    3.4 Trackpad

    Mit folgender /etc/gpm.conf rennt die Maus unter der Konsole einwandfrei:

    /etc/gpm.conf
    device=/dev/input/mice
    responsiveness=
    repeat_type=
    type=ps2
    append=""
    sample_rate=

    Die zweite und dritte Maustaste habe ich auf F11 und F12 gemappt. Wenn ihr auf der Konsole showkey eingebt und dann eine Taste drückt, bekommt ihr den keycode für diese Taste. Hier meine /etc/sysctl.conf:

    /etc/sysctl.conf
    dev/mac_hid/mouse_button_emulation = 1
    dev/mac_hid/mouse_button2_keycode = 87
    dev/mac_hid/mouse_button3_keycode = 88

    Hierzu muss im Kernel CONFIG_MAC_EMUMOUSEBTN aktiviert sein.

    3.5 TV Adapter

    Bisher hatte ich keinen Erfolg bei dem Versuch den Adapter unter Linux zum laufen zu bekommen.

    3.6 VGA-Monitor Adapter

    Unter OS X funktioniert der Adapter einwandfrei (wenn wunderts :), unter Linux bisher leider nicht.

    3.7 Airport Extreme

    UPDATE: Mit dem Treiber von http://bcm43xx.berlios.de und einem Kernel > 2.6.15 soll die Karte funktionieren.


    Gerüchten zufolge ist der Chip auf der Airport Extreme ein Broadcom chip. Es existieren zwar Linux Treiber für diesen Chip, aber Broadcom weigert sich diesen Treiber als auch Informationen wie man selbst einen schreibt herauszugeben. Es gibt jetzt eine Online petition, wo ihr euch eintragen könnt.

    Funktioniert leider auch nicht. Ich konnte zwar das hermes-Modul laden und kern.log gab mir den folgenden output:

    Mar 26 21:45:50 kernel: hermes.c: 5 Apr 2002 David Gibson 
    Mar 26 21:47:52 kernel: orinoco.c 0.11b (David Gibson  and others)
    Mar 26 21:47:52 kernel: airport.c 0.11b (Benjamin Herrenschmidt )
    Mar 26 21:47:52 kernel: orinoco.c 0.11b (David Gibson  and others)
    Mar 26 21:47:52 kernel: airport.c 0.11b (Benjamin Herrenschmidt )
    
    Das airport Modul scheiterte mit folgender Meldung:

    /lib/modules/2.4.20-ben9/kernel/drivers/net/wireless/airport.o: init_module: No such device
    Hint: insmod errors can be caused by incorrect module parameters, including invalid IO or IRQ parameters
    
    Danach habe ich ein alias (eth1) für die Karte erzeugt, aber ifconfig eth1 zeigte mir das folgende an (wie sollte es auch anders sein):
    eth1: error fetching interface information: Device not found
    

    4.0 Xfree 4.3.0 mit einer Nvidia GeForce4 420 Go

    Update: Solltet ihr ein aktuelles Testing/Unstable benutzen, braucht ihr euch kein X neu compilen, die Pakete laufen einwandfrei. Dies trifft auch auf die GeForce FX Go5200 in den neuen 1,33 GHz Modellen zu.

    Julian Scheel hat eine Online Petition für Nvidia Linux-Treiber für PowerPC gestartet. Unterzeichnen könnt ihr hier.

    Hinweis: Mir wurde von Schwierigkeiten mit der CVS-Version von Xfree86 berichtet. Sollte jemand Probleme beim Übersetzen haben, sollte er auf die stable 4.3.x Version zurückgreifen. Diese funktioniert nach meiner Erfahrung und div. Berichten einwandfrei.

    4.1 Installation

    Funktioniert und man kann X auch benutzen (sofern man einen ben kernel > ben10 hat (s.u.)). Step-by-Step Anleitung, wie ich es gemacht habe (sid/unstable Benutzer können die ersten drei Punkte überspringen (s.u.)):

    Step-by-Step Anleitung für X11

    • Xfree 4.3.0 von ftp://ftp.xfree86.org runtergeladen
    • das Install-HOWTO lesen und die Sourcen übersetzt
    • Wichtig: Der nv Treiber muss auch übersetzt werden. Bei mir ist dieser nämlich nicht automatisch übersetzt worden, ich musste noch nv in der entsprechenden Makefile nachtragen.
    • Die fertigen binaries installieren
    • X konfigurieren oder meine XF86Config (s.u.) benutzen
    • Sicherheitshalber von einer anderen Box via SSH einloggen
    • X starten und auf den output von /var/log/XFree86.0.log achten
    • Wenn X einwandfrei startet, OK. Bei mir trat folgender Fehler auf: Could not load default font fixed. Nachdem ich dann das xfonts-base Paket via apt nachinstalliert habe, ging es

    Wenn ihr sid benutzt, müsst ihr X nicht aus Sourcen übersetzen. Daniel Stone hat deb-Pakete für i386 sowie ppc in seinem Archiv. Mit apt-get install x-window-system werden die Pakete installiert. Update: Mit der neusten Version (ben10) des ben-Kernels ist es möglich zur Console zurückzukehren. Allerdings tritt dann ein neues Problem auf, die Console ist nach dem Booten auf 80x30 Zeichen in der Mitte des Bildschirmes zentriert und wird dadurch leider fast unbrauchbar. Orion Buckminster war der erste, der auf debian-powerpc dieses Problem bemerkt hat.

    Hier meine XF86Config und der output von XFree86.0.log. Hinweis: In meiner Config ist per default eine Farbtiefe von 16Bit angegeben, es funktioniert aber auch mit 24Bit.

    4.2 Konfiguration

    4.2.1 Tastatur

    Um das Tastaturlayout zu bekommen, was mir gefällt, musste ich etwas arbeiten :) Cristophe hat zu dem ganzen Tastatur-Kram unter X viel hilfreiches geschrieben (siehe Anhang), deswegen beschränke ich mich hier auf das nötigste.

    In meiner .Xmodmap habe ich mir [ALT/GR] auf [Apple] gelegt und zusätzlich einige spezielle "deutsche" Tasten hinzugefügt.

    Anhang

    A. Credits

    Credits

    • Mein Dank geht an Jonathan Love der mir mit Tipps, besonders zu unstable/testing, hilfreich zur Seite stand.
    • Pander hat mir vom erfolgreichen Test mit 24Bit Farbtiefe berichtet und die Liste der Programme für die CPU Frequenz-Kontrolle geschickt.
    • Johannes Becker hat mich auf einen falschen Link sowie auf eine Unklarheit bezüglich der zwei Bootprompts hingewiesen.
    • Sven Herzing schickte mir den Link zu Software Suspend Seite.
    • Djoumé SALVETTI maintained die französische Übersetzung und hat mir schon unzählige Tips und Ergänzungen geschickt.
    • Javier Carranza maintained die spanische Übersetzung.
    • Pascal Suter berichtete mir über einen Absturz bei der Partitionierung und wie man danach die Partitionstabelle neu schreiben kann ohne irgendwie OF zu benutzen.

    B. Informationen

    Informationen

    C. Links

    Diskussionen/Postings auf debian-powerpc:

    debian-powerpc

    Interessante Websiten:

    Websites

    D. Disclaimer

    Das ganze Dokument steht unter der GNU GPL, d.h. ihr dürft es frei verwenden, kopieren oder sonstetwas. Für die Inhalte der Links bin ich nicht verantwortlich, wer einem Link von hier aus folgt ist selber schuld.

    WICHTIG: Für jegliche Schäden, sei es Software- oder Hardwareseitig oder in sonst irgendeiner Form, die eventuell durch dieses HOWTO entstehen können oder enstanden sind, bin ich in keinster Weise verantwortlich. Benutzung dieses HOWTOS erfolgt auf eigene Gefahr!

    E. Copyright


    Copyleft (l) 2002-05 by Matthias Schmidt.