[網樂通] 直接使用網樂通編譯驅動,免架Cross Compiler環境

如果時間用不完,或是懶得架Cross Compiler環境的話,可以試試用網樂通編譯驅動,不過缺點是編譯速度有點慢,只是小驅動的話其實只需要在網樂通上面直接編譯就可以了~

 

查詢核心版本並下載Kernel原始碼

首先需要知道核心版本為多少,並且將原始碼放入裡面才能順利編譯:

[email protected]:~# uname -r
2.6.32.59_stm24_0211-PDK7105-32BITS

由此可知~網樂通的Kernel版本名稱是2.6.32.59_stm24_0211-PDK7105-32BITS,所以就在/usr/src/放入原始碼並且資料夾名稱改為2.6.32.59_stm24_0211-PDK7105-32BITS

[email protected]:~# cd /usr/src/
[email protected]:/usr/src# wget https://github.com/suzuke/kernel-pdk7105/archive/master.zip
[email protected]:/usr/src# unzip master.zip #如果找不到unzip請自行安裝:apt-get install unzip
[email protected]:/usr/src# mv kernel-pdk7105-master 2.6.32.59_stm24_0211-PDK7105-32BITS #更名資料夾

 

整理原始碼

再來~進入原始碼的資料夾並且執行make mrproper來確保原始碼的乾淨~

[email protected]:~# cd /usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS/
[email protected]:/usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS# make mrproper

執行完畢後,原本需要使用make menuconfig來設定Kernel,但是本人太懶了,直接去網樂通Debian系統裡面抓「.config」過來編譯核心:

[email protected]:~# cd /usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS/
[email protected]:/usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS# wget http://s1.becoder.org/nextvod/config.gz
[email protected]:/usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS# gunzip config.gz
[email protected]:/usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS# mv config .config
[email protected]:/usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS# make headers_install INSTALL_HDR_PATH= /usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS/ #產生header檔,建議多下幾次指令避免缺檔

 

準備編譯

網樂通原始碼已經整理得差不多了,再來是編譯驅動模組的準備:

[email protected]sh4:~# mkdir /lib/modules/2.6.32.59_stm24_0211-PDK7105-32BITS/
[email protected]:~# ln -s /usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS/ /lib/modules/2.6.32.59_stm24_0211-PDK7105-32BITS/build
[email protected]:~# ln -s /usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS/ /lib/modules/2.6.32.59_stm24_0211-PDK7105-32BITS/src

完成後~就可以使用網樂通直接編譯驅動了~不過~需要用些方法繞過Vermagic的驗證才能順利掛載驅動喔(.ko檔)

 

修改Vermagic字串

如果沒有修改Vermagic,這樣編出來 .ko 的Vermagic和編出來核心的字串會不同,這部份還要再請教其他先進,不過目前我使用的方法是直接繞過Vermagic,直接修改Kernel原始碼,讓編譯出來.ko的Vermagic和核心相同:

[email protected]:~# cd /usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS/
[email protected]:/usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS# cp include/linux/vermagic.h include/linux/vermagic.h.bak #備份檔案
[email protected]:/usr/src/2.6.32.59_stm24_0211-PDK7105-32BITS# vi include/linux/vermagic.h

 

進入後應該會看到像這樣的文字,找到「UTS_RELEASE」:

#define VERMAGIC_STRING
UTS_RELEASE " "
MODULE_VERMAGIC_SMP
MODULE_VERMAGIC_PREEMPT

MODULE_VERMAGIC_MODULE_UNLOAD
MODULE_VERMAGIC_MODVERSIONS                   

MODULE_ARCH_VERMAGIC

修改為:

#define VERMAGIC_STRING
"2.6.32.59_stm24_0211-PDK7105-32BITS" " " #網樂通uname -r出現的版本
MODULE_VERMAGIC_SMP MODULE_VERMAGIC_PREEMPT
MODULE_VERMAGIC_MODULE_UNLOAD MODULE_VERMAGIC_MODVERSIONS
MODULE_ARCH_VERMAGIC

存檔後就可以用網樂通開始編譯驅動了~!

 

例如這篇~[網樂通] 使用Cross Compiler編出網樂通核心&小米隨身WIFI驅動 直接去抓驅動包進網樂通後~解壓縮後就可以直接make了:make ARCH=sh4,不需要修改Makefile,只不過要記得新增小米隨身WIFI的ID進去:

[email protected]:~# wget http://cdn-cw.mediatek.com/Downloads/linux/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
(http://s1.becoder.org/nextvod/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2)
[email protected]:~# tar jxvf DPO_MT7601U_LinuxSTA_3.0.0.4_20130913.tar.bz2
[email protected]:~# cd DPO_MT7601U_LinuxSTA_3.0.0.4_20130913
[email protected]:~/DPO_MT7601U_LinuxSTA_3.0.0.4_20130913# vi common/rtusb_dev_id.c

#ifdef MT7601U
{USB_DEVICE(0x148f,0x6370)}, /* Ralink 6370 */
{USB_DEVICE(0x148f,0x7601)}, /* MT 6370 */
{USB_DEVICE(0x2717,0x4106)}, /* Xiaomi Wifi */ #新增這行
#endif /* MT7601U */

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *