(Linux)- OpenWrt 的安裝與設定 ( 編譯 & 刷機 & 使用 )
(Linux)- OpenWrt 的安裝與設定 ( 編譯 & 刷機 & 使用 )
OpenWrt 學習與安裝的門檻比較高,本文提供如何安裝與編譯。
一、什麼是 OpenWrt
Cisco/Linksys 在 2003 年發佈了 WRT54G 這款無線路由器,同年有人發現它的 IOS 是基於Linux 的,然而 Linux 是基於 GPL 許可證發佈的,按照該許可證 Cisco 應該把WRT54G 的 IOS 的源代碼公開。2003 年 3 月, Cisco 迫於公衆壓力公開了 WRT54G 的源代碼。此後就有了一些基於 Cisco 源碼的第三方路由器固件,OpenWrt 就是其中的一個。
1.1 OpenWrt 的特點:
可擴展性好,可以在線安裝您所需要的功能,目前有 1000 多個功能包可選;
是一臺完整的 Linux 工作站,文件系統可讀可寫,便於開發者學習和實踐;
1.2 OpenWrt 使用心得:
最近在網上買了一台二手 ( 2012 年的產品了 ) 的分享器,當時算是中高階的產品,使用上不是太穩定,剛好用來學習與安裝 OpenWrt。
1.2.1 分享器很早就被前使用者安裝了 DD-WRT ,筆者使用快 1 個月,連線品質還可以就是有些差強人意的感覺。OpenWrt 使用快 2 週了,雖然後續沒再去做測試,但感覺真的非常穩定。
1.2.2 OpenWrt 的編譯過程是非必須的,一般的路由都可找到可用的穩定固件直接刷機使用。使用上己非常的方便 ( 可直接看第三部分 )。
二、OpenWrt 編譯
第一部分:搭建編譯環境
1、安裝 Ubuntu(編譯需要 Linux 環境,筆者是使用 debain 來操作的。),到其官網下載,版本根據自己所需選擇即可。可以選擇安裝到虛擬機或者物理機,圖形化安裝而且是中文版,連安裝都搞不定的,可以關閉本頁面了。
2、切記不要改動軟件源,同時按住Ctrl + Alt + T,調出終端;
3、逐條輸入下列命令(及時驗證是否安裝成功):
sudo apt-get install g++
sudo apt-get install libncurses5-dev
sudo apt-get install zlib1g-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install unzip
sudo apt-get install autoconf
sudo apt-get install gawk
sudo apt-get install make
sudo apt-get install gettext
sudo apt-get install gcc
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install libz-dev
sudo apt-get install asciidoc
sudo apt-get install subversion
sudo apt-get install sphinxsearch
sudo apt-get install libtool
sudo apt-get install sphinx-common
sudo apt-get install libssl-dev
sudo apt-get install libssl0.9.8
至此編譯環境搭建完成。
第二部分:下載 OpenWrt 源碼並編譯
OpenWrt 源碼分兩種,一種是最新但不是最穩定的 Trunk 開發版,一種是最穩定的 Backfire 版,建議下載官方源碼。
1. 下載 OpenWrt 前先在本地創建文件夾:
mkdir openwrt
sudo chmod 777 openwrt
cd openwrt
2. 選擇想要的版本然後執行下載命令,下載結束會顯示版本號:
Trunk版下載命令:
svn co svn://svn.openwrt.org/openwrt/trunk/
Backfire版下載命令:
svn co svn://svn.openwrt.org/openwrt/branches/backfire/
3. 添加軟件擴展包,將 feeds.conf.default 修改爲feeds.conf:
cp feeds.conf.default feeds.conf
4. 更新擴展,安裝擴展:
./scripts/feeds update -a
./scripts/feeds install -a
PS:如果不是剛下載的源碼,爲保持代碼爲最新狀態,應定期運行 svn update 命令更新源碼。
5. 測試編譯環境:
make defconfig
到這裏就可以開始編譯自己的固件了。進入定製界面:
make menuconfig
如果一切正常,會出現一個配置菜單,可以選擇要編譯的固件平臺(芯片類型)、型號,還能選擇固件中要添加的功能和組件,配置好後保存並退出菜單即可。
如果想修改源碼,應該在此步進行,如支持大容量 Flash 之類的修改,自己上網查到修改什麼文件什麼地方後,就在 ubuntu 圖形界面上進去找到文件,雙擊打開文本編輯器修改保存。
開始編譯:
make
或者
make V=99
或者
make -j V=99
PS:make 是編譯命令,V=99 表示輸出 debug 信息,V 一定要大寫,如果要讓 CPU 全速編譯,就加上 -j 參數,第一次編譯最好不帶 -j 參數。
編譯過程保持聯網(會從網上下載一些源碼包),所以斷網可能造成編譯中斷,編譯所需時間與電腦 CPU 及網絡環境有很大關係,第一次編譯時間較久,快則半小時長則2、3個小時,之後的編譯所需時間較短。編譯完成後會在源碼文件目錄出現 bin 文件夾(如 trunk / bin / XXXX),如果你手裏的路由是原版固件需要刷 OpenWrt 需要選用XXX-factory.bin 固件,如果路由已經刷了 OpenWrt,選用升級固件 XXXX-sysupgrade.bin 升級用的,在升級界面升級即可。進到文件夾找到你需要的固件傳出(通過郵箱、網盤、U 盤等),之後就可以開始刷機了。
第三部分:將 OpenWrt 刷入路由器
要在路由器上使用 OpenWrt,首先要將路由器固件刷新爲 OpenWrt,即相當於 OpenWrt 系統的安裝,不同型號的路由器的安裝方法可能也會不一樣,但一般常用的有三種方法:
Web 上傳固件更新
PFTP 上傳固件更新
編程器寫入固件
具體型號的路由器適用於哪種或哪幾種方法,需自行嘗試。
第四部分:開始使用 OpenWrt
要對 OpenWrt 進行配置,一般有兩條途徑:
SSH 登錄通過命令行控制
Web登錄通過 Web 界面設置
4.1 首次安裝 OpenWrt 後,需要設置密碼才可以使用 SSH 登錄,方法是使用 telnet 登錄或者 Web 登錄設置密碼。
在 Windows 下面 telnet 和 SSH 登錄可以使用 Putty,在 Linux 或 Mac 下可分別使用如下命令:
ssh –l root 192.168.1.1 //Linux
ssh [email protected] //Mac
4.2 一般指令與常見 Linux 發行版相同,但是 OpenWrt 使用自己的包管理器:opkg,使用 ” opkg –help ” 查看幫助信息。以下是一些常用操作命令:
opkg update //更新軟件包列表
opkg install //在線安裝軟件包
opkg remove //移除軟件包
登錄 Web 管理界面,前提是該 OpenWrt 系統中要安裝了 Web 界面,一般是 Luci,登錄方式與普通路由器無異,打開瀏覽器,輸入路由器 IP 即可進入登錄界面,OpenWrt 的默認 IP 是 192.168.1.1。
到此,OpenWrt 的大門已敞開。接下來,開始嘗試利用 OpenWrt 實現更多智能應用吧,比如單號多撥榨取運營商帶寬、綁定域名遠程控制、掛載大容量硬盤、搭建 BT 下載機、搭建網絡攝像頭、Samba/ DLNA 家庭 NAS 共享、私有雲同步、FTP、個人網站/服務器…
三、第二部分的 OpenWrt 編譯詳細說明
make 做為 trunk 版本的編譯命令,只能在 trunk 目錄執行,進入配置菜單界面,鍵盤上下是移動光標,左右是選擇底部按鍵,Enter 是確認,空格是設置選擇模式,選項最前面的選擇模式有 [ * ] 表示編譯進固件,[ M ] 表示編譯成安裝包,[ ] 表示不選擇,esc 是返回上級菜單,按 ? 是幫助,按 / 是搜索。
3.1 openwrt 的源碼獲取
自己看 openwrt 的源碼獲取方法
https://dev.openwrt.org/wiki/GetSource
搜索結果說明:
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 會被自動一起選中
3.2 重置配置
選擇配置菜單界面底部的重置菜單項 ” Reset to Defaults “,恢復默認所有選擇模式;
3.3 選擇組件
3.3.1 這裏僅增加支持 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 功能
3.3.2 其它可選擇功能
LuCI
Applications
luci-app-p2pblock ——可增加 Layer 7、ipp2p 支持
Themes
luci-theme-bootstrap ——可增加主題
其它選項一般保持默認就可以。
3.3.3 選擇主菜單最底部 ” Save Configuration to an Alternate File ” 命令保存設置,可以自定義文件名,以方便以後調用。
3.3.4 按兩次 ” esc ” 鍵退出配置菜單界面,提示是否保存,按 Yes 表示把當前編譯設置保存下來。
3.3.5 自定義路由器的默認設置,可進入編譯目錄 /trunk/package/base-file/files/etc/config,修改裏面的配置文件,一般可以不用定義。
3.4 進行編譯
3.4.1 輸入以下命令開始編譯
make V=99
V=99 參數表示輸出詳細的 debug 信息;編譯時得保持聯網在線,因爲會下載很多數據包(放在 ./dl 目錄下),而且容量不小,整個過程耗時比較久,一般第一次編譯耗時要一個半鍾到兩個鍾,以後編譯耗時約三十分鐘。
PS:如只想清除/編譯某個模塊,您可以做如下類似操作 make package/qos/clean, make package/qos/compile, make package/qos/install。
3.4.2 編譯成功後,用於刷機的固件會保存在 /home/openwrt/trunk/bin/主控芯片系列/目錄下,有 3 個對應不同刷機模式的 bin 文件:
*factory.bin
*tftp.bin
*sysupgrade.bin
建議馬上備份這三個文件到別的地方,以便用於刷機。
3.5 編譯後繼工作
3.5.1 清除當前編譯作業
make clean
PS:特別注意,這會刪除上面編譯的成果—— bin 文件,需做好備份。
3.5.2 恢復默認編譯環境
make defconfig
================================
添加 wifidog:
在項目下終端:vim feeds.conf.default
增加這一行:src-git wifidog https://github.com/wifidog/wifidog-gateway.git
然後重新:./scripts/feeds update -a
./scripts/feeds install -a
終端執行 make menuconfig 在 Network/captive portals/ 下選擇 wifidog 就有選擇 WiFiDog 這一項了。
免責聲明:
1.本影像檔案皆從網上搜集轉載,不承擔任何技術及版權問題。
2.如有下載連結僅供寬頻測試研究用途,請下載後在24小時內刪除,請勿用於商業。
3.若侵犯了您的合法權益,請來信通知我們,我們會及時刪除,給您帶來的不便,深表歉意。