1. 程式人生 > >利用OpenWRT的Image Builder修改生成不同大小ROM韌體 4MB改8MB 新增package自定義韌體

利用OpenWRT的Image Builder修改生成不同大小ROM韌體 4MB改8MB 新增package自定義韌體

如果生成的二進位制檔案大小超過了設定的rom大小的話,編譯不會生成相應的bin檔案

很多玩家都會選擇改ROM,比如說很多路由只有4MB ROM 很多人都會選擇改成8MB或者更大,淘寶上亦有很多改好的或者是像GL-iNet這種自己做OpenWRT路由的產品,DIYer不免遇到需要刷OpenWRT官方原版韌體的情況,而此時就會遇到原版韌體是4MB ROM可你已經改成8MB ROM,刷機後導致有4MB的ROM空間無法利用的問題。此時就需要自己修改引數,編譯韌體了。

而網上找到了可以通過修改原始碼的方式來改ROM大小的方法,可是那種方法是下載SVN上的原始碼並修改然後編譯的方法,是最麻煩的方法,需要自己逐步安裝配置編譯環境,下載原始碼等,整個步驟很是繁瑣。

然而其實官方給出了名為Image Builder(Image Generator)的工具包來快捷生成所需韌體,這個工具包已經包含並配置好了所有編譯需要的東西,一條命令即可生成所需的韌體,並且可以通過修改Makefile和一些配置檔案來生成自定義的韌體。

下面逐步介紹通過Image Builder生成自定義韌體的步驟

下載最新的Image Builder

還是開啟OpenWRT的trunk版下載連結:http://downloads.openwrt.org/snapshots/trunk/

以TP-Link WR720N為例,晶片型別為ar71xx,對應的Image Builder的下載連結為:

http://downloads.openwrt.org/snapshots/trunk/ar71xx/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

複製這個連結地址,開啟你的Linux系統(如Ubuntu)的終端,將檔案下載至磁碟上,並解壓,或者使用終端命令:

cd ~

wget http://downloads.openwrt.org/snapshots/trunk/ar71xx/OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

tar -xvjf OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64.tar.bz2

cd OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64/

如果你用的虛擬機器的Linux系統,記得不要再Windows下解壓後拷貝到Linux下,可能會出問題

然後使用以下命令進行編譯:

make image PROFILE=XXX PACKAGES="pkg1 pk2 -pkg3 -pkg4" FILES=files/

共有三個傳遞的引數:PROFILE PACKAGES FILES

PROFILE=XXX是指預定義的Profile,對應你的路由型號,使用一下命令檢視所有的PROFILE:

make info

PAKAGES後面羅列出需要新增到韌體中的額外的包,不填寫的話只包含預定義的需要的最少的包,如果前面以"-"符號開頭的表示不不含這個包,比如說:PACKAGES="luci luci-i18n-chinese -pppox"

而我們希望耍好的韌體預設安裝luci並開啟相關服務以便我們刷機或者重置後直接通過網頁訪問luci介面配置路由等等 此時我們可以新增以下幾個包,有其他需求可自己新增比如說DDNS SAMBA等等:

luci

luci-i18n-chinese    # 中文支援

luci-sgi-uhttpd      # 預設開啟utttpd,刷機後可直接網頁訪問luci

luci-app-qos         # QOS

luci-app-upnp        # UPNP

luci-proto-ipv6      # 向luci新增ipv6相關協議的完整支援

而我們還希望,刷機後可以預設開啟無線(OpenWRT官方韌體預設是不開啟的) 配置好無線和WAN的相關設定 刷完省心 無需再改配置,此時就需要第三個傳遞的引數FILES

可以通過scp命令從當前配置好的路由上下載相關的配置檔案,新增至韌體中來達成,在終端中:

mkdir -p files/etc/config

scp [email protected]:/etc/config/network files/etc/config/

scp [email protected]:/etc/config/wireless files/etc/config/

scp [email protected]:/etc/config/firewall files/etc/config/

