OpenWrt項(xiàng)目是一個針對嵌入式設(shè)備的Linux操作系統(tǒng)。OpenWrt不是一個單一且不可更改的固件,而是提供了具有軟件包管理功能的完全可寫的文件系統(tǒng)。這使您可以從供應(yīng)商提供的應(yīng)用范圍和配置中解脫出來,并且讓您通過使用適配任何應(yīng)用的軟件包來定制設(shè)備。對于開發(fā)人員來說,OpenWrt是一個無需圍繞它構(gòu)建完整固件就能開發(fā)應(yīng)用程序的框架; 對于普通用戶來說,這意味著擁有了完全定制的能力,能以意想不到的方式使用該設(shè)備。
以往路由器固件都是廠家維護(hù),主要完成了路由功能,其他功能聊勝于無,并且更新很慢。因此OpenWrt項(xiàng)目的出現(xiàn),給這個自由的時代又添上了美好的一筆。
正因?yàn)镺penWrt項(xiàng)目有著非常豐富的插件應(yīng)用,可根據(jù)需求自行選擇,極大符合著我開頭描述的需求,也減少了我后期需求變更帶來的折騰。
原版固件里件很多插件是不含的,需要自己去網(wǎng)上找,然后自己集成進(jìn)去。如果編譯報錯的話,需要自己debug。
Lean大佬根據(jù)原版OpenWrt項(xiàng)目,整合了很多插件,并且可根據(jù)自己需求進(jìn)行選擇整合成自己的固件。
由于個人只是小白,沒得選,必須得跟隨Lean大的步伐。
下載源代碼,輸入以下命令"git clone https://github.com/coolsnowwolf/lede"
如果速度較慢,可通過碼云中轉(zhuǎn)方式下載,具體方法:https://www.pianshen.com/article/6039902828/ 可以直接去碼云的鏡像站點(diǎn)https://gitee.com/mirrors,搜索一下lede,找一個lede鏡像站點(diǎn)來使用就可以。直接地址替換就可以。可是實(shí)測發(fā)現(xiàn),下載源碼可以從鏡像站,但是更新并安裝feed還是走的github,不知道這個是不是沒有多大意義。
進(jìn)入目錄,輸入以下命令"cd lede";
以下方式二選一
下載倉庫方式:命令行輸入以下命令"git clone https://github.com/fw876/helloworld.git package/lean/luci-app-ssr-plus"
添加feeds方式:命令行輸入以下命令"echo 'src-git helloworld https://github.com/fw876/helloworld' >>feeds.conf.default"
兩種方式區(qū)別:下載倉庫方式只用來編譯,添加feeds方式還會把鏈接放到路由器的"軟件包"“軟件源”里,建議用下載倉庫方式
命令行輸入以下命令"./scripts/feeds update -a "
命令行輸入以下命令"./scripts/feeds install -a "
生成配置界面,命令行輸入以下命令"make menuconfig"
配置界面
根據(jù)路由器的平臺和架構(gòu),在 Target System(目標(biāo)系統(tǒng)類型,即路由器CPU架構(gòu))、Subtarget(子目標(biāo),即路由器芯片型號)、Target Profile(目標(biāo)文件, 即路由器型號) 中選擇相應(yīng)的選項(xiàng)。
--進(jìn)入后空格用來確定選擇,*是選中編譯進(jìn)固件, M是編譯但是不安裝進(jìn)固件里,連續(xù)esc esc是返回到上一菜單
我的是K2P,按以下選擇:
Target System 選擇 MediaTek Ralink MIPS
Subtarget 選擇 MT7621 based boards
Target Profile 選擇 Phicomm K2P
下面三項(xiàng),在開始編譯可以按默認(rèn)的來,等熟悉后再根據(jù)需要選擇。
Target Images中勾選需要的固件格式等,個人按默認(rèn)了并去掉了vmdl格式
IPv6支持,需要在Extra packages里勾選ipv6helper,默認(rèn)會把所有ipv6需要的組件都選上的
最重要的插件部分,進(jìn)入 Luci - Applications 選擇需要的插件,這里由于種種原因,各位可參考恩山大佬整理的插件列表進(jìn)行選擇性安裝,地址:https://www.right.com.cn/forum/thread-344825-1-1.html
'*’ 代表編入固件,'M’ 表示編譯成模塊或者IPK包, '空’不編譯
配置完成后光標(biāo)移動到 Save ,回車保存為.config文件。
在windows子系統(tǒng)下,.config文件默認(rèn)保存路徑為:C:\Users\用戶\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\用戶\lede
先說結(jié)論:我嘗試2次本地編譯都失敗了,所以各位還是優(yōu)先選擇在線編譯,因?yàn)楸镜丨h(huán)境中網(wǎng)絡(luò),會導(dǎo)致部分dl庫下載不成功,并且電腦需開機(jī)2~3個小時,而在線編譯的話,用的是微軟的服務(wù)器,不存在網(wǎng)絡(luò)問題,也不會有時間和用電的浪費(fèi)。
下載dl庫,輸入以下命令"make -j8 download V=s"(需要下載很久)
編譯固件,輸入以下命令"make -j1 V=s",(-j1 后面是線程數(shù)。第一次編譯推薦用單線程)
第二次編譯:
cd lede # 進(jìn)入LEDE目錄
git pull # 同步更新L大源碼
./scripts/feeds update -a && ./scripts/feeds install -a # 更新Feeds
rm -rf ./tmp && rm -rf .config # 清除編譯配置和緩存
make menuconfig # 進(jìn)入編譯配置菜單
make -jn V=99 # 開始編譯 n=線程數(shù)+1,例如4線程的I5填-j5
編譯豐富插件時,建議修改下面兩項(xiàng)默認(rèn)大小,留足插件空間。(x86/64)!?。?/span>
Target Images ---> (16) Kernel partition size (in MB) #默認(rèn)是 (16) 建議修改 (256)
Target Images ---> (160) Root filesystem partition size (in MB) #默認(rèn)是 (160) 建議修改 (512)
P3TERX大佬編寫的Actions-OpenWrt項(xiàng)目,使用 GitHub Actions 云編譯 OpenWrt 。可以直接閱讀大佬的使用說明,寫的很詳細(xì)。https://p3terx.com/archives/build-openwrt-with-github-actions.html
以下僅作為個人操作記錄。
進(jìn)入 P3TERX/Actions-OpenWrt 項(xiàng)目頁面:https://github.com/P3TERX/Actions-OpenWrt,點(diǎn)擊頁面中的 Use this template 按鈕。https://github.com/P3TERX/Actions-OpenWrt/generate
填寫倉庫名稱,然后點(diǎn)擊Create repository from template按鈕
經(jīng)過幾秒鐘的等待,頁面會跳轉(zhuǎn)到新建的倉庫,點(diǎn)擊Create new file按鈕
文件名填寫為.config,把配置章節(jié)生成的.config 文件的內(nèi)容復(fù)制粘貼到下面的文本框中
翻到頁面最下方,點(diǎn)擊Commit new file按鈕
(在配置章節(jié)跳過設(shè)置部分插件源的朋友亦可調(diào)過此步驟)提前設(shè)置插件源等環(huán)境,繼續(xù)以helloword插件為例,打開diy-part1.sh并編輯以下內(nèi)容,二選一,對應(yīng)的方式與配置階段的設(shè)置插件源方式保持一致
在 Actions 頁面選擇Build OpenWrt,然后點(diǎn)擊Run Workflow按鈕,即可開始編譯
經(jīng)過2~3小時的在線編譯,編譯結(jié)果為一個壓縮包,下載解壓后得到固件
至此,OpenWrt的固件篇到此結(jié)束了,由衷感受到開源軟件的強(qiáng)大,及各大佬的無私分享,給小白用戶帶來了極大的福利。
雖然都是整理自網(wǎng)上大神的教程,但是在整理和實(shí)踐過程中,本人也是逐漸掌握了lede的編譯方法,也基本理解了每一步代碼的含義。
更多可以參考:
為k2p編譯最新的openwrt固件,lean大源碼:https://www.right.com.cn/forum/thread-4039245-1-1.html
【韓風(fēng)Talk】Openwrt編譯難么?不太難,主要是細(xì)節(jié)?。篽ttps://www.bilibili.com/video/BV1Dv411B7MQ
編譯屬于自己的OpenWrt固件:https://post.smzdm.com/p/ad27vkgn/