openwrt內核源碼
Ⅰ openwrt怎麼編譯自定義內核模塊啊
開發環境為ubuntu.首先搭建編譯環境。
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev gawk asciidoc libz-dev git-core build-essential libssl-dev
下面就是下載源碼,源碼分兩種,一種是最新版但不穩定,就是trunk版,一種是相對穩定版,
如果不是最新下載,最好定期更新代碼,命令為
./scripts/feeds update –a
./scripts/feeds install –a
接著就是編譯了。編譯方法如下:
make defconfig
make menuconfig進入定製界面,選擇自己的設備類型。
make V=99
下面就是增加內核模塊的方法了
進入package目錄,創建模塊目錄
cd backfire/package
mkdir example
進入example目錄,創建Makefile文件和代碼路徑
cd example
touchMakefile
mkdir src
Ⅱ 如何編譯OpenWrt
搭建編譯環境。編譯建議在linux下進行。我的系統是Linux mint 17,執行以下命令,構建編譯環境:
sudo apt-get update
sudo apt-get install git-core build-essential
獲取openwrt源碼。在當前用戶主目錄下執行
git clone git://git.openwrt.org/openwrt.git
等待代碼下載。結束後,目錄下會出現openwrt文件夾。
配置軟體源。進入openwrt目錄,執行
./scripts/feeds update -a
./scripts/feeds install -a
檢查編譯環境是否完整:
make defconfig
make prereq
根據提示信息安裝需要的軟體包。如果提示類似
「tmp/.config-package.in:22022:warning: multi-line strings not supported」
的信息,打開 openwrt/tmp/.config-package.in,定位到對應行,添上丟掉的一個引號就可以了。
編譯選項:
執行 make menuconfig,根據路由器情況,選擇 Target System 和 Subtarget。如意雲一代和極壹S的 Target System 均為 Ralink RT288x/RT3xxx 。對於Subtarget ,前者為 MT7620n based boards ,後者為 MT7620a based boards。
其他選項根據個人喜好選擇。一般來說要選中LuCI界面,選中中文語言包等等。
開始編譯:
執行 make -j2 V=s 進行編譯。-j後面的數字是電腦物理CPU數量加一。V=s可以顯示出編譯的詳細信息。首次編譯大概需要幾個小時的時間。
錯誤排查:
編譯失敗,一般有兩種情況:
1.代碼下載鏈接失效。首次編譯時,編譯程序會實時從網上下載一些軟體包的代碼。如果下載鏈接失效,編譯就會失敗。這時需要根據軟體包的名稱,從網上自行下載,然後放在 openwrt/dl/ 目錄下,執行 make -j2 V=s 繼續編譯即可。
2.軟體包自身有問題。這時重新執行 make menuconfig ,取消對應軟體包選中即可。這種情況比較少見,目前已知的有 tor 等。
編譯成功,但沒有生成固件。這種情況一般是因為選中的軟體包過多,導致固件大小超過16MB。重新執行 make menuconfig,去掉一些軟體包,重新執行編譯即可。
得到固件。在排除了所有錯誤後,現在終於得到了固件。對於如意雲RY-1,固件在 openwrt/bin/ramips 目錄下,形如
openwrt-ramips-mt7620n-rt-n14u-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-mlw221-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wr8305rt-squashfs-sysupgrade.bin
等等。
Ⅲ OpenWrt教程-如何在OpenWrt系統中添加一個Linux內核模塊
linux內核支持動態載入模塊,內核模塊以.ko為後綴,在Linux系統中,內核模塊放在/lib/molex/x.x.x目錄中,其中x.x.x為linux版本號
載入模塊
insmod xxx.ko
如果帶參數 insmod xxx.ko a=1
卸載模塊
rmmod xxx.ko
支持的數據類型
bool :布爾類型
invbool:顛倒了值的bool類型;
charp :字元指針類型,內存為用戶提供的字元串分配;
int :整型
long :長整型
short :短整型
uint :無符號整型
ulong :無符號長整型
ushort :無符號短整型
內核模塊源碼Makefile編寫格式和linux源碼的格式一樣
在OpenWrt系統中,內核模塊編譯和應用層的package編譯類似
make package/模塊名/compile V=s
比如:
make package/hello_kernel/compile V=s
編譯完成後會生成.ko文件,目錄文件在build_dir中,但和應用層的build目錄有點區別,內核模塊的package放在linux目錄,如(X86平台):
build_dir/target-x86_64_musl/linux-x86_64/
將編譯完成的ko文件傳輸到OpenWrt系統中,注意編譯平台和開發板平台的系統架構要一致。
Ⅳ openwrt是什麼系統 openWRT的優勢及版本簡介
OpenWrt 項目由 2004 年 1 月開始, 第一個版本是基於 Linksys 提供的 GPL 源碼及 uclibc 中的 buildroot 項目, 這個版本稱為 「stable」 版, 在網上至今仍有很多項目使用這個版本, 較為有名 Freifunk-Firmware 和 Sip@Home.
到了2005年初, 一些新的開發人員加入了這項目, 幾個月後他們釋出了第一個 「experimental」 版本, 這和以前版本不同的是, 這版本差不多完全舍棄了 Linksys 的 GPL 源碼, 使用了 buildroot2 作為核心技術, 將 OpenWrt 完全模塊化,OpenWrt 使用 Linux 正式發行的核心源碼(2.4.30),加上了一些補丁和網路驅動,開發隊伍更為OpenWrt添加了許多免費的工具,可以直接把Image寫入 Flash (mtd)裡面,設定無線功能和VLAN交換功能,這個版本名為「White Russian」,而1.0版本於2005年底公布。
歷史版本
White Russian
OpenWRT的初始版本,從2005年7月的White Russian RC1開始發展,一直到2007年1月才發布White Russian 0.9。[3]
Kamikaze
OpenWRT的第二個版本,從2007年6月開始發布Kamikaze 7.06,一直更新到2010年1月的Kamikaze 8.09.2結束。這期間OpenWRT進行了大量改進,並為它的發展打下了堅實的基礎。[3]
Backfire
2010年03月04日,OpenWrt Backfire 10.03 Beta發布,該版本是開源的路由器固件,基於linux,功能強大,支持很多主流的平台和路由器,甚至支持國內的君正jz4740平台,是學習和開發嵌入式,也是工業、 商業應用理想平台。更新方面: brcm-2.4 更新到 2.4.37 kernel ,other targets 更新到 2.6.30 or 2.6.32 ,arm/mips平台的 gcc 更新到 4.3.3 ,powerpc的gcc更新到 4.4.3 ,uClibc 更新到 0.9.30.1 , Broadcom 11g 晶元組的 b43 無線網卡驅動更新到 2.6 kernel ,支持Atheros 11n ath9k ,支持很多新的ar71xx設備,magicbox歸入ppc40x平台 。
2010年03月25日,OpenWrt 發布 Backfire 10.03-rc1,支持國內留下的 tp-link最新多款11n的路由器,是不是想讓路由器支持萬能中繼呢,或者增加路由器的多wan口支持呢,更多的這些高端路由才有的功能,或許能 讓家用路由輕松具備。
2010年04月07日,OpenWRT放出Backfire 10.03正式版。
2010年08月29日,OpenWRT放出了Backfire 10.03.1。修正了很多BUG,提高了兼容性。TP-LINK WR841N v2 已經可以正常使用了,包括無線部分和上網部分。 自rc1之後的變動:改進了防DNS重綁定攻擊,改進了uhttpd穩定性, Rootfs生成修復(Orion景象),修正了基於BRCM47XX的PCI初始化,添加了rtl8366 vlan 改變的 整合腳本,還原了一般x86鏡像 GRUB控制台,提高了ar71xx系列乙太網驅動程序性能,添加了ar7240 交換機驅動,一些swconfig 和 交換機驅動的改進,RDC 使用啟動載入器支持波特率,允許原生HID 支持 通過添加 kmod-input-hid,6in4:適當的處理了PPPoE連接並且修復了終端隧道更新。
Attitude Adjustment
於2013年4月25日放出。相對於Backfire版本,Attitude Adjustment將內核更新至linux 3.3,改進了網路配置方法,並添加了諸多新特性,例如對IPv6的初步支持。同時,這個版本也改善了防火牆,更新了許多新的驅動,並添加了許多新的支持的型號。對ramips、bcm2708(即樹莓派)等方案提供了支持。[4]
Barrier Breaker
於2014年10月2日放出。Barrier Breaker更新了3個RC版本,相對Attitude Adjustment,其內核升級至 3.10,添加了原生IPv6支持;改進了文件系統,添加了nand快閃記憶體的系統更新,並支持文件系統的快照和回滾;UCI配置工具也得以改進,支持測試性配置並允許將配置回滾至上一次穩定工作的狀態;加強了網路功能,對動態防火牆規則、空間等添加了支持。這個版本相當穩定。
Ⅳ 如何在openwrt系統內核源碼中添加列印語句
內核對於mac80211的代碼跟進比較謹慎,openwrt一般使用比較新的mac80211源碼(即自帶的源碼)來生成對應的kmod模塊,而不使用內核源碼包中的mac80211,這就是我在內核源碼包中的mac80211中進行修改時沒有產生效果的原因。隨後,我在內核源碼包同級的目錄下找到了openwrt自帶的mac80211(compat-wireless),在這里進行修改,就可以了。要列印的語句就出現了在kernel log中了。
Ⅵ 如何編譯OpenWrt
准備工作
在開始編譯Openwrt之前需要您做些准備工作;與其他編譯過程一樣,類似的編譯工具和編譯環境是必不可少的:
一個構建OpenWrt映像的系統平台,簡單說就是准備一個操作系統(比如Ubuntu、Debian等);
確保安裝了所需的依賴關系庫, (在debian系統中就是安裝各種需要的軟體包)
OpenWrt源代碼副本
首先, 開機登陸到支持編譯Openwrt的操作系統(廢話了)。實體機或者虛擬機(Vmware 或者 Qemu)里的操作系統都行,這里推薦使用Linux系統。 bsd和mac osx系統也可以編,但不推薦,且未驗證是否可編譯成功。下文假定您使用的是Debian操作系統,使用 apt-get 來管理包. 替代的選擇是 Ubuntu (分支 Kubuntu, Xubuntu 等即可)。
第二步, 就是安裝所需要的各種軟體包, 包括編譯器,解壓工具,特定的庫等. 這些工作可以簡單的通過鍵入以下命令 (通常需要root 或者是 sudo 許可權),以root許可權安裝下列軟體包(可能並不完整,會有提示,提示缺少即裝就可以了):
32位(x86)請執行下列命令:
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev
64位(x86_64)請執行下列命令(多裝了哪些庫或軟體包呢?請您仔細看一看哦):
# apt-get install build-essential asciidoc binutils bzip2 gawk gettext \
git libncurses5-dev libz-dev patch unzip zlib1g-dev ia32-libs \
lib32gcc1 libc6-dev-i386
參考 本列表中 所列的編譯環境所需要軟體包或庫。
某些依賴的為庫或軟體包也許操作系統中已經安裝過,此時apt-get會作出提示(提示您忽略或重新安裝的),別緊張,放輕鬆些,編譯Openwrt不會像編譯DD-WRT那樣難的(至少本人是體會到了編譯DD-WRT的難)。
最後下載一份完整的 Openwrt 源碼到編譯環境中。關於Openwrt的源代碼下載,途徑有二,一是通過 svn ,一是通過 git,建議使用 svn ,因為Openwrt主要以 svn 來維護Openwrt系統的版本。另外,請注意Openwrt中不同的分支版本,一個是用得較多的開發快照,俗稱 trunk,二是穩定版,俗稱 backfire。