磊科336及v2使用rtl8188cus晶片。在給定的document(随CD光牒附帶)裡面說支援的核心是2.6.18-2.6.33,opensuse11.4的核心版本已經是2.6.37。
openSUSE:/usr/src/linux # lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 1c4f:0002 SiGma Micro
Bus 004 Device 003: ID 0e8f:0016 GreenAsia Inc. 4 port USB 1.1 hub UH-174
Bus 004 Device 004: ID 192f:0416 Avago Technologies, Pte.
Bus 004 Device 005: ID 0bda:8176 Realtek Semiconductor Corp. RTL8188CUS 802.11n WLAN
openSUSE:/usr/src/linux # uname -a
Linux openSUSE.me 2.6.37.1-1.2-desktop #1 SMP PREEMPT 2011-02-21 10:34:10 +0100 i686 i686 i386 GNU/Linux
首先得安裝核心源碼和核心頭檔案(這個很多發行版都沒自動安裝):
zypper in kernel-source kernel-devel kernel-firmware kernel-desktop kernel-desktop-devel kernel-devel
現在在/usr/src目錄下面應該又了2.6.37的核心源碼:
openSUSE:/usr/src/linux # ls /usr/src
linux linux-2.6.37.1-1.2 linux-2.6.37.1-1.2-obj linux-obj packages
然後進入到336的驅動目錄下面把config檔案拷貝到/usr/src/linux(linux是linux-2.6.37.1-1.2的軟連接配接),
這樣在編譯的時候就不會出現找不到config的錯誤了。
如果用的晶片是8192(336v2)的話,現在切換到336v2的目錄下,開始操作:
下面在編譯的時候還是會出現問題,問題是什麼呢?
/home/wolf/temp/NW336v2/Linux/RTL8192CU_8188CUS_8188CE-VAU_linux_v2.0.974.20100803/driver/rtl8192CU_linux_v2.0.974.20100803/os_dep/osdep_service.c:291:2: error: implicit declaration of function ‘init_MUTEX’
這個是由于:新核心使用了sema_init() 代替了 init_MUTEX(),于是修改os_dep/osdep_service.c中的init_MUTEX(prwlock)為sema_init(prwlock,1)。
做完這些工作以後再make吧。
#make
如果迫不及待的想體驗以下,就
#insmod 8192cu.ko
當然,如果長期使用可以安裝一下子產品
#make install
也可以通過
#modprobe 8192cu.ko
開加載子產品。
******************************************************************************************************************
openSUSE下面本來我是通過指令行方式上網的,但是後來覺得使用networkmanager也不錯,就改用networkmanager來上網
(可以通過yast來設定,不要兩種方式混着使用,很容易沖突)
參考:
http://www.nerdlinux.com/post/124/
***********************************************************************************************************************************
Debian Squeeze(stable) 和Debian Wheezy的核心都是2.6.32,但是在安裝的時候可能需要自己注意一下.
Debian Wheezy安裝完核心源碼和頭檔案後(其實隻是需要頭檔案),會自動建立/lib/modules/2.6.32-5-686/build到/usr/src/linux-headers-2.6.32-5-686的軟連接配接:
wolf@wheezy:~$ ls -l /lib/modules/2.6.32-5-686/build
lrwxrwxrwx 1 root root 35 3月 23 13:02 /lib/modules/2.6.32-5-686/build -> /usr/src/linux-headers-2.6.32-5-686
是以在編譯的時候能夠省一步(也就沒有那麼莫名其妙的錯誤了),安裝
核心頭檔案和源代碼:
#aptitude install linux-source-2.6.32 linux-headers-2.6.32-5-686
接着在make的時候還會出現錯誤,說沒有/usr/src/linux-headers-2.6.32-5-common/autoconf_rtl8192c_usb_linux.h,
需要把autoconf_rtl8192c_usb_linux.h服知道/usr/src/linux/headers-2.6.32-5-common裡面.(很奇怪為什麼會用到common頭檔案)。
不需要複制config檔案,但是init_MUTEX(prwlock)還是要改為sema_init(prwlock,1)(因為這是核心裡面)
Debian Sid和Wheezy很類似。
在Debian Squeeze中,雖然也是使用的2.6.32的核心,但是沒有為我們自動添加上面提到的軟連接配接,是以在make的時候,會有沒有
/lib/modules/2.6.32-5-686/build的錯誤出現,這時隻需要建立一個連接配接就可以了(在上面的步驟的基礎上)
#ln -s /lib/modules/2.6.32-5-686/build /usr/src/linux-headers-2.6.32-5-686/
剩下的就和Debian Wheezy 和Sid一樣了。
*************************************************************************************************************
Mandriva 2010.2中,似乎還要簡單一些,隻需要把 init_MUTEX(prwlock)改為sema_init(prwlock,1),
然後安裝核心都檔案和核心源碼
[root@localhost src]# uprmi kernel-desktop586-2.6.33.7-2mnb kernel-desktop586-devel-2.6.33.7-2mnb
[root@localhost src]# pwd
/usr/src
[root@localhost src]# ls
linux-2.6.33.7-desktop-2mnb/
然後make編譯。
******************************************************************************************************************
最新的核心2.6.39已經有了這個網卡的固件,是以無須手動安裝,下載下傳固件即可,在Debian Sid中為
firmware-realtek
****************************************************************************************************************************************
在最新的Mageia 1(核心2.6.38)中編譯好核心子產品時8192cu.ko,發現insmode 不成功,出現
1 Invalid module format
這是由于正在運作的核心版本和編譯時連結的核心版本(頭檔案)不一緻造成的,原來,我安裝的核心頭檔案是:
kernel-tmb-desktop-devel-2.6.38.7-1.mga
而不是我PC上正在運作的核心的頭檔案,運作的核心的頭檔案應該是:
kernel-desktop-devel-2.6.38.7-1.mga
于是安裝之,編譯加載成功!