Kernel 2.6.26.3 auf dem Akoya E1210 und MSI Wind

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:

  • 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.