接触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
大部分SVN都是失效的,所以一些老的教程就不能参考了,这点要注意。要使用git来下载源码。
要下载哪个版本可以参考wiki(上面的链接)以CC版本为例,在主文件夹下执行:
git clone git://git.openwrt.org/15.05/openwrt.git
如果下载失败,挂上VPN重试,以后可能经常遇到下载失败的问题,VPN是一个不错的解决方案。
3、下载安装可用的“feeds”:上述步骤会产生一个名为openwrt的目录,在终端输入
cd openwrt
./scripts/feeds update -a
./scripts/feeds install -a
等待下载完成。
4、配置编译选项:
make menuconfig
用方向键、空格(选择,出现M代表编译但不编译到固件,*号表示编译进固件)、按两下esc返回等操作来配置选项,选择硬件平台、CPU型号等选项。ZBT-WA05的配置如下:
选择Package the OpenWrt-base Toolchain是为了有搭建交叉编译环境方便,不是必选的。
此外,勾选LuCI(网页形式的控制台)还是非常必要的。要勾选(前面出现*号):
LuCI-->1.Collections-->luci
别忘记勾选中文:
LuCI-->2.Modules-->Translations-->Chinese(zh-cn)
最后Save,退出。
以上是基本的固件编译,如果需要其他功能,要再勾选或添加。
5、编译:执行命令
make V=s -j8
V=s 代表显示编译信息,一定要勾选,否则出错的话无法看到错误信息。
-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'
这个文件就是我们想要的固件。
编译的时候可能会遇到形形色色的错误,大部分都是文件下载错误(源码的服务器在国外,最好自备梯子),有时候需要科学上网才行。或者网上去找到缺失的包用p2p下载软件下载下来放到相应的位置(一般在dl这个目录下)。至于其它错误,要具体情况具体对待了,我也会在以后的博客里记录一下。