ArchLinux auf einem MacBook
Einleitung
Wie wir alle Wissen vermag ArchLinux auf älteren Rechnern schneller, flexibler und stabiler zu laufen. Auf einem neuen MacBook aus dem Frühjahr 2008 kann man schon garnicht mehr von "laufen" sondern eher von "fliegen" sprechen, wobei das auch nicht der Wahrheit entspricht, denn nur das OS mit dem Fenster fliegt, weshalb es auch immer abstürzt.. Nun hatte ich vor, ein kleines Howto zu schreiben, wie man ArchLinux auf einem MacBook installiert. Ich habe bei mir nur Arch64 darauf eingesezt, da man den daraus bildenden Geschwindigkeitsvorteil enorm spürt. (Vergleich zwischen den UDEV Initialisierungswerten [die beim Booten]: Arch32, Vanilla Kernel: 1100ms; Arch64, Vanilla Kernel: 640ms)
ArchLinux 32-Bit
Grundinstallation
ArchLinux wird auf einem MacBook wie gewöhnlich installiert. Worauf man achten sollte, wenn man Mac OS noch auf der ersten Partition hat, ist, dass cfdisk nicht mit GPT Partitionen arbeiten kann (Offiziell). Es kommt eine Meldung, die man mit yes und Enter umgehen kann, ich hatte bisher (3 Installationen) noch keinen Datenverlust, jedoch würde ich zu einer Datensicherung der Mac OS Partition raten. Wichtig ist, dass man Mac OS X vorher schon auf einer kleinen Partition installiert. Ich habe 50% Mac OS X und 50% Linux (75GB Mac OS, 75GB Linux). Meiner Meinung nach ist Mac OS nach einer Erfolgreichen ArchLinux Installation vollkommen unnötig. Ich habe aber unter Mac OS rEFIt installiert, um eine angenehme Betriebssystemauswahl beim Booten zu haben, was man natürlich auch unter Linux kann. Wenn cfdisk geladen ist, erstellen wir im freien Plattenplatz eine Partition und formatieren diese mit ext3 oder einem anderen von rEFIt unterstützten Filesystem und verwenden diese Partition (meist /dev/sda3) als ROOT (/). Nun ist die Installation des Grundsystems wie jede andere von ArchLinux auch. Ich empfehle als Bootloader GRUB.
Vanilla Kernel (Achtung, nicht getestet!)
Wichtig ist, dass man bevor man die GUI oder andere Programme installiert sich zuerst den Kernel selber "bäckt" bzw. Kompiliert, da dann in Gnome der Standby/Ruhezustand auf anhieb Funktioniert. Das geht folgendermaßen ab:
Man installiert sich die Pakete make und gcc, falls nicht schon installiert.
pacman -Sy make gcc
Man lädt sich die aktuellen Kernel Sources von kernel.org und entpackt sie nach /usr/src:
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.3.tar.bz2 tar -xvf linux-2.6.26.3.tar.bz2 ln -s linux-2.6.26.3 /usr/src/linux cd linux/
Jetzt könnten wir zur einen Seite unseren Kernel manuell konfigurieren, oder Ihr nehmt meine .config. Die ladet ihr einfach nach /usr/src/linux. Am besten mit wget:
wget http://nathanhi.pytalhost.net/_.config -O .config
Das -O .config überschreibt eine schon vorhandene .config. Nun müssen wir den Kernel kompilieren und die Module bauen lassen.
make && make modules_install && cp arch/x86_64/boot/bzImage /boot/linux
Nun machen wir uns schnell einen Kaffee, denn in exakt 6 Minuten sollte der Kernel fertig sein. Anschliessend wird der Kernel nach /boot/linux kopiert. Nun gehen wir in das /boot/grub Verzeichnis und ersetzten die darin enthaltene menu.lst mit meiner:
cd /boot/grub wget http://nathanhi.pytalhost.net/menu.lst -O menu.lst
Jetzt wird standardmäßig der selber gebackene Kernel gebootet. Nun wird es Zeit, die /etc/rc.conf zu bearbeiten. Eure MODULES-Line sollte wie folgt aussehen:
MODULES=(usbcore ehci_hcd ohci_hcd uhci_hcd usblp usb-storage usbhid appletouch snd-hwdep snd-hda-intel uvcvideo isight_firmware ndiswrapper)
Jetzt noch schnell einen Neustart machen und hoffen, dass alles geht, einige Module konnten bestimmt nicht geladen werden, aber das lösen wir in den späteren "Kapiteln".
Swapfile
Da wir keine Swap-Partition erstellen konnten, tun wir das jetzt, jedoch in eine Datei, vergleichbar mit einer Auslagerungsdatei unter dem OS, das fliegen kann.
dd if=/dev/zero of=/swapfile bs=1M count=512 (erstellt ein 512MB großes Swapfile) mkswap /swapfile swapon /swapfile
Jetzt müssen wir noch folgende Zeile (an das Ende) in die /etc/fstab hinzufügen:
/swapfile swap swap defaults 0 0
Sound
Um den Sound an einem MacBook ans laufen zu bringen vermag es ein wenig Magie, da im MacBook eine Intel HD Audio verbaut ist, und die, wie wir alle wissen von zu vielen Hardwareherstellern vertrieben wird, und jede anders funktioniert. Das Geheimnis lässt sich recht schnell lösen. Zuerst müssen wir alsa-utils installieren, um alsaconf ausführen zu können.
pacman -S alsa-utils
Nun führen wir alsaconf aus und wählen Intel HD Audio aus. Anschliessend fügen wir in die /etc/modprobe.d/sound folgende Zeile am Ende hinzu:
options snd-hda-intel model=mbp3
Da ansonsten der Sound garnicht bis sehr leise hörbar wäre.
iSight
Um iSight, die integrierte Webcam im MacBook ans laufen zu bekommen, bedarf es etwas Geduld und Zeit. Als erstes brauchen wir folgendes Tool aus dem AUR: Die ift-tools. Da die ift-tools einiges an Abhängigkeiten haben, müssen wir ein paar Pakete aus dem AUR installieren:
Info2Man
cd /usr/src wget http://aur.archlinux.org/packages/info2man/info2man.tar.gz tar -xvf info2man.tar.gz cd info2man makepkg pacman -U info2man-1.0-2-*.pkg.tar.gz
ift
cd /usr/src wget http://aur.archlinux.org/packages/ift/ift.tar.gz makepkg pacman -U ift-1.2-2-*.pkg.tar.gz
Nun benötigen wir von der Mac OS Partition folgendes File: /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
Dieses File wird anschliessend nach /usr/lib/firmware kopiert. Wenn /usr/lib/firmware nicht existiert erstellen Sie es bitte mit:
mkdir /usr/lib/firmware Bitte AppleUSBVideoSupport nach /usr/lib/firmware kopieren cd /usr/lib/firmware ift-extract --apple-driver AppleUSBVideoSupport
Das wars auch schon. Bin gerade am abklären mit Apple, ob man die daraus resultierende isight.fw hier gleich zum Download bereitstellen kann.
WLAN
Ich habe WLAN nur durch ndiswrapper ans laufen gebracht. Diesen muss man selber kompilieren.
cd /usr/src wget http://mesh.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.53.tar.gz tar -xvf ndiswrapper-1.53.tar.gz cd ndiswrapper-1.53 make make install wget http://nathanhi.pytalhost.net/bcm4328_.tar.gz tar -xvf bcm4328.tar.gz ndiswrapper -i bcmwl5.inf ndiswrapper -l
Hier sollte so etwas ausgegeben werden:
bcmwl5 : driver installed device (14E4:4328) present
Nun entweder das ndiswrapper Modul neu laden oder neu starten.
Pommed
Pommed wird für die Helligkeitsregelung von der MacBook-Hintergrundbeleuchtung benötigt und auch für eine Fernbedienung, etc.
pacman -S alsa-lib audiofile confuse dbus eject cd /usr/src wget http://aur.archlinux.org/packages/pommed/pommed.tar.gz tar -xvf pommed.tar.gz makepkg pacman -U pommed-1.20-1-*.pkg.tar.gz
Nun wäre pommed installiert und wir müssen es noch Konfigurieren. Ich würde empfehlen, die Konfigurationen zu löschen, und meine zu verwenden:
rm -rfv /etc/pommed.conf* cd /etc/ wget http://nathanhi.pytalhost.net/pommed.conf
Bluetooth
Für Bluetooth-Support müssen wir eine Datei abändern, und folgende Pakete installieren:
pacman -S blueman bluemote bluez-utils bluez-gnome gnome-bluetooth bluez-hcidump nano /etc/conf.d/bluetooth
Nun Suchen wir nach # HID2HCI_ENABLE="false" und entfernen die Raute und ändern false in true, demnach:
HID2HCI_ENABLE="true"
Daemons
Da wir jetzt ein funktionierendes System haben, können wir uns nun an Feinheiten machen. Ich habe als Daemons dbus, fam und hal installiert, da diese externe USB Laufwerke, oä. automatisch mounten. Nützlich ist auch Networkmanager, da man mit diesem Komfortabel eine WLAN verbindung aufbauen kann, etc. wpa_supplicant benötigen wir für WPA/WPA2-Verbindungen
pacman -S fam dbus hal networkmanager wpa_supplicant
Wenn Sie Gnome einsetzen, empfehle ich Ihnen nm-applet
pacman -S gnome-network-manager
Bei KDE kann ich knetworkmanager empfehlen:
pacman -S knetworkmanager
So sollte Ihre DAEMONS-Line in der /etc/rc.conf aussehen:
DAEMONS=(fam dbus hal networkmanager bluetooth alsa pommed)
Nun können wir auch den ArchLinux-Kernel deinstallieren, da dieser ja nur noch unnötig Plattenplatz benötigt.
pacman -R kernel26
Nach der Installation der X.org
Falls Sie die Sonderfunktionen des Touchpads nutzen wollen (Multitouch, etc), dann können Sie als Vorlage meine xorg.conf verwenden, oder Sie verändern folgendes und installieren sie nur das synaptics Paket.
pacman -S synaptics
Das hat den Grund, da andere Programme, wie z.B. gSynaptics das Touchpad garnicht funktionieren lassen. Ich denke, dass dies an einem Bug derzeit liegt, da dieses Programm mit einem Speicherzugriffsfehler endet und dann das Touchpad "lahm" legt.
Section "ServerLayout" Identifier "Xorg Configured" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "MacBook Touchpad" "CorePointer" EndSection
Suchen Sie nun die Section, wo
Option "Device" "/dev/psaux"
steht. Diese Section entfernen Sie gänzlich und ersetzen Sie durch folgende:
Section "InputDevice" Identifier "MacBook Touchpad" Driver "synaptics" Option "AccelFactor" "0.015" Option "BottomEdge" "310" Option "Device" "/dev/psaux" Option "FingerHigh" "30" Option "FingerLow" "20" Option "HorizScrollDelta" "0" Option "LeftEdge" "100" Option "MaxDoubleTapTime" "180" Option "MaxSpeed" "0.88" Option "MaxTapMove" "220" Option "MaxTapTime" "150" Option "MinSpeed" "0.79" Option "Protocol" "auto-dev" Option "RightEdge" "1120" Option "SendCoreEvents" "true" Option "SHMConfig" "on" Option "TapButton2" "3" Option "TapButton3" "2" Option "TopEdge" "50" Option "VertScrollDelta" "25" Option "VertTwoFingerScroll" "true" EndSection
Als alternative können Sie auch gänzlich meine verwenden:
http://nathanhi.pytalhost.net/xorg.conf
Ich wünsche Ihnen nun viel Spaß mit Ihrem funktionierendem System. Die Desktop Umgebung etc. müssen Sie nun selbst installieren.
ArchLinux 64-Bit
Grundinstallation
Ich habe Arch64 wie gewöhnlich installiert. Worauf man achten sollte, wenn man Mac OS noch auf der ersten Partition hat, ist, dass cfdisk nicht mit GPT Partitionen arbeiten kann (Offiziell). Es kommt eine Meldung, die man mit yes und Enter umgehen kann, ich hatte bisher (3 Installationen) noch keinen Datenverlust, jedoch würde ich zu einer Datensicherung der Mac OS Partition raten. Wichtig ist, dass man Mac OS X vorher schon auf einer kleinen Partition installiert. Ich habe 50% Mac OS X und 50% Linux (75GB Mac OS, 75GB Linux). Meiner Meinung nach ist Mac OS nach einer Erfolgreichen ArchLinux Installation vollkommen unnötig. Ich habe aber unter Mac OS rEFIt installiert, um eine angenehme Betriebssystemauswahl beim Booten zu haben, was man natürlich auch unter Linux kann. Wenn cfdisk geladen ist, erstellen wir im freien Plattenplatz eine Partition und formatieren diese mit ext3 oder einem anderen von rEFIt unterstützten Filesystem und verwenden diese Partition (meist /dev/sda3) als ROOT (/). Nun ist die Installation des Grundsystems wie jede andere von ArchLinux auch. Ich empfehle als Bootloader GRUB.
Vanilla Kernel
Wichtig ist, dass man bevor man die GUI oder andere Programme installiert sich zuerst den Kernel selber "bäckt" bzw. Kompiliert, da dann in Gnome der Standby/Ruhezustand auf anhieb Funktioniert. Das geht folgendermaßen ab:
Man installiert sich die Pakete make und gcc, falls nicht schon installiert.
pacman -Sy make gcc
Man lädt sich die aktuellen Kernel Sources von kernel.org und entpackt sie nach /usr/src
cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.3.tar.bz2 tar -xvf linux-2.6.26.3.tar.bz2 ln -s linux-2.6.26.3 /usr/src/linux cd linux/
Jetzt könnten wir zur einen Seite unseren Kernel manuell konfigurieren, oder Ihr nehmt meine .config. Die ladet ihr einfach nach /usr/src/linux. Am besten mit wget
wget http://nathanhi.pytalhost.net/.config -O .config
Das -O .config überschreibt eine schon vorhandene .config. Nun müssen wir den Kernel kompilieren und die Module bauen lassen.
make && make modules_install && cp arch/x86_64/boot/bzImage /boot/linux
Nun machen wir uns schnell einen Kaffee, denn in exakt 6 Minuten sollte der Kernel fertig sein. Anschliessend wird der Kernel nach /boot/linux kopiert. Nun gehen wir in das /boot/grub Verzeichnis und ersetzten die darin enthaltene menu.lst mit meiner:
cd /boot/grub wget http://nathanhi.pytalhost.net/menu.lst -O menu.lst
Jetzt wird standardmäßig der selber gebackene Kernel gebootet. Nun wird es Zeit, die /etc/rc.conf zu bearbeiten. Eure MODULES-Line sollte wie folgt aussehen:
MODULES=(usbcore ehci_hcd ohci_hcd uhci_hcd usblp usb-storage usbhid appletouch snd-hwdep snd-hda-intel uvcvideo isight_firmware ndiswrapper)
Jetzt noch schnell einen Neustart machen und hoffen, dass alles geht, einige Module konnten bestimmt nicht geladen werden, aber das lösen wir in den späteren "Kapiteln".
Swapfile
Da wir keine Swap-Partition erstellen konnten, tun wir das jetzt, jedoch in eine Datei, vergleichbar mit einer Auslagerungsdatei unter dem OS, das fliegen kann.
dd if=/dev/zero of=/swapfile bs=1M count=512 (erstellt ein 512MB großes Swapfile) mkswap /swapfile swapon /swapfile
Jetzt müssen wir noch folgende Zeile (an das Ende) in die /etc/fstab hinzufügen:
/swapfile swap swap defaults 0 0
Sound
Um den Sound an einem MacBook ans laufen zu bringen vermag es ein wenig Magie, da im MacBook eine Intel HD Audio verbaut ist, und die, wie wir alle wissen von zu vielen Hardwareherstellern vertrieben wird, und jede anders funktioniert. Das Geheimnis lässt sich recht schnell lösen. Zuerst müssen wir alsa-utils installieren, um alsaconf ausführen zu können.
pacman -S alsa-utils
Nun führen wir alsaconf aus und wählen Intel HD Audio aus. Anschliessend fügen wir in die /etc/modprobe.d/sound folgende Zeile am Ende hinzu:
options snd-hda-intel model=mbp3
Da ansonsten der Sound garnicht bis sehr leise hörbar wäre.
iSight
Um iSight, die integrierte Webcam im MacBook ans laufen zu bekommen, bedarf es etwas Geduld und Zeit. Als erstes brauchen wir folgendes Tool aus dem AUR: Die ift-tools. Da die ift-tools einiges an Abhängigkeiten haben, müssen wir ein paar Pakete aus dem AUR installieren:
Info2Man
cd /usr/src wget http://aur.archlinux.org/packages/info2man/info2man.tar.gz tar -xvf info2man.tar.gz cd info2man makepkg pacman -U info2man-1.0-2-x86_64.pkg.tar.gz
ift
cd /usr/src wget http://aur.archlinux.org/packages/ift/ift.tar.gz makepkg pacman -U ift-1.2-2-x86_64.pkg.tar.gz
Nun benötigen wir von der Mac OS Partition folgendes File: /System/Library/Extensions/IOUSBFamily.kext/Contents/PlugIns/AppleUSBVideoSupport.kext/Contents/MacOS/AppleUSBVideoSupport
Dieses File wird anschliessend nach /usr/lib/firmware kopiert. Wenn /usr/lib/firmware nicht existiert erstellen Sie es bitte mit:
mkdir /usr/lib/firmware Bitte AppleUSBVideoSupport nach /usr/lib/firmware kopieren cd /usr/lib/firmware ift-extract --apple-driver AppleUSBVideoSupport
Das wars auch schon. Bin gerade am abklären mit Apple, ob man die daraus resultierende isight.fw hier gleich zum Download bereitstellen kann.
WLAN
Ich habe WLAN nur durch ndiswrapper ans laufen gebracht. Diesen muss man selber kompilieren.
cd /usr/src wget http://mesh.dl.sourceforge.net/sourceforge/ndiswrapper/ndiswrapper-1.53.tar.gz tar -xvf ndiswrapper-1.53.tar.gz cd ndiswrapper-1.53 make make install wget http://nathanhi.pytalhost.net/bcm4328.tar.gz tar -xvf bcm4328.tar.gz ndiswrapper -i bcmwl5.inf ndiswrapper -l
Hier sollte so etwas ausgegeben werden:
bcmwl5 : driver installed device (14E4:4328) present
Nun entweder das ndiswrapper Modul neu laden oder neu starten.
Pommed
Pommed wird für die Helligkeitsregelung von der MacBook-Hintergrundbeleuchtung benötigt und auch für eine Fernbedienung, etc.
pacman -S alsa-lib audiofile confuse dbus eject cd /usr/src wget http://aur.archlinux.org/packages/pommed/pommed.tar.gz tar -xvf pommed.tar.gz makepkg pacman -U pommed-1.20-1-x86_64.pkg.tar.gz
Nun wäre pommed installiert und wir müssen es noch Konfigurieren. Ich würde empfehlen, die Konfigurationen zu löschen, und meine zu verwenden:
rm -rfv /etc/pommed.conf* cd /etc/ wget http://nathanhi.pytalhost.net/pommed.conf
Bluetooth
Für Bluetooth-Support müssen wir eine Datei abändern, und folgende Pakete installieren:
pacman -S blueman bluemote bluez-utils bluez-gnome gnome-bluetooth bluez-hcidump nano /etc/conf.d/bluetooth
Nun Suchen wir nach # HID2HCI_ENABLE="false" und entfernen die Raute und ändern false in true, demnach:
HID2HCI_ENABLE="true"
Daemons
Da wir jetzt ein funktionierendes System haben, können wir uns nun an Feinheiten machen. Ich habe als Daemons dbus, fam und hal installiert, da diese externe USB Laufwerke, oä. automatisch mounten. Nützlich ist auch Networkmanager, da man mit diesem Komfortabel eine WLAN verbindung aufbauen kann, etc. wpa_supplicant benötigen wir für WPA/WPA2-Verbindungen
pacman -S fam dbus hal networkmanager wpa_supplicant
Wenn Sie Gnome einsetzen, empfehle ich Ihnen nm-applet
pacman -S gnome-network-manager
Bei KDE kann ich knetworkmanager empfehlen:
pacman -S knetworkmanager
So sollte Ihre DAEMONS-Line in der /etc/rc.conf aussehen:
DAEMONS=(fam dbus hal networkmanager bluetooth alsa pommed)
Nun können wir auch den ArchLinux-Kernel deinstallieren, da dieser ja nur noch unnötig Plattenplatz benötigt.
pacman -R kernel26
Nach der Installation der X.org
Falls Sie die Sonderfunktionen des Touchpads nutzen wollen (Multitouch, etc), dann können Sie als Vorlage meine xorg.conf verwenden, oder Sie verändern folgendes und installieren sie nur das synaptics Paket.
pacman -S synaptics
Das hat den Grund, da andere Programme, wie z.B. gSynaptics das Touchpad garnicht funktionieren lassen. Ich denke, dass dies an einem Bug derzeit liegt, da dieses Programm mit einem Speicherzugriffsfehler endet und dann das Touchpad "lahm" legt.
Section "ServerLayout" Identifier "Xorg Configured" Screen 0 "Screen0" 0 0 InputDevice "Keyboard0" "CoreKeyboard" InputDevice "MacBook Touchpad" "CorePointer" EndSection
Suchen Sie nun die Section, wo
Option "Device" "/dev/psaux"
steht. Diese Section entfernen Sie gänzlich und ersetzen Sie durch folgende:
Section "InputDevice" Identifier "MacBook Touchpad" Driver "synaptics" Option "AccelFactor" "0.015" Option "BottomEdge" "310" Option "Device" "/dev/psaux" Option "FingerHigh" "30" Option "FingerLow" "20" Option "HorizScrollDelta" "0" Option "LeftEdge" "100" Option "MaxDoubleTapTime" "180" Option "MaxSpeed" "0.88" Option "MaxTapMove" "220" Option "MaxTapTime" "150" Option "MinSpeed" "0.79" Option "Protocol" "auto-dev" Option "RightEdge" "1120" Option "SendCoreEvents" "true" Option "SHMConfig" "on" Option "TapButton2" "3" Option "TapButton3" "2" Option "TopEdge" "50" Option "VertScrollDelta" "25" Option "VertTwoFingerScroll" "true" EndSection
Als alternative können Sie auch gänzlich meine verwenden:
http://nathanhi.pytalhost.net/xorg.conf
Ich wünsche Ihnen nun viel Spaß mit Ihrem funktionierendem System. Die Desktop Umgebung etc. müssen Sie nun selbst installieren.