Edit by OSSLab :thx
本文特別感謝數位天堂 Hippo and Jserv
本篇文章目地是讓一般用戶瞭解 一些高手怎樣始用一些原始碼 自己編寫軔體.
網通設備的開發由來..
運作環境 ubuntu 11.04 Desktop 版以linux-3.1.10 舉例.
1.下載Linux sources code 跟安裝mkimage
$ wget ftp://ftp.isu.edu.tw/Linux/kernel/linux-3.1.10.tar.xz #取得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. 交叉編譯器與toolchain
Arm與X86 CPU 指令急不同 ,要準備交叉編譯器,快速方法到CodeSourcery下載現成的.,
Kernel 韌體核心使用CodeSourcery ARM 2005q3-2編譯.
編譯器安裝
首先先到https://sourcery.mentor.com/GNUToolchain/release1802?lite=arm 下載
本次使用
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/thx/CodeSourcery/Sourcery_G++_Lite/bin:$PATH
保存退出。
logout 後再登入 .
arm-none-linux-gnueabi-gcc -v
出現版本訊息 環境變數就正常
Sourcery_G++_Lite 裝在這目錄底下
$home/CodeSourcery/Sourcery_G++_Lite/bin
$ ./nas-34.x86.sh # 執行為編譯核心 script
編譯完成後, linux-3.2.11/arch/arm/boot/目錄下, 就有uImage了.
準備一台 TFTP server,
NAS-34接上TTL console線, 開機後 要在 Console 下快速按下 Enter , 中斷U-Boot.
>> dhcp >> setenv bootargs 'console=ttyS0,115200 mem=128M' >> tftpboot 800000 uImage >> bootm 800000
然後比對原廠韌體的console訊息, 查看自己編譯的核心是否有遺漏等等. 如果核心出錯, 回頭再重新編譯.
自認核心都沒問題後, 準備rootfs. rootfs可放在硬碟或NFS server.
setenv serverip 192.168.7.57 # 設定 kernel nfs ip server setenv ipaddr 192.168.7.11 # printenv #顯示設定組態 tftpboot 800000 uImage # bootm 800000# setenv bootargs 'console=ttyS0,115200 mem=128M' setenv bootargs 'console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.7.57:/home/thx/NAS-34/rootfs ip=192.168.7.114:192.168.7.57:192.168.7.2:255.255.255.0::eth0:off noinitrd mem=128M' setenv bootargs 'console=ttyS0,115200 root=/dev/nfs nfsroot=192.168.7.57:/home/thx/NAS-34/rootfs noinitrd mem=128M'
參考
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