dg3awe
|
||
Atheros WLAN-Treiber in den Kernel patchenVorwortAnlass dieser Beschreibung war der nicht ganz einfache Vorgang, den madwifi-Treiber für eine Atheros-WLAN-Karte in den Linuxkernel fest zu integrieren. Gut ein Jahr nach der Anschaffung meines IBM-Thinkpad R51 Notbocks wurde es endlich mal Zeit, auch unter Linux das WLAN zu aktivieren. Da ich von Haus aus auf eine InitialRamdisk (initrd) verzichte und alle Treiber für mein Thinkpad direkt in den Kernel einbaue sollte dies auch mit dem madwifi-Treiber geschehen. Für alle die, die nach einer Methode suchen die WLAN-Karte bzw. den madwifi-Treiber als Modul laufen zu lassen, möchte ich an dieser Stelle auf die zahlreichen Anleitungen im Netz verweisen. Erste Anlaufstelle dazu ist die madwifi-Seite, aber auch google liefert viele brauchbare Informationen. Kernel und Madwifi-Treiber besorgenGrundsätzlich sollte madwifi mit vielen Kernelversionen zurecht kommen, wenn man aber schon mal dabei ist den Kernel anzufassen, dann kann man auch gleich den Aktuellen nehmen. Also geht es zuerst auf die Seite von kernel.org. Dort ist man mit dem aktuell stabilen "vanilla"-Kernel bestens versorgt. Viele Linux-Distributoren halten aber auch aktuelle Kernelversionen in ihren Paketen bereit. Ich verwende derzeit die Kernelversion 2.6.16.11, von kernel.org, also einen original unbehandelten und somit auch "vanilla" genannten Kernel. Von der Konsole aus bekommt man am besten den Kernel mit "wget". In meinem Falle also: cd /usr/src wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.16.11.tar.bz2 bunzip2 linux-2.6.16.11.tar.bz2 tar ?xf linux-2.6.16.11.tar Den Kernel entpackt man üblicherweise in "/usr/src/". Individualisten können gerne auch ein anderes Verzeichnis nehmen. In meinem Falle ist ein neues Verzeichnis namens "linux-2.6.16.11" unter "/usr/src/" entstanden. Jetzt kommt madwifi ins Spiel. Unter madwifi.org gibt es verschiedene Möglichkeiten den Treiber runterzuladen. Entweder nutzt man die bereitgestellten Pakete für gängige Distributionen oder man holt sich die Daten direkt aus svn. Der einfachste Weg war in meinem Falle jedoch der Download der gz-gepackten Treiberdateien unter snapshots.madwifi.org. Mit dem "madwifi-ng-current.tar.gz" sollte man immer das aktuelle Paket erreichen. Nach der Abarbeitung der folgenden Befehle entsteht ein neues madwifi-Verzeichnis im Homeverzeichnis des aktuellen Benutzers. cd ~ wget http://snapshots.madwifi.org/madwifi-ng-current.tar.gz tar ?xzf madwifi-ng-current.tar.gz Atheros Treiber (madwifi) in Kernel patchenFür das Patchen existiert im madwifi-Verzeichnis ein Skript. Dieses erfordert jedoch die ".config"-Datei und weitere Informationen aus den Kernelquellen, welche unter Umständen noch nicht existierten. Dieses Problem löst man am einfachsten mit einem kurzen Aufruf von "make menuconfig". Den erscheinenden Dialog kann man mit "exit" gleich wieder verlassen. Bei der Frage ob die Konfiguration abgespeichert werden soll muss mit "yes" bestätigt werden. Alternativ zu "make menuconfig" kann man sich mit "make defconfig" mal auf die Schnelle eine Standard .config erstellen. Der Kernel ist jetzt fertig zum patchen. Im madwifi-Verzeichniss existiert ein Unterverzeichnis namens "patches". Dort findet man wiederum zwei Unterverzeichnisse "2.4" und "2.6" dies entspricht den Kernelversionen. Da ich den Kernel 2.6 verwende geht es für mich unter "2.6" weiter :-). cd /home/nico/madwifi-ng/patches/2.6/ export KERNELPATH=/usr/src/linux-2.6.16.11 ./install.sh /usr/src/linux-2.6.16.11 Die KERNELPATH-Variable muss gesetzt werden, da sonst das Skript nicht erfolgreich ausgeführt wird. Der Parameter hinter dem Skript-Aufruf sollte das nach Aussage der README eigentlich unnötig machen, er tut es aber nicht. Nach erfolgreicher Ausführung (dies verrät ein Blick auf die Konsole) sind "fast" alle erforderlichen Daten in die Kernelquellen kopiert wurden. Achtung: siehe Header-Dateien fehlen. Kernel konfigurierenWenn man jetzt den Kernel mit z.B. "make menuconfig" nach seinen Wünschen gestaltet, wird man unter "Device Drivers" ... "Network device support" den Menüpunkt "Atheros 802.11(a/b/g)" bzw. "Atheros PCI/Cardbus cards" entdecken. Sollte der Menüpunkt nicht aktivierbar sein, dann sind noch ein paar Abhängigkeiten zu erfüllen. Die Abhängigkeiten kann man aus der "Kconfig" des Atheros-Treibers entnehmen. In meinem Falle sind das folgende:
Header-Dateien fehlenDas Kompilieren bricht an einer Stelle die mit den WLAN-Treibern zu tun hat ab. Grund dafür sind fehlende oder falsch inkludierte Headerdateien. Komischerweise funktioniert es, wenn man den Treiber als Modul kompilieren lässt, aber das ist ja nicht das Ziel gewesen. Um das Problem auf die Schnelle zu lösen habe ich einfach die fehlenden .h-Dateien an die richtige stelle kopiert bzw. dupliziert. cd /usr/src/linux-2.6.16.11 cp drivers/net/wireless/hal/ah.h drivers/net/wireless/ath cp drivers/net/wireless/hal/linux/ah_osdep.h drivers/net/wireless/ath Man hätte das Problem auch durch eine Anpassung des patch-Skriptes lösen können, aber dieser Weg hier erschien mir am schnellsten. So, ab jetzt sollte make problemlos durchlaufen und der WLAN-madwifi-Treiber endlich im Kernel eingebaut sein. Ein Blick auf "dmesg" gibt nach dem Hochfahren des Kernels die Gewissheit. |
||