In den letzten Wochen ging ich zweimal auf den Kernel 2.6.26 und dessen Einsatz auf dem Akoya Mini respektive MSI Wind ein. Mittlerweile habe ich mit einem Vanilla-Kernel auf Ubuntu 8.04.1 komplette Hardwareunterstützng erreicht. Die Hinweise zur Treiberinstallation etc. beziehen sich aber auch auf die Kernel neuerer Distributionen, die 2.6.26 serienmäßig mitbringen beziehungsweise können auf anderen Distributionen eingesetzt werden, da der Kernel ja selbst kompiliert wird. Unter Ubuntu und anderen debianesken Systemen muß libncurses-dev und build-essential installiert sein.
-
Kernel und Basiskonfiguration
Nach dem Herunterladen des Kernels von www.eu.kernel.org wird dieser in /usr/src entpackt. Da die Konfiguration recht aufwendig ist, sollte man einen alten Kernel als Vorlage verwenden, dazu kopiert man die Datei /boot/config-2.6.24-xyz nach .config im Kernelverzeichnis, alternativ können Sie die Konfiguration herunterladen, mit der ich 2.6.26.3 gebaut habe:
cd /usr/src/linux-2.6.26.x wget -O .config http://eeepc.mattiasschlenker.de/kernel.config-akoya-e1210-2.6.26.3-mfs-001
-
Neue Konfiguration erstellen
Da jede neue Kernelversion zusätzliche Optionen bereithält, muß die alte Konfiguration in eine neue überführt werden. Fragen sollten Sie entweder mit dem vorgeschlagenen Wert beantworten oder als Modul konfigurieren (wenn die Option “m” erhältlich ist):
cd /usr/src/linux-2.6.26.x make oldconfig
Anschließend können Sie (nicht zwingend erforderlich) die Konfiguration auf Ihre speziellen Wünsche anpassen. Falls Sie einen Ubuntu-Kernel als Basis genommen haben, müssen Sie beispielsweise “ALSA” (Advanced Linux Sound Architecture) explizit aktivieren (in meiner Konfiguration bereits geschehen):
cd /usr/src/linux-2.6.26.x make menuconfig
-
Bauen des Kernels und Installation
Den Build startet ein simples
make
Unter Ubuntu und Konsorten erstellen Sie anschließend mit
make deb-pkg dpkg -i /usr/src/linux-2.6.26.3-mfs-001_2.6.26.3-mfs-001-x_i386.deb
ein Paket und installieren dieses. Bei den meisten anderen Distributionen sollte ein make install genügen.
-
Treiber für WLAN und Ethernet herunterladen
Da nach dem Reboot weder Ethernet noch WLAN funktionieren, müssen Sie die Treiber jetzt herunterladen (am besten nach /usr/src. Ich selbst habe verwendet:
- Realtek 8101E-Treiber 1.009.00 von der Realtek-Supportseite
- Ralink RT2860PCI 1.7.0.0 von der Ralink-Support-Seite
- Meine config.mk für den Ralink-Treiber 1.7.0.0
-
Quick and Dirty zum ersten Reboot
Nun wird eine (suboptimale weil riesengroße Ramdisk gebaut):
mkinitramfs -o /boot/initrd.img-2.6.26.3-mfs-001 2.6.26.3-mfs-001
Damit diese einfach gestartet werden kann, erstellen Sie mit update-grub die Bootloader-Konfiguration neu. Auf Distributionen, die diesen Befehl nicht enthalten, passen Sie die Datei /boot/grub/menu.lst von Hand an. Entfernen Sie zumindest für den ersten Start auch die Optionen quiet splash in der Append-Zeile.
-
Ethernet-Treiber nachrüsten
Weil bei mir mit 2.6.26.3 die Realtek-Gigabit-Karte nicht funktionierte (Problem in 2.6.27-rc4 behoben), entschied ich mich für den Herstellertreiber. Der wird nach dem Entpacken klassisch mit
make make install depmod
gebaut und installiert.
-
Erstellung der finalen Initrd
Da Ubuntus Initrd großzügig viele Module integriert (50MB sind keine Seltenheit) sollte auf manuelle Modulzusammenstellung umgestellt werden. Dazu wird zunächst in der Datei /etc/initramfs-tools/initramfs.conf die Variable MODULES=list gesetzt. Anschließend erstellen Sie die Modulliste /etc/initramfs-tools/modules:
ext3 jbd mbcache sg sd_mod usb_storage libusual ahci libata scsi_mod ehci_hcd usbcore r8101
Hier habe ich den Realtek-Treiber r8101 gleich integriert, der beim Kernel enthaltene kommt in der Datei /etc/modprobe.d/blacklist auf die schwarze Liste:
blacklist r8169
Die Erstellung der Initrd erfolgt wieder wie oben mit mkinitramfs -o /boot/initrd.img-2.6.26.3-mfs-001 2.6.26.3-mfs-001. Nun können Sie rebooten oder auch nicht.
-
WLAN-Treiber nachrüsten
Noch fehlt der WLAN-Treiber. Nach Entpacken und Wechsel ins Arbeitsverzeichnis kopieren Sie die Datei rt2860_config.mk_akoya_e1210_20080728 nach os/linux/config.mk. Vor dem Bauen muss noch die Datei os/linux/rt_main_dev.c angepasst werden. Zeile 804 (bei Version 1.7.0.0) muss aussehen wie folgt:
device = dev_get_by_name(dev_net(dev), slot_name);
Erst jetzt gelingt das Bauen und die Installation:
make make install
Bei Treiber 1.8.0.0 ist keine Anpassung mehr nötig, dieser kompiliert ohne Probleme mit Kernel 2.6.26 und 2.6.27!
Nach dem finalen Reboot funktionieren Soundkarte, Mikrofon, Webcam (neue UVC-Treiber sind in 2.6.26), LAN und WLAN. Beim MSI Wind muss dies nicht unbedingt der Fall sein, da meines Wissens einige Geräte mit dem Atheros-WLAN-Chipsatz 5007 ausgeliefert wurden (wie bei EeePC 701 und Konsorten). Ob hier der gepatchte Madwifi-Treiber mit dem Kernel 2.6.26 harmoniert, darf bezweifelt werden, allerdings bringen neuere Kernel (2.6.26 und 2.6.27) neuere Atheros-Treiber mit. Interessant wird 2.6.28 auch für Nutzer von Ralink-Karten, Unterstützung für 2860 könnte dort endlich vorhanden sein.