OpenWrt筆記

## 1. OpenWrt目錄結構說明

做者:辛勤的擺渡人
來源:CSDN
原文:https://blog.csdn.net/hunter168_wang/article/details/50780597linux

1.1. bin

bin目錄存放的是一些輸出文件,主要是存放OpenWrt編譯好的開發環境,好比toolchain, SDK,Image製做工具,還存放一些package安裝包(ipk包),
OpenWrt-ImageBuilder-bcm53xx.Linux-x86_64.tar.bz2
OpenWrt-SDK-bcm53xx_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2
OpenWrt-Toolchain-bcm53xx_gcc-4.8-linaro_uClibc-0.9.33.2_eabi.Linux-x86_64.tar.bz2git

目錄bin/bcm53xx/packages/主要包含下面四個子目錄
base:shell

存放的是一些基礎的軟件安裝包;
leadlcore:
存放的是聯芯自定義的一些軟件安裝包;服務器

luci:
存放的是一些UI相關的軟件安裝包網絡

packages:
存放的是一些通用的軟件安裝包tcp

1.2. build_dir

build_dir存放的是一些軟件源碼目錄,解壓縮後的程序源碼均放在該目錄,build_dir存在三個目錄分別以下:工具

host子目錄:flex

host子目錄下存放的是開機系統須要的一些工具或程序,好比automake, autoconf, flex, sison, gettext,libtool等ui

target-arm_cortex-a9_uClibc-0.9.33.2_eabi子目錄:url

該目錄下存放的是用過feeds install安裝或者用戶自定義的一些程序好比samba, vsftpd,hostapd,dbus, iperf等等

toolchain-arm_cortex-a9_gcc-4.8-linaro_uClibc-0.9.33.2_eabi子目錄:

該目錄存放的是編譯toolchain所需的一些源碼包,好比linux內核目錄, binutils源碼包,gcc源碼包;

1.3. config

該目錄存放的是一些配置文件

Config-build.in
Config-devel.in
Config-images.in
Config-kernel.in

1.4. dl

軟件源碼包download目錄,經過網絡下載軟件包(.tar.bz2, .tar.gz)均存放在此目錄,通常編譯某個軟件時會今後目錄找對應的軟件源碼包,而後解壓到指定的源碼目錄中;
若是此目錄沒有對應軟件的源碼包,則根據此軟件Makefile文件中指定的網絡地址去下載,下載好的軟件包會自動存放在該目錄;

1.5. docs

文檔目錄,目前此目錄下存放的也是代碼,須要使用latex編譯輸出PDF後才能夠閱讀;

1.6. feeds

相關資源存放目錄;

1.7. include

該目錄存放的是編譯時所須要的一些通用的Makefile腳本;
編譯時會include到該目錄中的makefile腳本

1.8. logs

1.9. package

顧名思義該目錄與軟件包有關係,package目錄存放的軟件包或者程序的配置文件,全部程序或者軟件均會被分門別類的存放在package目錄下,子目錄列表以下

base-files  boot  devel  feeds  firmware  kernel  libs  Makefile  network  system  utils

再以網絡相關的程序爲例進行說明,network子目錄下又包含以下目錄

config
配置相關的程序或者軟件,好比firewall

ipv6
ipv6協議相關的資料

services
網絡服務相關的軟件或者程序,好比hostapd, samba, odhcpd等等

utils
存放的是網絡調試相關的一些工具,好比iperf, iw, tcpdump,等等

對於某一個指定的軟件包目錄,內部主要包含兩個文件,
一個是Makefile,內部包含着軟件的名字和版本,以及下載該軟件包服務器網絡地址;
另外一個是patch目錄,下載好對應版本的軟件包後,打上對應的patch;
最後一個是files目錄,
該目錄存放的是此程序的默認配置文件;

說明:Makefile是必須具有的文件,而patch和file目錄並不是必選項,根據軟件狀況無關緊要

1.10. scripts

該目錄存放的是一些程序的腳本,

用戶能夠經過./script/feeds search/install 進行搜索或者安裝相關軟件;

1.11. staging_dir

stage_dir目錄存放的子目錄以下:
host
目前字母存放的輸出文件爲X86格式的,暫不清楚具體做用;

target-arm_cortex-a9_uClibc-0.9.33.2_eabi
該子目錄主要存放的是編譯出來的根文件系統,即rootfs

toolchain-arm_cortex-a9_gcc-4.8-linaro_uClibc-0.9.33.2_eabi
該子目錄存放的是編譯好的toolchain目錄樹,

1.12. target

1.13. tmp

1.14. toolchain

OpenWrt編譯toolchain時依賴的Makefile以及配置文件存放目錄;

1.15. tools

tools目錄相似於packages目錄,只不過該目錄存放的是系統必須的一些程序或者軟件的配置文件目錄;

2.經過feeds編譯程序

在openwrt的根目錄下有feeds.conf或者feeds.conf.default文件,裏面的內容相似以下

src-git base https://git.openwrt.org/openwrt/openwrt.git^412d80c                                                                                                                      
src-git packages https://git.openwrt.org/feed/packages.git^76ebe2b
src-git luci https://git.openwrt.org/project/luci.git^84692e5
src-git routing https://git.openwrt.org/feed/routing.git^e5fe4b6
src-git telephony https://git.openwrt.org/feed/telephony.git^16bad9e

以第一行爲例,src-git base https://git.openwrt.org/openwrt/openwrt.git^412d80c,它包含3個部分,src-git,baseurl,它的意思是base模塊的代碼要經過giturl處下載。

2.1更新/下載

./scripts/feeds update packages luci    //對應feeds.conf文件的第二列的模塊
./scripts/feeds update -a               //下載全部模塊

這時會把文件檢出到feeds目錄下,下一步就是安裝:

./scripts/feeds install feeds/base/package/devel/gdb //這裏我要安裝gdb

執行完這裏,腳本會把gdb編譯時全部依賴在package/feeds/base創建一個同名符號連接,連接到feeds對應的目錄下

2.2配置

使用make menuconfig配置你要編譯的模塊是何種安裝方式。

2.3編譯安裝

make package/feeds/base/gdb/{clean,prepare,compile,install} V=99

clean,prepare,compile,install各個階段會作不一樣的動做,好比prepare可能就會拉源碼包下來,到dl目錄,install就會將ipk安裝到bin對應的目錄下。

相關文章
相關標籤/搜索