Edit by OSSLab :thx
特別感謝數位天堂 Hippo and Jserv
本篇文章目地是讓一般用戶瞭解 一些高手怎樣始用一些原始碼 如openwrt 自己編寫網通設備軔體.
初淺瞭解網通設備的開發過程
建議先瞭解Linux 開機程序:
http://linux.vbird.org/linux_basic/0...#startup_intro
而embedded system 則以
uboot (bootloader),Kernel ,rootfs
這邊自行編譯 uboot 會比較有點難度 ,
Kernel 重點是要把驅動包進去
rootfs 則可選擇想要的Linux 套件.
ALARM, Gentoo, Fedora, OpenWrt
對於uboot 比較不瞭解的人 請先參考這
運作環境 ubuntu 11.04 Desktop 版 以linux-3.1.10 原始碼 為範例
1.下載Linux sources code 跟安裝mkimage
$ wget ftp://ftp.isu.edu.tw/Linux/kernel/v3.x/patch-3.1.10.gz #
取得Kernel 原始碼$ tar -xJf linux-3.1.10.tar.xz -C Source
$ sudo ln -s /home/使用者/Source/linux-3.1.10 /usr/src/linux-3.1.10
$
apt-get install uboot-mkimage # 安裝mkimage
2. 交叉編譯器Cross Compiler 與toolchain
Arm與X86 CPU 指令集不同 ,要準備交叉編譯器與Toolchain,
要準備安裝 binutils,gcc ,gdb,newlib 會太慢
快速方法到CodeSourcery下載現成的.
這邊 Kernel使用CodeSourcery arm-2011.03-42-arm-none-eabi.bin 安裝
編譯器安裝
wget https://sourcery.mentor.com/GNUToolchain/package8736/public/arm-none-eabi/arm-2011.03-42-arm-none-eabi.bin
tar -xjf
arm-2011.03-42-arm-none-eabi.bin
chmod +x arm-2011.03-42-arm-none-eabi.bin
接下來再執行以下指令,之後選否
sudo dpkg-reconfigure dash
.\arm-2011.03-42-arm-none-eabi.bin
就會執行安裝了
sudo vi /etc/profile
在最後一行增加:
PATH=$HOME/user/CodeSourcery/Sourcery_G++_Lite/bin:$PATH
保存退出。
logout 後再登入 .
arm-none-linux-gnueabi-gcc -v
出現版本訊息 環境變數就正常
Sourcery_G++_Lite 裝在這目錄底下
$home/CodeSourcery/Sourcery_G++_Lite/bin
3. 編譯Kernel 用wget 下載Hippo 大做的Script
$ ./nas-34.x86.sh #
執行為編譯核心 script
機板型號:選Marvell Orion-NAS Reference Design
Flash, 取消Memory Technology Device (MTD) support
若要使用NFS server上的rootfs, 將NFS client support編入核心. (建議使用)
如果要支持一些USB 裝置, 記得要勾選(比如說USB 網路卡,3G 網路卡 ,USB 音效卡)
編譯成功後, 將/usr/src/linux-3.1.10/xxxxx/arm/boot/uImage, 上傳到TFTP server.
假設以上都閒煩 請直接抓已經編譯好 的Kernel
4.使用U-Boot 從TFTP server 上傳Kernel
準備一台 TFTP server,
NAS-34接上TTL console線, 開機後 要在COM Console 下快速按下 Enter , 中斷U-Boot.
Console 目地是控制uboot 指令,傳送Kernel 還是用 網路的tftp協定
setenv serverip 192.168.7.57 # 設定 傳送kernel tftp ip server setenv ipaddr 192.168.7.11 # 設定 傳送kernel NAS 本機IP printenv #顯示設定組態 tftpboot 800000 uImage # (傳送uimage 到DRAM 800000 位置) bootm 800000# (從80000 位置啟動)
ok 完成tftp 上傳Kernel ....
核心都沒問題後, 準備rootfs.(待續)
參考
http://digiland.tw/viewtopic.php?id=1942
http://buffalo.nas-central.org/index...M9_Kernel_Port
http://computingplugs.com/index.php/..._custom_kernel
http://www.nslu2-linux.org/wiki/Optware/PlugComputers
http://plugcomputer.org/plugwiki/ind...nel_and_U-Boot
http://linux.vbird.org/linux_basic/0...#startup_intro
文件 | 大小 | 日期 | 附件上傳者 | |||
---|---|---|---|---|---|---|
nas-34.x86.sh 無描述 | 262 位元 | 14:13, 12 Jun 2012 | thx | 動作 | ||
uImage-3.1.10-11-Orion 無描述 | 2.27 MB | 23:42, 11 Jun 2012 | thx | 動作 |
Images 0 | ||
---|---|---|
No images to display in the gallery. |