概述
OpenWrt 可以被描述為一個嵌入式的 Linux 發行版,(主流路由器固件有 dd-wrt,tomato,openwrt三類)而不是試圖建立一個單一的、靜態的系統。OpenWrt的包管理提供了一個完全可寫的文件系統,從應用程序供應商提供的選擇和配置,並允許您自定義的設備,以適應任何應用程序。對於開發人員,OpenWrt 是使用框架來構建應用程序,而無需建立一個完整的固件來支持;對於用戶來說,這意味着其擁有完全定制的能力,可以用前所未有的方式使用該設備。
如果對Linux系統有一定的認識, 並想學習或接觸嵌入式 Linux 的話, OpenWRT很適合。 而且OpenWRT支持各種處理器架構,無論是對ARM,X86,PowerPC或者MIPS都有很好的支持。 其多達3000多種軟件包,囊括從工具鏈(toolchain),到內核(linux kernel),到軟件包(packages),再到根文件系統(rootfs)整個體系,使得用戶只需簡單的一個make命令即可方便快速地定制一個具有特定功能的嵌入式系統來制作固件。
一般嵌入式 Linux 的開發過程, 無論是 ARM, PowerPC 或 MIPS 的處理器, 都必需經過以下的開發過程:
1、 創建 Linux 交叉編譯環境;
2、建立 Bootloader;
3、移植 Linux 內核;
4、建立 Rootfs (根文件系統);
5、安裝驅動程序;
6、安裝軟件;
熟悉這些嵌入式 Linux 的基本開發流程后,不再局限於 MIPS 處理器和無線路由器, 可以嘗試在其它處理器, 或者非無線路由器的系統移植嵌入式 Linux, 定制合適自己的應用軟件, 並建立一個完整的嵌入式產品。
編譯openwrt
下載openwrt
下面是我個人拉的一個openwrt分支,項目通過repo(Repo工具使用 - whilewell - 博客園)進行管理下載,代碼均放在碼雲上面。整套代碼編譯完成后占用16G左右的空間。
也可以下載openwrt官方的tags代碼, 該代碼中不包含組件源碼,所以在第一次編譯的時候需要從外網下載源碼包,編譯的時間會特別特別的久。
mkdir openwrt && cd openwrt
repo init -u https://gitee.com/whilewell/manifest.git -b master -m openwrt.xml --no-repo-verify --repo-url=https://gitee.com/whilewell/git-repo.git --repo-branch=master
repo sync -c -j4
下載完成后,代碼結構:其中dl
,feeds_dl
,topdir
,.repo
非原生,個人添加
編譯openwrt
1. 下載feeds
./scripts/feeds update -a
./scripts/feeds install -a
2. 進行配置
make menuconfig
執行下面編譯命令后,會彈出交互窗口來進行配置,選擇需要修改的編譯選項:
Target Systme
:X86
Target Images
:vmdk
luci
:開啟
配置完成后,在代碼根目錄會生成一個.config
文件,這就是所有代碼的配置參數。
4. 然后執行下面命令,下載開源組件【過程可選】:該過程默認包含在make -j4 V=s
過程中,單獨執行可以確認下載過程中的問題
- 如果使用官方源碼,下載時間會比較久,個人拉的分支可以節省很多時間
- 也可以復制我分支中dl目錄下的源碼到個人項目中
- 如果
make menuconfig
中選擇了其它特性, 可能會存在下載新開源組件的可能
make download -j4 V=s
5. 開始編譯:也可以通過make -j4 V=s 2>&1 | tee build_log
來記錄編譯過程的日志
make -j4 V=s
編譯完成后的目錄結構:其中bin
,build_dir
,feeds
,staging_dir
,tmp
目錄為編譯新增
6. 取出編譯生成的openwrt鏡像文件:openwrt-x86-generic-generic-squashfs-combined.vmdk
wsk@wsk:~/openwrt$ find ./ -name "*vmdk"
./bin/targets/x86/generic/openwrt-x86-generic-generic-squashfs-combined.vmdk
./bin/targets/x86/generic/openwrt-x86-generic-generic-squashfs-combined-efi.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-squashfs-combined.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-ext4-combined.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-squashfs-combined-efi.vmdk
./build_dir/target-i386_pentium4_musl/linux-x86_generic/tmp/openwrt-x86-generic-generic-ext4-combined-efi.vmdk
安裝openwrt
1. 創建openwrt虛擬機
2. 加載openwrt虛擬機
配置openwrt
配置地址
vm配置
選擇Nat模式后,在openwrt中還可以上網
openwrt配置
uci set network.lan.proto=dhcp
uci commit network
/etc/init.d/network restart (此過程可選)
reboot
查看ip地址
終端中輸入ip addr
后,br-lan端口下面顯示的192.168.83.130
就是ip地址,后面可以通過該地址進行訪問
訪問openwrt
webui訪問
訪問http://192.168.83.130
地址(其中的ip地址是通過上面過程獲取),然后可以在里面做一些配置操作。
終端訪問
鏈接192.168.83.130
地址22
端口即可登錄(密碼是webui首次登錄的passwd)