(本文以编译Bufflo WHR-G301N/G300N V2路由器的OpenWRT固件为例)
1.搭建编译环境
1.1.准备至少16GB的可用空间,安装Ubuntu(推荐用Wubi在Windows下安装,省去重新分区的麻烦),语言推荐选择英文。
1.2.Ubuntu安装完毕后,点桌面左上角Ubuntu的Logo图标,输入“terminal”回车,可打开终端命令窗口。
1.3.取得更新信息
sudo apt-get update
1.4.安装更新组件
搭建编译环境可能需要安装如下组件,可逐条输入以下命令,每个组件的安装过程中有可能要你回答y/n,
都选择y:
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get insta`ll bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install subversion
sudo apt-get install git-core
sudo apt-get install gawk
sudo apt-get install libz-dev
sudo apt-get install asciidoc
为了方便,可以在命令的最后面加上“ -y”参数来自动回答,也可以合起来用一行命令来执行:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk libz-dev asciidoc -y
值得注意的是,最后一个asciidoc要下载400-600多MB的压缩包,下载时间比较久,根据网速的不同,一般要几十分钟到一个钟。
2.编译前的配置
2.1.新建openwrt目录
mkdir openwrt
2.2.进入openwrt目录
cd openwrt
2.5.从官网下载OpenWRT最新源码trunk目录(不同开发代号不同)下载到openwrt目录中
svn checkout svn://svn.openwrt.org/openwrt/trunk
svn是开源的版本管理系统,特别注意,如果不是第一次编译,那要先在“trunk”目录下执行下面第4.1、4.2步骤里的命令,过后再退回openwrt目录,重新下载源码,才能防止之前的编译作业影响接下来的编译。
2.6.为trunk目录添加如下权限
sudo chmod -R 777 trunk
2.7.进入trunk目录
cd trunk
2.8.更新源码
./scripts/feeds update -a
2.9.安装源码
./scripts/feeds install -a
2.10.更新版本号
svn up
2.11.生成编译组件包配置菜单
make menuconfig
make作为trunk版本的编译命令,只能在trunk目录执行,进入配置菜单界面,键盘上下是移动光标,左右是选择底部按键,回车是确认,空格是设置选择模式,选项最前面的选择模式有[*]表示编译进固件,[M]表示编译成安装包,[ ]表示不选择,esc是返回上级菜单,按?是帮助,按/是搜索。
搜索结果说明:
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会被自动一起选中
2.12.重置配置
选择配置菜单界面底部的重置菜单项“Reset to Defaults”,恢复默认所有选择模式;
2.13.选择组件
这里仅增加支持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功能
其它可选择功能
LuCI
Applications
luci-app-p2pblock ——可增加Layer 7、ipp2p支持
Themes
luci-theme-bootstrap ——可增加主题
2.15.按两次“esc”键退出配置菜单界面,提示是否保存,按Yes表示把当前编译设置保存下来。
2.16.自定义路由器的默认设置,可进入编译目录/trunk/package/base-file/files/etc/config,修改里面的配置文件,一般可以不用定义。
3.进行编译
3.1.输入以下命令开始编译
make V=99
V=99参数表示输出详细的debug信息;编译时得保持联网在线,因为会下载很多数据包(放在./dl目录下),而且容量不小,整个过程耗时比较久,一般第一次编译耗时要一个半钟到两个钟,以后编译耗时约三十分钟。
注:如只想清除/编译某个模块,您可以做如下类似操作make package/qos/clean, make package/qos/compile, make package/qos/install。
3.2.编译成功后,用于刷机的固件会保存在/home/openwrt/trunk/bin/主控芯片系列/目录下,有3个对应不同刷机模式的bin文件:
*factory.bin
*tftp.bin
*sysupgrade.bin
建议马上备份这三个文件到别的地方,以便用于刷机。
4.编译后继工作
4.1.清除当前编译作业
make clean
特别注意,这会删除上面编译的成果——bin文件,请作好备份。
4.2.恢复默认编译环境
make defconfig
[完]
1.搭建编译环境
1.1.准备至少16GB的可用空间,安装Ubuntu(推荐用Wubi在Windows下安装,省去重新分区的麻烦),语言推荐选择英文。
1.2.Ubuntu安装完毕后,点桌面左上角Ubuntu的Logo图标,输入“terminal”回车,可打开终端命令窗口。
1.3.取得更新信息
sudo apt-get update
1.4.安装更新组件
搭建编译环境可能需要安装如下组件,可逐条输入以下命令,每个组件的安装过程中有可能要你回答y/n,
都选择y:
sudo apt-get install gcc
sudo apt-get install g++
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install flex
sudo apt-get insta`ll bison
sudo apt-get install make
sudo apt-get install autoconf
sudo apt-get install gettext
sudo apt-get install texinfo
sudo apt-get install unzip
sudo apt-get install sharutils
sudo apt-get install subversion
sudo apt-get install libncurses5-dev
sudo apt-get install ncurses-term
sudo apt-get install zlib1g-dev
sudo apt-get install subversion
sudo apt-get install git-core
sudo apt-get install gawk
sudo apt-get install libz-dev
sudo apt-get install asciidoc
为了方便,可以在命令的最后面加上“ -y”参数来自动回答,也可以合起来用一行命令来执行:
sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev subversion git-core gawk libz-dev asciidoc -y
值得注意的是,最后一个asciidoc要下载400-600多MB的压缩包,下载时间比较久,根据网速的不同,一般要几十分钟到一个钟。
2.编译前的配置
2.1.新建openwrt目录
mkdir openwrt
2.2.进入openwrt目录
cd openwrt
2.5.从官网下载OpenWRT最新源码trunk目录(不同开发代号不同)下载到openwrt目录中
svn checkout svn://svn.openwrt.org/openwrt/trunk
svn是开源的版本管理系统,特别注意,如果不是第一次编译,那要先在“trunk”目录下执行下面第4.1、4.2步骤里的命令,过后再退回openwrt目录,重新下载源码,才能防止之前的编译作业影响接下来的编译。
2.6.为trunk目录添加如下权限
sudo chmod -R 777 trunk
2.7.进入trunk目录
cd trunk
2.8.更新源码
./scripts/feeds update -a
2.9.安装源码
./scripts/feeds install -a
2.10.更新版本号
svn up
2.11.生成编译组件包配置菜单
make menuconfig
make作为trunk版本的编译命令,只能在trunk目录执行,进入配置菜单界面,键盘上下是移动光标,左右是选择底部按键,回车是确认,空格是设置选择模式,选项最前面的选择模式有[*]表示编译进固件,[M]表示编译成安装包,[ ]表示不选择,esc是返回上级菜单,按?是帮助,按/是搜索。
搜索结果说明:
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会被自动一起选中
2.12.重置配置
选择配置菜单界面底部的重置菜单项“Reset to Defaults”,恢复默认所有选择模式;
2.13.选择组件
这里仅增加支持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功能
其它可选择功能
LuCI
Applications
luci-app-p2pblock ——可增加Layer 7、ipp2p支持
Themes
luci-theme-bootstrap ——可增加主题
其它选项一般保持默认就可以。
2.15.按两次“esc”键退出配置菜单界面,提示是否保存,按Yes表示把当前编译设置保存下来。
2.16.自定义路由器的默认设置,可进入编译目录/trunk/package/base-file/files/etc/config,修改里面的配置文件,一般可以不用定义。
3.进行编译
3.1.输入以下命令开始编译
make V=99
V=99参数表示输出详细的debug信息;编译时得保持联网在线,因为会下载很多数据包(放在./dl目录下),而且容量不小,整个过程耗时比较久,一般第一次编译耗时要一个半钟到两个钟,以后编译耗时约三十分钟。
注:如只想清除/编译某个模块,您可以做如下类似操作make package/qos/clean, make package/qos/compile, make package/qos/install。
3.2.编译成功后,用于刷机的固件会保存在/home/openwrt/trunk/bin/主控芯片系列/目录下,有3个对应不同刷机模式的bin文件:
*factory.bin
*tftp.bin
*sysupgrade.bin
建议马上备份这三个文件到别的地方,以便用于刷机。
4.编译后继工作
4.1.清除当前编译作业
make clean
特别注意,这会删除上面编译的成果——bin文件,请作好备份。
4.2.恢复默认编译环境
make defconfig
[完]