这篇文章主要为大家展示了“openwrt固件如何编译”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“openwrt固件如何编译”这篇文章吧。
第一部分:搭建至此编译环境
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
以上是“openwrt固件如何编译”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/219967.html