openwrt編譯日誌

編譯openwrt定製固件有三種方式:

1、 用ImageBuilder編譯,用於靈活選擇package。畢竟壓縮的只讀文件系統squashfs比可寫的JFFS能省不少地方,可以用來把玩更多的package。

2、 用SDK編譯,用於編譯package倉庫中沒有的軟件包,另外其中有配套的內核源碼及頭文件,編譯缺失的內核模塊也很方便。

3、從源碼編譯,因爲要重新編譯cross-compile toolchians,下載最內核和軟件包的源碼編譯,導致這個過程比較耗時,用於上述兩種情況搞不定的情況。

現在介紹第一種定製方法。

個人比較喜歡安裝各種的軟件包,畢竟百元左右的路由器往往只有8M flash,最大的也只有16M,即便RAM夠,用opkg install 也裝不了多少軟件。我的最佳實踐就是先裝到JFFS的overlay中對軟件進行評估,若好用加到軟件列表中,不好用就remove, 當系統提示flash告急時,就把軟件列表中的package 信息收集,編譯一個新的image。當然如果你的路由器有USB接口,也可以修改opkg.conf,增加 dest usb /mnt/usb,安裝package時用 “–d usb” 來指定安裝目標位置,從而來解決空間問題。

按照下面步驟定製固件。

1. 官網下載ImageBuilder包,比如OpenWrt-ImageBuilder-brcm47xx-for-Linux-i686.tar.bz2,解壓。

2. 列出當前系統所有已安裝包,用於準備後續make image的 packages參數。
     echo  $(opkg list-installed | awk '{ print $1}')

3. 檢查輸出結果看這些包是否自己所需,也可以在此新加入package, 務必注意package依賴,將依賴的package都加上。

4. 在根目錄直接make image PACKAGES即可,參數填寫參考如下格式。
        make image PROFILE="<profilename>" # override the default target profile
        make image PACKAGES="<pkg1> [<pkg2> [<pkg3> ...]]" # 將步驟2生成的package列表填入該參數。
        make image FILES="<path>" # include extra files from <path>  指定個人的配置文件目錄,用來固化缺省配置,比如網絡配置參數。
        make image BIN_DIR="<path>" # alternative output directory for the images

5. 在bin/target目錄中生成一個trx和多個bin格式的image文件。

6. 將trx文件copy到目標設備,最好copy到使用RAM文件系統的tmp目錄。

scp bin/brcm47xx/openwrt-brcm47xx-squashfs.trx [email protected]:/tmp/

7. 在刷新系統之前,最好將/overlay 目錄打包壓縮,用於後續恢復配置,按照openwrt的設計,只有修改過的文件纔會放到/overlay目錄,具體原理參考union文件系統。

8. 刷新固件到linux分區,具體分區情況和bootrom有關,bcm的芯片參考 cat /proc/mtd 。

mtd -r write /tmp/openwrt-brcm47xx-squashfs.trx linux

9. 自動重啓後,除非通過FILES修改過配置文件,否則ip 地址爲192.168.1.1 ,telnet直接登陸後用passwd修改密碼,然後用ssh安全登陸。

10. 按照自身需求從步驟7保存的文件中copy 相關文件,恢復配置。

一、UBUNTU12.04LTS安裝好
二、準備環境,用root權限安裝
apt-get install g++ 
apt-get install libncurses5-dev 
apt-get install zlib1g-dev 
apt-get install bison 
apt-get install flex 
apt-get install unzip 
apt-get install autoconf 
apt-get install gawk 
apt-get install make 
apt-get install gettext 
apt-get install gcc 
apt-get install binutils 
apt-get install patch 
apt-get install bzip2 
apt-get install libz-dev 
apt-get install asciidoc 
apt-get install subversion
apt-get install git git-man liberror-perl libsigsegv2
三、下載OPENWRT源碼,退出ROOT權限
mkdir OpenWrt/ 
cd OpenWrt/ 
svn co svn://svn.openwrt.org/openwrt/trunk/
四、更新源碼
cd OpenWrt/trunk/ 
svn up 
./scripts/feeds update -a 
./scripts/feeds install -a
五、開始編譯固件
sudo make defconfig
如果:
Prerequisite check failed. Use FORCE=1 to override.
make: *** [tmp/.prereq-build] 錯誤 1
則:
sudo make menuconfig FORCE=1
進入openwrt configuration,選CPU和LCUI
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章