OpenWRT自定義元件和編譯
阿新 • • 發佈:2019-02-05
(本文以編譯Bufflo WHR-G301N/G300N V2路由器的OpenWRT韌體為例)
1.搭建編譯環境
1.1.準備至少16GB的可用空間,安裝Ubuntu(推薦用Wubi在Windows下安裝,省去重新分割槽的麻煩),語言推薦選擇英文。
1.2.Ubuntu安裝完畢後,點桌面左上角Ubuntu的Logo圖示,輸入“terminal”回車,可開啟終端命令視窗。
1.3.取得更新資訊
sudo apt-get update
1.4.安裝更新元件
搭建編譯環境可能需要安裝如下元件,可逐條輸入以下命令,每個元件的安裝過程中有可能要你回答y/n,
都選擇y:
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get insta`ll bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install subversion
sudo apt-get install git-core
sudo apt-get install gawk
sudo apt-get install libz-dev
sudo apt-get install asciidoc
為了方便,可以在命令的最後面加上“ -y”引數來自動回答,也可以合起來用一行命令來執行:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk libz-dev asciidoc -y
值得注意的是,最後一個asciidoc要下載400-600多MB的壓縮包,下載時間比較久,根據網速的不同,一般要幾十分鐘到一個鐘。
2.編譯前的配置
2.1.新建openwrt目錄
mkdir openwrt
2.2.進入openwrt目錄
cd openwrt
2.5.從官網下載OpenWRT最新原始碼trunk目錄(不同開發代號不同)下載到openwrt目錄中
svn checkout svn://svn.openwrt.org/openwrt/trunk
svn是開源的版本管理系統,特別注意,如果不是第一次編譯,那要先在“trunk”目錄下執行下面第4.1、4.2步驟裡的命令,過後再退回openwrt目錄,重新下載原始碼,才能防止之前的編譯作業影響接下來的編譯。
2.6.為trunk目錄新增如下許可權
sudo chmod -R 777 trunk
2.7.進入trunk目錄
cd trunk
2.8.更新原始碼
./scripts/feeds update -a
2.9.安裝原始碼
./scripts/feeds install -a
2.10.更新版本號
svn up
2.11.生成編譯元件包配置選單
make menuconfig
make作為trunk版本的編譯命令,只能在trunk目錄執行,進入配置選單介面,鍵盤上下是移動游標,左右是選擇底部按鍵,回車是確認,空格是設定選擇模式,選項最前面的選擇模式有[*]表示編譯進韌體,[M]表示編譯成安裝包,[ ]表示不選擇,esc是返回上級選單,按?是幫助,按/是搜尋。
搜尋結果說明:
Symbol: PACKAGE_l7-protocols [=Y]——包的名字,以及有被選中
Dedfined at tmp/.config-package.in:14725——表示這個包概況
Depeds on: \——這個包依賴哪個包
PACKAGE_iptables-mod-filter [=Y]——被依賴的這個包有選中
Location:——指明l7-protocols這包在menuconfig的介面的哪層選單中,方便查詢
-> Network
-> Firewall
Selects: \——可以附帶選擇哪幾個包
Selected by: \——同時選擇以下幾個包,那l7-protocols會被自動一起選中
2.12.重置配置
選擇配置選單介面底部的重置選單項“Reset to Defaults”,恢復預設所有選擇模式;
2.13.選擇元件
這裡僅增加支援IPv6的元件和Web管理介面LuCI,選擇專案如下:
Target System (Atheros AR7xxx/AR9xxx) ————主控晶片
Target Profile (Buffalo WHR-G301N) ————路由器型號
LuCI——Web管理介面LuCI
Collections
luci-ssl ——安全連結
Applications
luci-app-ddns ——動態域名
luci-app-multiwan ——多撥
luci-app-radvd ——IPv6廣播
luci-app-upnp ——upnp埠對映
luci-app-wol ——線上喚醒
Translations
luci-i18n-chinese ——中文語言支援
Protocols
luci-proto-ipv6 ——增加IPv6支援
Server Interfaces
luci-sgi-uhttpd ——自動執行LuCI的服務
Kernel Modules
Network Devices
kmod-macvlan ——為mac虛擬區域網增加核心支援
Network Support
kmod-sched ——為TC命令增加核心支援
Network
tc ——增加TC功能
其它可選擇功能
LuCI
Applications
luci-app-p2pblock ——可增加Layer 7、ipp2p支援
Themes
luci-theme-bootstrap ——可增加主題
2.14.選擇主選單最底部“Save Configuration to an Alternate File”命令儲存設定一下你的設定,可以自定義檔名,以方便以後呼叫。
2.15.按兩次“esc”鍵退出配置選單介面,提示是否儲存,按Yes表示把當前編譯設定儲存下來。
2.16.自定義路由器的預設設定,可進入編譯目錄/trunk/package/base-file/files/etc/config,修改裡面的配置檔案,一般可以不用定義。
3.進行編譯
3.1.輸入以下命令開始編譯
make V=99
V=99引數表示輸出詳細的debug資訊;編譯時得保持聯網線上,因為會下載很多資料包(放在./dl目錄下),而且容量不小,整個過程耗時比較久,一般第一次編譯耗時要一個半鍾到兩個鍾,以後編譯耗時約三十分鐘。
注:如只想清除/編譯某個模組,您可以做如下類似操作make package/qos/clean, make package/qos/compile, make package/qos/install。
3.2.編譯成功後,用於刷機的韌體會儲存在/home/openwrt/trunk/bin/主控晶片系列/目錄下,有3個對應不同刷機模式的bin檔案:
*factory.bin
*tftp.bin
*sysupgrade.bin
建議馬上備份這三個檔案到別的地方,以便用於刷機。
4.編譯後繼工作
4.1.清除當前編譯作業
make clean
特別注意,這會刪除上面編譯的成果——bin檔案,請作好備份。
4.2.恢復預設編譯環境
make defconfig
1.搭建編譯環境
1.1.準備至少16GB的可用空間,安裝Ubuntu(推薦用Wubi在Windows下安裝,省去重新分割槽的麻煩),語言推薦選擇英文。
1.2.Ubuntu安裝完畢後,點桌面左上角Ubuntu的Logo圖示,輸入“terminal”回車,可開啟終端命令視窗。
1.3.取得更新資訊
sudo apt-get update
1.4.安裝更新元件
搭建編譯環境可能需要安裝如下元件,可逐條輸入以下命令,每個元件的安裝過程中有可能要你回答y/n,
都選擇y:
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get insta`ll bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install subversion
sudo apt-get install git-core
sudo apt-get install gawk
sudo apt-get install libz-dev
sudo apt-get install asciidoc
為了方便,可以在命令的最後面加上“ -y”引數來自動回答,也可以合起來用一行命令來執行:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk libz-dev asciidoc -y
值得注意的是,最後一個asciidoc要下載400-600多MB的壓縮包,下載時間比較久,根據網速的不同,一般要幾十分鐘到一個鐘。
2.編譯前的配置
2.1.新建openwrt目錄
mkdir openwrt
2.2.進入openwrt目錄
cd openwrt
2.5.從官網下載OpenWRT最新原始碼trunk目錄(不同開發代號不同)下載到openwrt目錄中
svn checkout svn://svn.openwrt.org/openwrt/trunk
svn是開源的版本管理系統,特別注意,如果不是第一次編譯,那要先在“trunk”目錄下執行下面第4.1、4.2步驟裡的命令,過後再退回openwrt目錄,重新下載原始碼,才能防止之前的編譯作業影響接下來的編譯。
2.6.為trunk目錄新增如下許可權
sudo chmod -R 777 trunk
2.7.進入trunk目錄
cd trunk
2.8.更新原始碼
./scripts/feeds update -a
2.9.安裝原始碼
./scripts/feeds install -a
2.10.更新版本號
svn up
2.11.生成編譯元件包配置選單
make menuconfig
make作為trunk版本的編譯命令,只能在trunk目錄執行,進入配置選單介面,鍵盤上下是移動游標,左右是選擇底部按鍵,回車是確認,空格是設定選擇模式,選項最前面的選擇模式有[*]表示編譯進韌體,[M]表示編譯成安裝包,[ ]表示不選擇,esc是返回上級選單,按?是幫助,按/是搜尋。
搜尋結果說明:
Symbol: PACKAGE_l7-protocols [=Y]——包的名字,以及有被選中
Dedfined at tmp/.config-package.in:14725——表示這個包概況
Depeds on: \——這個包依賴哪個包
PACKAGE_iptables-mod-filter [=Y]——被依賴的這個包有選中
Location:——指明l7-protocols這包在menuconfig的介面的哪層選單中,方便查詢
-> Network
-> Firewall
Selects: \——可以附帶選擇哪幾個包
Selected by: \——同時選擇以下幾個包,那l7-protocols會被自動一起選中
2.12.重置配置
選擇配置選單介面底部的重置選單項“Reset to Defaults”,恢復預設所有選擇模式;
2.13.選擇元件
這裡僅增加支援IPv6的元件和Web管理介面LuCI,選擇專案如下:
Target System (Atheros AR7xxx/AR9xxx) ————主控晶片
Target Profile (Buffalo WHR-G301N) ————路由器型號
LuCI——Web管理介面LuCI
Collections
luci-ssl ——安全連結
Applications
luci-app-ddns ——動態域名
luci-app-multiwan ——多撥
luci-app-radvd ——IPv6廣播
luci-app-upnp ——upnp埠對映
luci-app-wol ——線上喚醒
Translations
luci-i18n-chinese ——中文語言支援
Protocols
luci-proto-ipv6 ——增加IPv6支援
Server Interfaces
luci-sgi-uhttpd ——自動執行LuCI的服務
Kernel Modules
Network Devices
kmod-macvlan ——為mac虛擬區域網增加核心支援
Network Support
kmod-sched ——為TC命令增加核心支援
Network
tc ——增加TC功能
其它可選擇功能
LuCI
Applications
luci-app-p2pblock ——可增加Layer 7、ipp2p支援
Themes
luci-theme-bootstrap ——可增加主題
其它選項一般保持預設就可以。
2.15.按兩次“esc”鍵退出配置選單介面,提示是否儲存,按Yes表示把當前編譯設定儲存下來。
2.16.自定義路由器的預設設定,可進入編譯目錄/trunk/package/base-file/files/etc/config,修改裡面的配置檔案,一般可以不用定義。
3.進行編譯
3.1.輸入以下命令開始編譯
make V=99
V=99引數表示輸出詳細的debug資訊;編譯時得保持聯網線上,因為會下載很多資料包(放在./dl目錄下),而且容量不小,整個過程耗時比較久,一般第一次編譯耗時要一個半鍾到兩個鍾,以後編譯耗時約三十分鐘。
注:如只想清除/編譯某個模組,您可以做如下類似操作make package/qos/clean, make package/qos/compile, make package/qos/install。
3.2.編譯成功後,用於刷機的韌體會儲存在/home/openwrt/trunk/bin/主控晶片系列/目錄下,有3個對應不同刷機模式的bin檔案:
*factory.bin
*tftp.bin
*sysupgrade.bin
建議馬上備份這三個檔案到別的地方,以便用於刷機。
4.編譯後繼工作
4.1.清除當前編譯作業
make clean
特別注意,這會刪除上面編譯的成果——bin檔案,請作好備份。
4.2.恢復預設編譯環境
make defconfig