期間需要輸入路由器密碼,下載完成後在files資料夾下檢視下載到的檔案

如果需要新增其他的配置檔案,自行執行scp命令即可,格式為:

scp [email protected]路由器IP:配置檔案位置 儲存位置

最後,需要修改ROM大小,在解壓的目錄下,找到:

target/linux/ar71xx(此處替換成自己晶片訊號)/image/Makefile

用文字編輯器開啟Makefile,查詢自己的路由型號,以TPLINK WR720N為例找到以下一行:

$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR720NV3,tl-wr720n-v3,TL-WR720N-v3,ttyATH0,115200,0x07200103,1,4Mlzma))

將結尾處的4Mlzma改為8Mlzma儲存即可,即:

$(eval $(call SingleProfile,TPLINK-LZMA,64kraw,TLWR720NV3,tl-wr720n-v3,TL-WR720N-v3,ttyATH0,115200,0x07200103,1,8Mlzma))

完成以上步驟後可以回到終端,執行make命令生成韌體,如:

make image PROFILE=WL500GP PACKAGES="luci luci-i18n-chinese luci-proto-ipv6 luci-sgi-uhttpd" FILES=files/

如果沒有出現錯誤,就可以在/bin/ar71xx/下找到你相應的bin檔案了

相關推薦

利用OpenWRT的Image Builder修改生成不同大小ROM 4MB8MB 新增package定義

如果生成的二進位制檔案大小超過了設定的rom大小的話,編譯不會生成相應的bin檔案 很多玩家都會選擇改ROM,比如說很多路由只有4MB ROM 很多人都會選擇改成8MB或者更大,淘寶上亦有很多改好的或者是像GL-iNet這種自己做OpenWRT路由的產品,DIYer不

利用qt 訊號槽傳遞定義結構--藉助QVariant

在前面的部落格裡,我介紹了利用Q_DECLARE_METATYPE和qRegsterMetaType來傳遞自定義的結構體。但是這樣做有個缺點:qRegisterMetaType()只能在main()函式裡才能發揮作用。https://blog.csdn.net/Kelvin_Yan/article/

vc++ 不同對話方塊中傳遞資訊的方法(基於定義訊息SendMessage)

也是花了一天時間才搞定的。 背景: 新建了一個基於對話方塊的MFC程式,在主對話方塊中新增tabcontrol控制元件,又新建了兩個Dialog(CDialog1和CDialog2),將它們設為tabcontrol控制元件的子對話方塊。 目的: 兩個子對話方塊之間傳遞訊息,子對話方塊與主對話

【unity學習】利用winmm.dll讀取JoyStick的搖桿情況與按鍵情況,並可以定義繫結函式

目錄 目錄 概述 整體程式碼 詳細說明 結語 概述 因為專案的原因,需要對方向盤、搖桿的資料進行讀取與使用。購買的是市面上比較一般的搖桿,沒有什麼API之類的供開發使用,所以自己寫了兩個指令碼,用來控制和讀取資料。還有很多不足,為了防止之後忘了~不對的地

如何利用rem在移動端不同設備上讓字適應大小

iter war width roi wrap 到手 num params 並且 rem由來:font size of the root element,那麽rem是個單位,單位大小由它第一代老祖宗的font-size的大小決定。現在前端碼農們為了能在各個屏幕上看到

利用反射機制修改Dialog的各文字元件的顏色、字型大小等屬性

作為程式設計師,要想讓元件有與眾不同的效果,必須學會編寫自定義View。 這次我就先從自定義Dialog中元件的基本屬性開始學習。 一個最基本的Dialog: 乍一看視覺效果還可以,但當我們想改變一下標題的文字顏色或者按鈕顏色應該怎麼做呢? 檢

eclipse/myeclipse修改記憶體大小(針對不同大小記憶體設定ini檔案配置)

方法一: 開啟eclipse,選擇Window–Preferences…在對話方塊左邊的樹上雙擊Java,再雙擊Installed JREs,在右邊選擇前面有對勾的JRE,再單擊右邊的“Edit”按鈕, 出現一個 Edit JRE 的對話方塊,在其中的Def

