在安裝過 OpenWrt 到 WL-700gE 上後,你得作個抉擇。是要持續使用 OpenWrt,或者選用其他的自由軟體套件系統,如 Debian GNU/Linux。若要繼續使用 OpenWrt,你可以將裝好的 OpenWrt Image 再倒入硬碟中,之後就可以以 ipkg 的機制安裝軟體。

也可以選擇安裝其他的套件系統,如已經被移植數千種軟體的 Debian 系統。且 Debian 是少數支援 mipsel 的套件系統之一。

安裝方式很簡單,你可以利用 cdebootstrap 造一個給 mipsel 使用的基礎系統 (base system),操作方式如下

# cdebootstrap -v --foreign --arch=mipsel lenny debian-distro http://ftp.tw.debian.org/debian
P: Retrieving Release
P: Retrieving Release.gpg
P: Validating Release
I: Good signature from "Debian Archive Automatic Signing Key (4.0/etch) <[email protected]>"
P: Parsing Release
P: Validating Packages.gz
P: Parsing Packages
P: Validating gcc-4.3-base
P: Validating libgcc1
...
...
...
P: Writing hosts
P: Writing resolv.conf
W: Creation of /dev/console failed
I: Second stage installer is available as /sbin/cdebootstrap-foreign or /sbin/init

上述指令,會為你建立一個 lenny 版本的 Debian 系統。若想擺入核心或其他套件的話,可加入額外參數如 –include=linux-image-2.6-sb1a-bcm91480b

你可以將上述 debian-distro 目錄壓縮後,丟到 WL-700gE 上再解到 IDE 硬碟的分割區中。然後透過修改 flash 中的 OpenWrt 之 preinit 等指令,預先載入該分割區,並利用 pivot_root 或 chroot 來更換系統目錄。待正確切換入系統後,再以 root 執行 /sbin/cdebootstrap-foreign 即可完成所有安裝程序。

開機的流程將會是 CFE -> OpenWrt -> Debian. 不過若使用 pivot_root 或 chroot 都會使系統使用 OpenWrt 的核心系統。

若想於 Debian 中使用不同的核心,不妨使用 kexec ,mipsel 平台的版本也已經被移植好。當然,你也得修改 OpenWrt 軔體中的 /sbin/init,讓系統自動搜尋你想使用的核心,並透過 kexec 線上重新載入新的核心系統。目前這個技術尚未有標準的設定檔作法或範例,戲法巧妙不同,就看你如何應用了。

  • Herman

    請問你有實作過 debian 實裝在 wl700ge 中嗎, 可否有機會跟你要實裝後的程式呢? 或是有比較具體的程序, 之前有一陣子一直想試試實裝 debian 在 wl700ge中, 但一直無法弄清楚相關方法, 也對 kernel及開機部份的設計不是很了解,所以一直無法成功, 目前我在使用 openwrt的系統, 但對其相關的功能不是很滿意, 一直希望能使用 debian系統, 希望能有機會請你幫忙.謝謝

  • Herman, 有。但是我尚未能整理成可直接安裝的軔體。

    如文中所說,需要做的是把 Debian 系統放入硬碟中,並於 OpenWrt 中寫一 Script 切換 (chroot or kexec) 進 Debian 中。

    我想或許可以約每週二的 Tossug 聚會來碰面討論?

  • Herman

    軔體的部份應該問題不大,我目前所使用的軔體為 http://wl700g.homelinux.net/drupal/?q=node/145
    裡面的V2版本, 之前花不少時間試過, debian 系統我己經在我的 wl700g裡面有放置一份了, 也可以 chroot來使用, 但因為是使用 2.4的 openwrt kernel 所以實用性其實不大(不同的 kernel), 所以想試試使用 kexec 的方法, 但沒接觸過.
    目前比較希望重編一個乾淨的 debian及用 kexec來做一個 wl700ge的系統.

    Tossug ? 是什麼樣的組織呢 ? 我目前在上班, linux只是個人的興趣而以 😛

  • Herman, 其實若可以 chroot, 應該就可以享用大部份 Debian 的功能,除非你想使用一些只在 2.6 才有驅動程式的 USB Device. 🙂

    BTW, 根據 Changeset [12300],b43 已經可以在 2.6 核心中使用 Master mode 了。

    Tossug 是 Taipei Open Source Software User Group,只一個對開放原始碼、自由軟體感興趣的每週聚會,適合上班族下班後,來聊天。:-)

  • 請問大大第1句語法是不是有問題啊,我試了好幾次都不能成功
    –foreign 應該被去掉,不然都會生成以下錯誤

    cdebootstrap: unrecognized option `–foreign’
    Try `cdebootstrap –help’ for more information.

    我試過好像也不能直接使用lenny, 會出現
    E: Unknown suite lenny

    目前傾向先下載etch版再用update的方式更新到lenny 😀

  • Wugi, 抱歉,我忘了說明 cdebootstrap 的版本,我是使用 0.5.3 版。你的錯誤訊息也是使用舊版的原因。

    另外,–foreign 是很重要的參數,否則 cdebootstrap 會在你的 host system 上執行 Debian Installer,當然你無法在 x86 系統上執行 mipsel 的執行檔,–foreign 會為你留下二段安裝的 script,因此你可以在 target system 執行最後的安裝程序。

  • 嗯嗯,先不考慮–foreign的參數問題…因為我是在mipsel裡運行的 😀

    問題是使用
    # cdebootstrap –arch=mipsel lenny debian-distro http://ftp.tw.debian.org/debian

    會出現 E: Unknown suite lenny, 不知大大是如何做到的?
    我只試過 # cdebootstrap –arch=mipsel etch debian-distro http://ftp.tw.debian.org/debian
    是可以正常執行成功的…?

  • Wugi, 可以請你先檢查 cdebootstrap –version 的版本嗎 ? cdebootstrap 在 0.3.16 之後才支援 lenny.

  • 哦哦, 我試看看…謝謝提示 😀

  • 呵呵, 可以了…果然是cdebootstrap版本的關系, 在etch中它的版本是 0.3.15

  • 大大, 我發現要使用lenny的話一定要是kernel 2.6以上..不然會一直出現kernel is too old的訊息…你有試過2.6的那個核心可不可以用嗎?

  • 哪個核心指的是?我是使用自行編譯 OpenWrt 的 2.6 kernel. 🙂

  • 這樣啊, 那…openwrt的2.6 kernel source有的下載嗎?
    我也來編來試試 😀

  • 有,你可以取 OpenWrt Trunk 來玩。:-)

  • 好滴, 找時間來弄看看, 最近都在忙著測和看案子….都沒時間試
    先謝謝大大了 🙂