版权声明:本文为博主原创文章,转载请注明出处。若博文中有引用侵权,请告知博主。 https://blog.csdn.net/moringrain/article/details/54976048
接触OpenWRT一年时间,大部分都在编译固件、刷机,遇到过不少问题。这里记录下以前摸索的步骤。
op编译过程的wiki:https://wiki.openwrt.org/zh-cn/doc/howto/buildroot.exigence
以下步骤的操作环境为64位的Ubuntu16.04 LTS,路由器型号位ZBT-WA05,OP版本为CC。
注意事项:
1. 请使用一个非root用户来完成这些工作!
2. 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/)
3. 编译系统的绝对路径中不能含有空格!
4. 如果你使用root用户下载了源码,请把你下载来的源码的所有者更改为一个非root用户。(sudo chown -R user:user /openwrt/)
过程:
1、准备工作:安装编译所需的工具,在终端输入
- sudo apt-get update
- sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip
- sudo apt-get install subversion mercurial
- sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
2、下载源码:需准备12GB左右的空间,源码体积百兆左右,但是编译过程中会产生大量文件,会使文件夹体积非常大
大部分SVN都是失效的,所以一些老的教程就不能参考了,这点要注意。要使用git来下载源码。
要下载哪个版本可以参考wiki(上面的链接)以CC版本为例,在主文件夹下执行:
- git clone git://git.openwrt.org/15.05/openwrt.git
3、下载安装可用的“feeds”:上述步骤会产生一个名为openwrt的目录,在终端输入
- cd openwrt
- ./scripts/feeds update -a
- ./scripts/feeds install -a
4、配置编译选项:
- make menuconfig
选择Package the OpenWrt-base Toolchain是为了有搭建交叉编译环境方便,不是必选的。
此外,勾选LuCI(网页形式的控制台)还是非常必要的。要勾选(前面出现*号):
LuCI-->1.Collections-->luci
别忘记勾选中文:
LuCI-->2.Modules-->Translations-->Chinese(zh-cn)
最后Save,退出。
以上是基本的固件编译,如果需要其他功能,要再勾选或添加。
5、编译:执行命令
- make V=s -j8
-j8代表使用的CPU线程数量,4C8T的CPU可是使用8个线程提高速度,使用时有时会出错,可以改成-j1或者不加这个参数。
6、得到固件:
显示如下信息时并且终端上没有error时,代表编译成功
- Signing package index...
- make[2]: Leaving directory '/home/goldmoon/openwrt'
- make[1]: Leaving directory '/home/goldmoon/openwrt'
/home/goldmoon/openwrt/bin/ramips/openwrt-ramips-mt7620-zbt-wa05-squashfs-sysupgrade.bin
这个文件就是我们想要的固件。
编译的时候可能会遇到形形色色的错误,大部分都是文件下载错误(源码的服务器在国外,最好自备梯子),有时候需要科学上网才行。或者网上去找到缺失的包用p2p下载软件下载下来放到相应的位置(一般在dl这个目录下)。至于其它错误,要具体情况具体对待了,我也会在以后的博客里记录一下。
接触OpenWRT一年时间,大部分都在编译固件、刷机,遇到过不少问题。这里记录下以前摸索的步骤。
op编译过程的wiki:https://wiki.openwrt.org/zh-cn/doc/howto/buildroot.exigence
以下步骤的操作环境为64位的Ubuntu16.04 LTS,路由器型号位ZBT-WA05,OP版本为CC。
注意事项:
1. 请使用一个非root用户来完成这些工作!
2. 这里的所有命令都在OpenWrt编译系统的根目录下运行(例如~/openwrt/trunk/)
3. 编译系统的绝对路径中不能含有空格!
4. 如果你使用root用户下载了源码,请把你下载来的源码的所有者更改为一个非root用户。(sudo chown -R user:user /openwrt/)
过程:
1、准备工作:安装编译所需的工具,在终端输入
- sudo apt-get update
- sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip
- sudo apt-get install subversion mercurial
- sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils subversion libncurses5-dev ncurses-term zlib1g-dev
2、下载源码:需准备12GB左右的空间,源码体积百兆左右,但是编译过程中会产生大量文件,会使文件夹体积非常大
大部分SVN都是失效的,所以一些老的教程就不能参考了,这点要注意。要使用git来下载源码。
要下载哪个版本可以参考wiki(上面的链接)以CC版本为例,在主文件夹下执行:
- git clone git://git.openwrt.org/15.05/openwrt.git
3、下载安装可用的“feeds”:上述步骤会产生一个名为openwrt的目录,在终端输入
- cd openwrt
- ./scripts/feeds update -a
- ./scripts/feeds install -a
4、配置编译选项:
- make menuconfig
选择Package the OpenWrt-base Toolchain是为了有搭建交叉编译环境方便,不是必选的。
此外,勾选LuCI(网页形式的控制台)还是非常必要的。要勾选(前面出现*号):
LuCI-->1.Collections-->luci
别忘记勾选中文:
LuCI-->2.Modules-->Translations-->Chinese(zh-cn)
最后Save,退出。
以上是基本的固件编译,如果需要其他功能,要再勾选或添加。
5、编译:执行命令
- make V=s -j8
-j8代表使用的CPU线程数量,4C8T的CPU可是使用8个线程提高速度,使用时有时会出错,可以改成-j1或者不加这个参数。
6、得到固件:
显示如下信息时并且终端上没有error时,代表编译成功
- Signing package index...
- make[2]: Leaving directory '/home/goldmoon/openwrt'
- make[1]: Leaving directory '/home/goldmoon/openwrt'
/home/goldmoon/openwrt/bin/ramips/openwrt-ramips-mt7620-zbt-wa05-squashfs-sysupgrade.bin
这个文件就是我们想要的固件。
编译的时候可能会遇到形形色色的错误,大部分都是文件下载错误(源码的服务器在国外,最好自备梯子),有时候需要科学上网才行。或者网上去找到缺失的包用p2p下载软件下载下来放到相应的位置(一般在dl这个目录下)。至于其它错误,要具体情况具体对待了,我也会在以后的博客里记录一下。