分針網——每日推薦: 根據屏幕大小,加載不同大小的圖片

加載圖片 引言 今天要介紹的東西,很簡單,但是對於前端響應式的時候是個很重要的知識; 我們在用bootstrap這類前端框架時, 雖然頁面局部通過media query實現了,頁面始終無滾

分針網—每日分享: 根據屏幕大小,加載不同大小的圖片

head code kth 針對 ive key 寫代碼 ini reat 引言 今天要介紹的東西,很簡單,但是對於前端響應式的時候是個很重要的知識; 我們在用bootstrap這類前端框架時, 雖然頁面局部通過media query實現了,頁面始終無

VC2010 利用 def 文件生成 dll 文件的方法

urn fontsize std eas fcm rar 文件的 利用 發現 近期有個需求,要生成一個dll 文件。文件裏的函數都是採用 stdcall 函數調用約定,可是不希望函數名被修飾(add 被修飾成 [email protected]/* */)。

利用sys.dm_db_index_physical_stats查看索引大小/碎片等信息

動態 rom 級別 tex 所在 新建 包含 blank detailed 我們都知道,提高sql server的數據查詢速度,最有效的方法,就是為表創建索引,而我們對數據表進行新增,刪除,修改的時候,會產生索引碎片,索引碎片多了,對性能產生很大的影響,索引碎片越多對數據庫

背景圖片利用backgrond-posintion屬性實現不同形式的分割

utf title borde images set absolut font 圖片 charset <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &

根據屏幕大小,加載不同大小的圖片

clas con blog dev tee htm -c script log <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> &

Eclipse4.7使用基礎 修改生成的.java文件模板,添加作者信息與創建時間

file nbsp .com alt gen true clip ref 文件 os :windows7 x64 jdk:jdk-8u131-windows-x64 ide:Eclipse Oxygen Release (4.7.0) referen

利用反射來自動生成簡單的接口文檔

oid null ttr 自動 get 接口測試 hashmap obj exception 一:簡介 以前做項目提供接口時,每一個接口文檔都是手寫,手寫接口文檔有很多不足,比如:寫接口文檔比較消耗時間,參數首字母是小寫,如果將參數直接復制到word文檔,第一個

要求根據RandomStr.java:使用類型轉換生成六位驗證字符串,示例程序每次運 行時,都會生成不同的字符串。

str ima method edi 驗證碼 不同的 [] 類型 直接 1.程序設計思想驗證碼 ①定義一個字符串變量來保存隨機生成的。 ②利用循環產生六位隨機數,在產生每一位時將其轉換為char類型並寫在字符串後面。 ③利用對話框顯示生成的驗證碼,並提示用戶輸入驗證碼。 ④

java中如何使用空參構造方法自動生成不同名字的對象,使用非靜態的屬性和靜態屬性有什麽區別,原因是什麽?如何理解static關鍵字

區別 關鍵字 內部 方法 屬性 count per setname person 空參構造自動生成對象時,使用非靜態的屬性 代碼: package com.swift; //使用無參構造方法自動生成對象,序號不斷自增 public class Person { p

VC2010 利用 def 文件生成 dll 文件的方法 轉載

gravity nts lib toc -m fontsize _stdcall string tool 最近有個需求,要生成一個dll 文件,文件中的函數都是采用 stdcall 函數調用約定,但是不希望函數名被修飾(add 被修飾成 add@8)。這時就要用def 文件

android studio 利用gradle和cmakelist生成c++靜態庫.a的方法總結

nts 需求 roi ++ build mat 頭文件 方法 ext android生成靜態庫的方法有兩種,一種是編輯android.mk文件,一種是編輯cmakelist文件。前一種沒做研究,因為用的ide是android studio,所以直接利用gradle調用cma

利用Google API快速生成QR二維碼

int char 利用 utf return 包含 尺寸 ret pre //laravel public function index(){ $urlToEncode="http://www.baidu.com"; $this ->