openwrt固件编译教程

        刚刚开始探索openwrt的时候,我从网上找了很多文档,在准备搭建固件编译环境的时候,根据网上的文档,从SVN上面checkout源代码,发现走到./scripts/feeds update -a更新拓展出现了错误,提示更新失败。以下是网上教程:

第一部分:搭建至此编译环境

1、安装Ubuntu(编译需要Linux环境),到其官网下载,版本根据自己所需选择即可。可以选择安装到虚拟机或者物理机,图形化安装而且是中文版,连安装都搞不定的,可以关闭本页面了;

2、切记不要改动软件源,同时按住Ctrl + Alt + T,调出终端;

3、逐条输入下列命令(及时验证是否安装成功):

sudo apt-get install g++
sudo apt-get install libncurses5-dev
sudo apt-get install zlib1g-dev
sudo apt-get install bison
sudo apt-get install flex
sudo apt-get install unzip
sudo apt-get install autoconf
sudo apt-get install gawk
sudo apt-get install make
sudo apt-get install gettext
sudo apt-get install gcc
sudo apt-get install binutils
sudo apt-get install patch
sudo apt-get install bzip2
sudo apt-get install libz-dev
sudo apt-get install asciidoc
sudo apt-get install subversion
sudo apt-get install sphinxsearch
sudo apt-get install libtool
sudo apt-get install sphinx-common
sudo apt-get install libssl-dev
sudo apt-get install libssl0.9.8

至此编译环境搭建完成。

第二部分:下载OpenWrt源码并编译

OpenWrt源码分两种,一种是最新但不是最稳定的Trunk开发版,一种是最稳定的Backfire版,建议下载官方源码。下载前先在本地创建文件夹:

mkdir openwrt
sudo chmod 777 openwrt
cd openwrt
选择你想要的版本然后执行下载命令,下载结束会显示版本号:

Trunk版下载命令:

svn co svn://svn.openwrt.org/openwrt/trunk/

Backfire版下载命令:

svn co svn://svn.openwrt.org/openwrt/branches/backfire/

更新扩展,安装扩展:

注:根据教程一步步走下来都是顺利通过,但是走到下面更新扩展的时候,出现了问题。有部分的软件更新不了,我也找了很多其他教程,其他教程都跟这个教程大同小异。我看了feeds.conf.default这个配置文件,发现更新拓展的SVN链接有google的地址,我个人猜测链接被屏闭了,导致这一步报错。

./scripts/feeds update -a
./scripts/feeds install -a
注:如果不是刚下载的源码,为保持代码为最新状态,应定期运行svn update命令更新源码。

测试编译环境:

make defconfig
make prereq
到这里就可以开始编译自己的固件了。进入定制界面:

make menuconfig

编译选项:

根据路由器情况,选择 Target System 和 Subtarget。如意云一代和极壹S的 Target System 均为 Ralink RT288x/RT3xxx 。对于Subtarget ,前者为 MT7620n based boards ,后者为 MT7620a based boards。其他选项根据个人喜好选择。一般来说要选中LuCI界面,选中中文语言包等等。

开始编译:

执行export FORCE_UNSAFE_CONFIGURE=1 && make -j3 V=s 进行编译。-j后面的数字是电脑物理CPU数量加一。V=s可以显示出编译的详细信息。首次编译大概需要几个小时的时间,编译时一定要联网。

错误排查:

编译失败,一般有两种情况:
1.代码下载链接失效。首次编译时,编译程序会实时从网上下载一些软件包的代码。如果下载链接失效,编译就会失败。这时需要根据软件包的名称,从网上自行下载,然后放在 openwrt/dl/ 目录下,执行 export FORCE_UNSAFE_CONFIGURE=1 && make -j3 V=s继续编译即可。
2.软件包自身有问题。这时重新执行 make menuconfig ,取消对应软件包选中即可。这种情况比较少见,目前已知的有 tor 等。

编译成功,但没有生成固件。这种情况一般是因为选中的软件包过多,导致固件大小超过16MB。重新执行 make menuconfig,去掉一些软件包,重新执行编译即可。得到固件。在排除了所有错误后,现在终于得到了固件。对于如意云RY-1,固件在 openwrt/bin/ramips 目录下,形如
openwrt-ramips-mt7620n-rt-n14u-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wrtnode-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-mlw221-squashfs-sysupgrade.bin
openwrt-ramips-mt7620n-wr8305rt-squashfs-sysupgrade.bin



      以上是网上的教程,其实教程大多数都是正确,就是更新扩展这一步过不去,后来我在openwrt的官网发现他们提供github下载源码,我把SVN下载源码换成的git下载:

安装git软件包:

sudo apt-get update
sudo apt-get install git-core build-essential

获取openwrt源码:

git clone git://git.openwrt.org/openwrt.git

再执行更新扩展,安装扩展:

注:在github下载源码的feeds.conf.default里面的更新扩展链接已经没有指向google,基本都是指向github,所以更新扩展这一步也能顺利执行了

./scripts/feeds update -a
./scripts/feeds install -a












转载于:https://my.oschina.net/u/1759641/blog/528953

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值