openwrt编译从源码到固件

接触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、准备工作:安装编译所需的工具,在终端输入

[plain] view plain copy
  1. sudo apt-get update  
  2. sudo apt-get install git-core build-essential libssl-dev libncurses5-dev unzip  
  3. sudo apt-get install subversion mercurial  
  4. 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版本为例,在主文件夹下执行:

[plain] view plain copy
  1. git clone git://git.openwrt.org/15.05/openwrt.git  
如果下载失败,挂上VPN重试,以后可能经常遇到下载失败的问题,VPN是一个不错的解决方案。


3、下载安装可用的“feeds”:上述步骤会产生一个名为openwrt的目录,在终端输入

[plain] view plain copy
  1. cd openwrt  
  2. ./scripts/feeds update -a  
  3. ./scripts/feeds install -a  
等待下载完成。


4、配置编译选项:

[plain] view plain copy
  1. 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、编译:执行命令

[plain] view plain copy
  1. make V=s -j8  
V=s 代表显示编译信息,一定要勾选,否则出错的话无法看到错误信息。

-j8代表使用的CPU线程数量,4C8T的CPU可是使用8个线程提高速度,使用时有时会出错,可以改成-j1或者不加这个参数。


6、得到固件:

显示如下信息时并且终端上没有error时,代表编译成功

[plain] view plain copy
  1. Signing package index...  
  2. make[2]: Leaving directory '/home/goldmoon/openwrt'  
  3. make[1]: Leaving directory '/home/goldmoon/openwrt'  

/home/goldmoon/openwrt/bin/ramips/openwrt-ramips-mt7620-zbt-wa05-squashfs-sysupgrade.bin

这个文件就是我们想要的固件。

编译的时候可能会遇到形形色色的错误,大部分都是文件下载错误(源码的服务器在国外,最好自备梯子),有时候需要科学上网才行。或者网上去找到缺失的包用p2p下载软件下载下来放到相应的位置(一般在dl这个目录下)。至于其它错误,要具体情况具体对待了,我也会在以后的博客里记录一下。

阅读更多
文章标签: openwet 源码 固件
个人分类: openwrt
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