openwrt固件如何编译

这篇文章主要为大家展示了“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

(0)
上一篇 2022年1月2日
下一篇 2022年1月2日

相关推荐

发表回复

登录后才能评论