PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neulingsfragen zum Kernelpatchen



Starjumper
14.04.06, 06:48
Hallo allerseits!

Ich habe folgendes Problem unter Linux (Debian Sarge, frisch von der CD 1, Kernel 2.4er Reihe):

Ich besitze ein Asus A2D Laptop mit einer WLAN Karte die nicht nur per Ndiswrapper angesprochen werden muss, sondern auch einen Softswitch zum ein- und ausschalten der WLAN Karte besitzt. Es ist keinerlei Hardwareschalter vorhanden.

Unter:

http://rfswitch.sourceforge.net/?page=laptop_matrix

Habe ich folgenden Tip für mein Asus Laptop gelesen:

Use "ASUS/Medion Laptop Extras" (CONFIG_ACPI_ASUS) in the kernel:
echo 1 > /proc/acpi/asus/wled

Alles klar, alles so schön.

Nur wie mache ich das als Anfänger? Also guckste mal hier im Forum um und findest folgendes:

Kernel (2.6) Konfigurations-Howto
http://www.linuxforen.de/forums/showthread.php?t=161878

und

Kernelpatche gesammelt für Laptops
http://www.linuxforen.de/forums/showthread.php?t=82197

Nun jetzt stehe ich vor dem Dilemma mich ziemlich überfordert zu fühlen. Einen neuen Kernel mal eben zusammenbasteln trau ich mir noch nicht zu und irgendwelche fremde Kernel einbauen scheint mir auch nicht geheuer zu sein.

Gibt es irgendeine Möglichkeit "ASUS/Medion Laptop Extras (CONFIG_ACPI_ASUS)" möglichst einfach ,nachträglich, in den schon jetzt bestehenden Kernel einzupflegen?

Gibt es auch ein Howto, welches beschreibt wie ich denn fremde Kernels (eben z.B. die von der genannten Laptoppage) in mein Debian einbaue; für den Fall wenn alle Stricke reissen?

Vielen Dank für eure Hilfe!

Starjumper
14.04.06, 14:41
Hallo,

ich hab bei Sourceforge folgendes gefunden:

http://sourceforge.net/projects/acpi4asus

Nun möchte ich den Treiber per make installieren, dabei kommt aber folgende Fehlermeldung:



gcc -DLINUX -D__KERNEL__ -DMODULE -I/lib/modules/2.4.27-2-386/build/include `./get_include.sh /lib/modules/2.4.27-2-386/build/drivers/acpi /lib/modules/2.4.27-2-386/build/include/acpi` -Wall -Wstrict-prototypes -fno-strict-aliasing -pipe -mpreferred-stack-boundary=2 -fomit-frame-pointer -DMODVERSIONS -include /lib/modules/2.4.27-2-386/build/include/linux/modversions.h -c -o asus_core.o asus_core.c
asus_core.c:85: error: Syntaxfehler before "uint"
asus_core.c:85: Warnung: type defaults to `int' in declaration of `module_param'
asus_core.c:85: Warnung: function declaration isn't a prototype
asus_core.c:85: Warnung: data definition has no type or storage class
asus_core.c:87: error: Syntaxfehler before "uint"
asus_core.c:87: Warnung: type defaults to `int' in declaration of `module_param'
asus_core.c:87: Warnung: function declaration isn't a prototype
asus_core.c:87: Warnung: data definition has no type or storage class
make: *** [asus_core.o] Fehler 1


Nun habe ich mal in der kritisierten source asus_core.c reingeschaut und in den kritisierten Zeilen finde ich folgendes:



83 static uid_t asus_uid;
84 static gid_t asus_gid;
85 module_param(asus_uid, uint, 0);
86 MODULE_PARM_DESC(asus_uid, "UID for entries in/proc/acpi/asus.\n");
87 module_param(asus_gid, uint, 0);
88 MODULE_PARM_DESC(asus_gid, "GID for entries in/proc/acpi/asus.\n");


Kann mir jemand sagen was in diesen Zeilen falsch ist und ich ändern muss, damit ich diese Tools installieren kann und somit meine WLAN Karte nutzen kann?

Vielen Dank!

RapidMax
14.04.06, 16:31
So eine Treiberinstallation kann sehr mühsam sein, selbst wenn du dich mit der Materie auskennst.

Ich würde dir folgendes Vorgehen raten: Als erstes verwende den aktuellen 2.6er Kernel von Sarge, kernel-image-2.6.8-3-686. Wenn dieser auf deinem Notebook korrekt funktioniert kannst du weiterfahren.

Hier stellt sich die erste Frage nach der Version. wenn du mit apt-get source kernel-image-2.6.8-3-686 die Kernel-Quellen lädst, hast du den korrekten Source zu dem Debian Kernel, aber dein Patch wird vermutlich nicht ohne Konflikte angewendet werden können, da der Debian-Kernel bereits gepatched ist.

Eine weitere Option ist, einen neueren Vanilla-Kernel von kernel.org zu verwenden. Da die Konfiguration eines Vanilla-Kernels von Grund auf sehr mühsam sein kann, würde ich in diesem Fall vorschlagen, einfach die alte Debian-Konfiguration zu übernehmen. Ich schreibe weiter unten, was für die Kompilierung bei Debian eingerichtet werden muss. All diese Befehle können dann als normaler Benutzer durchgeführt werden, nur zum installieren des Debian-Package muss du root-Rechte erlangen.

In Arbeitsverzeichnis wechseln:

cd /usr/src
Neuen Kernel entpacken

tar xvjf linux-2.6.16.5.tar.bz2
cd linux-2.6.16.5
Aktuelle Konfiguration übernehmen:

cp /boot/config-2.6.8-3-686 .config
make Oldconfig ausführen. Du kannst bei allen Fragen einfach mit Enter den Default übernehmen, das funktioniert sehr zuverlässig:

make oldconfig
(freche Leute wie ich führen sogar yes "" | make oldconfig aus...)
Danach kannst du mit make menuconfig oder make xconfig oder make gconfig die Kernelkonfiguration an deine Bedürfnisse anpassen. Vorerst empfehle ich nur dort Änderungen zu machen, wo du dir ganz sicher bist!

make menuconfig
Fertig konfiguriert kann der Kernel nun gebaut werden.

make-kpkg --rootcmd fakeroot --revision=custom.1 kernel_image
Wenn alles korrekt gelaufen ist, sollte nun ein Debian-Package in /usr/src liegen, welches dein Tag custom.1 im Namen trägt. Diese muss nun noch installiert werden und ev. Lilo oder Grub angepasst werden:

su -c "dpkg -i /usr/src/kernel-image-2.6.16.5.custom.1_i386.deb"

Fertig!

Hmm, nee, zu schön wärs. Erfahrungsgemäss wird dein System damit nicht oder mit kleineren bis grösseren Fehler booten. Wenn du die Fehler aufmerksam liest, lassen sie sich meist einfach auf fehlende Optionen in der Kernel-Konfiguration zurückführen und durch einen neuen Kernel beheben. Wichtig ist nur, dass du ein Live-Linux-System zur Hand hast, um damit unkompliziert den Boot-Vorgang anzupassen. (Tipp: z.B. Knoppix Booten, Root-System mounten und mit chroot /mnt in dein System wechseln)

Damit der Kernel-Kompilier-Vorgang wie oben ablaufen kann, musst du kernel-package und fakeroot installieren (aptitude install kernel-package fakeroot). Zudem solltest du dafür sorgen, dass Benutzer der Gruppe src in /usr/src schreiben können und dich dieser Gruppe anschliessen (neu einloggen nicht vergessen!):


addgroup src
adduser myself src
chown root:src /usr/src
chmod g+s /usr/src


Wenn der neue Kernel erst einmal läuft, dann kannst du dich daran machen, die Treiber für die WLAN-Karte zu installieren.

Gruss, Andy

Starjumper
14.04.06, 16:52
WOW! Danke für diese tolle Anleitung, werde ich sofort ausprobieren!

Nur eine Frage noch:



su -c "dpkg -i /usr/src/kernel-image-2.6.16.5.custom.1_i386.deb"


Passe ich damit GRUB an? Oder geht das anders?

Ich werd nochmal die info GRUB Seiten, gemäß der Debian Web Anleitung ansehen.

Starjumper
14.04.06, 18:05
So, der Debian Sarge 2.6.8-2-686 Kernel ist installiert, er scheint auch wesentlich flotter zu werke zu gehen.

Nur ich habe keine sources dafür, d.h. es exsistieren auch keine /lib/modules/"passender kernel"/built Ordner für den 2.6.8-2-686 Kernel.

Demnach verweigert der acpi4asus Treiber die installation.

Wo bekomme ich denn nun die Sources für dieses Kernel seperat her? Denn unter Debian habe ich kein Internet, also kann ich leider nicht mal eben schnell per aptitude und ftp mal die sources dazuinstallieren.

Ich habe nur die binary cd 1. Sind die passenden Sources auf cd 2?

Vielleicht ist es auf cd 1. Wie wäre der Namen des source pakets für den 2.6.8-2-686 Kernel für apt-get?

Starjumper
14.04.06, 20:25
Nun ja, alles ist installiert, aber acpi4asus tut seine Arbeit nicht und lässt selbst ein modprobe nicht zu.

Kennt jemand noch Möglichkeiten Wlan-Karten mittels Softwareschalter zu aktivieren?

RapidMax
14.04.06, 22:31
Wenn du den Debian-Kernel verwendest, dann reicht ev. die Installation von kernel-headers-2.6.8-3-686. Damit müssten sich dann auch die Header unter /lib/modules/*/built finden lassen. Das ist übrigens nur ein symlink auf den entsprechenden /usr/src/linux-* Ordner.

Gruss, Andy

Starjumper
14.04.06, 22:49
Schon erledigt, Headers reichen nicht, es ist das source paket notwendig, aber danke! :D

Es geht eigentlich nur noch darum per acpi die wlan-Karte irgendwie einschalten zu können.