26. März, 2008, 22:58
Ich wollte heute ein neues Windows-Build für QSvn erstellen und musste mit Erschrecken feststellen, dass das installierte Visual Studio 2005 Express die user32.lib nicht mehr finden kann. Somit erzeugt mir cmake auch weder nmake-Makefiles noch Projektdateien für Visual Studio 2005 Express.
Die user32.lib wird mit dem Plattform SDK für Windows installiert und befindet sich unter c:\Programme\Microsoft Platform SDK\Lib\. Das Verzeichnis ist auch in der Umgebunsgvariablen LIB angegeben. Bisher gab es mit dieser Konstellation keine Probleme. Jedoch muss eines der letzten Windows-Updates irgendetwas magisches geändert haben, sodass die user32.lib trotz Angabe des richtigen Verzeichnisses in LIB nicht gefunden wird.
Nach reifer Überlegung viel mir ein, dass bei der Installation des Plattform SDKs die Pfadangaben in den Umgebungsvariablen alle mit einem Punkt endeten.
INCLUDE=C:\Programme\Microsoft Platform SDK\Include\.
INETSDK=C:\Programme\Microsoft Platform SDK\.
LIB=C:\Programme\Microsoft Platform SDK\Lib\.
MSSdk=C:\Programme\Microsoft Platform SDK\.
Mstools=C:\Programme\Microsoft Platform SDK\.
PATH=C:\Programme\Microsoft Platform SDK\Bin\.
Das kam mir damals komisch vor, es lief aber bisher alles. Den Punkt in den Umgebungsvariablen wieder wegnommen, findet der Linker nun auch wieder die user32.lib und cmake erzeugt mir wieder Makefiles und Projektdateien.
INCLUDE=C:\Programme\Microsoft Platform SDK\Include\
INETSDK=C:\Programme\Microsoft Platform SDK\
LIB=C:\Programme\Microsoft Platform SDK\Lib\
MSSdk=C:\Programme\Microsoft Platform SDK\
Mstools=C:\Programme\Microsoft Platform SDK\
PATH=C:\Programme\Microsoft Platform SDK\Bin\
7. März, 2008, 19:55
Wie ich in meinem Artikel Debian auf dem HP 6715b beschrieben habe, gibt es mit der integrierten Broadcom WLAN-Karte BCM94311MCG einige Probleme. Bei dem Linux Kernel 2.6.22 musste ich noch den ndiswrapper einsetzen. Die Kernel-Entwickler und die Leute von linuxwireless.org haben in den letzten Wochen jedoch einige Änderungen am WLAN-Stack und den Treibern vorgenommen.
Seit einigen Tagen ist in Debian sid der Linux Kernel 2.6.24 als Standard-Kernel angekommen. Der bringt mit dem b43 einen neuen Broadcom-Treiber mit. Der alte Treiber bcm43xx basiert auf dem alten WLAN-Stack SoftMAC. Der neue nutzt den neuen Stack mac80211. Das bringt zwar einige Vorteile, jedoch hat Linux Kernel 2.6.24 noch Probleme mit den Broadcom-Karten der Revision 2. Da hilft nur eins: Ouzo
- Neee - Selber compilieren.
Der bcm4311 Treiber für die Karten der Revision 2 benötigt einen Patch, den die Entwickler von linuxwireless.org zum Download anbieten. Die besten Voraussetzungen also, um einen eigenen 2.6.24-Kernel mit laufendem bcm4311 für Karten der Revision 2 zu bauen.
Als erstes brauche ich wieder etwas Software. Vor allem die Kernel-Quellen samt Debian-Patches, Build-Umgebung und den bcm4311-Patch.
apt-get install linux-source-2.6.24 kernel-package build-essential
wget http://linuxwireless.org/download/b43/patch_2.6.24_for_4311_2
Danach bereite ich die Quellen zum Compilieren vor.
cd /usr/src
tar xvjf linux-source-2.6.24.tar.bz
rmdir linux
ln -s linux-source-2.6.24 linux
cd linux
patch -p1 < patch_2.6.24_for_4311_2
Fehlt nur noch die Konfiguration vom originalen Debian-Kernel 2.6.24 zu kopieren und auf meine Quellen anzuwenden.
cp /boot/config-2.6.24-1-amd64 .config
make clean
make oldconfig
make-kpkg clean
Das Compilieren und verpacken in Debian-Pakete ist nun dank make-kpkg recht komfortabel.
make-kpkg --initrd --append-to-version=-1-amd64-ar \
--revision=1 kernel_image kernel_headers
Und schwups - ok - einige Zeit später warten mit linux-image-2.6.24-ar_1_amd64.deb und linux-headers-2.6.24-1-amd64-ar_1_amd64.deb zwei neue Pakete unter /usr/src auf ihre Installation.
cd /usr/src
dpkg -i linux-image-2.6.24-1-amd64-ar_1_amd64.deb
dpkg -i linux-headers-2.6.24-1-amd64-ar_1_amd64.deb
Den so installierten Kernel kann ich nun starten und komme in den Genuss eines reinen Linux-Treibers für die Broadcom BCM94311MCG Revision 2.