N900 編譯核心模組

 

先前 DR 在 N900 安裝 USB 乙太網路卡一文中提過 N900 預設並不支援使用 RTL8150 晶片的網路卡,然而 N900 的核心原始碼其實有包含 RTL8150 的驅動程式,只是預設並沒有被編譯進去,於是本文將進一步說明如何使用 Maemo SDK 編譯 N900 的核心模組(kernel modules)。

 

Maemo SDK 是建置在 Linux 作業系統上的 N900 軟體開發套件,預設支援的發行版本是 Debian。因此一來它只能在 Linux 作業系統上執行,二來如果是使用 Debian 以外的 Linux 發行版本(例如 Fedora),那麼在建置上也會比較麻煩。所以 DR 建議直接使用這個網站所提供的虛擬映像檔,該映像檔是已經包含 Maemo SDK 的 Ubuntu 發行版,下載後用虛擬機器(例如 VirtualBox)開啟即可使用,預設的帳號與密碼皆為「maemo」。

 

也許有人會思考:能不能直接在 N900 上編譯核心模組?事實上 DR 確實研究過這個作法,而結論是 N900 可以順利安裝編譯所需的所有軟體,硬體也算跑得動,唯一的障礙是 N900 的系統空間不足以進行整個編譯程序,所以 DR 就沒有繼續嘗試了。

 

由於使用的是建置好的虛擬映像檔,所以 DR 會略過 Maemo SDK 的安裝程序,進入 Ubuntu 後,開啟終端機,然後按照以下流程處理。

 

1. 進入 SDK 環境

  • scratchbox
  • sb-conf se FREMANTLE_ARMEL

 

2. 設定套件庫

  • vim /etc/apt/source.list

 

加入以下內容後儲存:

deb http://repository.maemo.org/extras/ fremantle free non-free
deb-src http://repository.maemo.org/extras/ fremantle free
deb http://repository.maemo.org/extras-testing/ fremantle free non-free
deb-src http://repository.maemo.org/extras-testing/ fremantle free
deb http://repository.maemo.org/extras-devel/ fremantle free non-free
deb-src http://repository.maemo.org/extras-devel/ fremantle free

 

3. 安裝 kernel 原始碼
  • fakeroot apt-get update
  • fakeroot apt-get install kernel-power-source(安裝 kernel-power 原始碼,因為 N900 要外接裝置一定是用這個版本)
  • tar -jxvf /usr/src/kernel-power-source.tar.bz2

 

4. 修正 menuconfig 執行錯誤

  • cd kernel-power
  • vim scripts/kconfig/lxdialog/check-lxdialog.sh

 

修改 ldflags() 函式,在最前面加入兩行:

ldflags()
{
   echo '-lncurses'
   exit
 

5. 新增模組與編譯

  • make clean
  • make EXTRAVERSION=.10-power50 rx51_defconfig(套用 kernel-power 設定)
  • make EXTRAVERSION=.10-power50 menuconfig

 

EXTRAVSERION 的值依據 N900 正在使用的 kernel 版本。

 

先確認 General Setup→Prompt for develment and/or incomplete code/drivers 是否已勾選,接著選擇本次所要加入的驅動程式:Device Drivers→Network device support→USB Network Adapters→USB RTL8150 based ethernet device support (EXPERIMETAL),完成後便進行編譯:

  • make EXTRAVERSION=.10-power50 all

 

6. 安裝至 N900

可以從桌面的 sbhome 找到 kernel-power 目錄,rtl8150.ko 位於 drivers/net/usb/ 下,將該模組複製到 N900 的 /lib/modules/2.6.28.10-power50/ 目錄裡頭,然後執行:

  • sudo depmod -a
  • sudo modinfo rtl8150(非必要,查詢模組資訊用)

 

如此一來,就可以使用 RTL8150 的網卡了。

 

7. 其它參考資料