OpenWrt固件编译刷机完全总结-阿里云开发者社区

开发者社区> 技术小胖子> 正文

OpenWrt固件编译刷机完全总结

简介:
+关注继续查看

OpenWrt固件编译刷机完全总结

一.SOM9331板子信息

 

用普通安卓手机USB线连接板子与电脑,通过secureCRT串口登录,设置如下:

 

二.登录openwrt系统

Uboot信息:

uboot> version

U-Boot 1.1.4  (Jan  3 2014)

*********************************************

*        U-Boot 1.1.4  (Jan  3 2014)        *

*********************************************

 

 (AR9331) U-Boot for SOM9331

 

DRAM:   64 MB DDR2 16-bit

FLASH:  Winbond W25Q64 (8 MB)

CLOCKS: 400/400/200/33 MHz (CPU/RAM/AHB/SPI)

 

LED on during eth initialization...

 

Hit any key to stop autobooting:  0 

 

Booting image at: 0x9F020000

 

   Image name:   OpenWrt r36088

   Image type:   MIPS Linux Kernel Image (lzma compressed)

   Data size:    957100 Bytes = 934.7 kB

   Load address: 0x80060000

   Entry point:  0x80060000

 

Uncompressing kernel image... OK!

Starting kernel...

回车后:

BusyBox v1.19.4 (2013-03-14 11:28:31 UTC) built-in shell (ash)

Enter 'help' for a list of built-in commands.

 

  _______                     ________        __

 |       |.-----.-----.-----.|  |  |  |.----.|  |_

 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|

 |_______||   __|_____|__|__||________||__|  |____|

          |__| W I R E L E S S   F R E E D O M

 -----------------------------------------------------

 ATTITUDE ADJUSTMENT (12.09, r36088)

 -----------------------------------------------------

  * 1/4 oz Vodka      Pour all ingredients into mixing

  * 1/4 oz Gin        tin with ice, strain into glass.

  * 1/4 oz Amaretto

  * 1/4 oz Triple sec

  * 1/4 oz Peach schnapps

  * 1/4 oz Sour mix

  * 1 splash Cranberry juice

 -----------------------------------------------------

root@OpenWrt:/# 

Linux内核版本信息:

root@OpenWrt:/# ls

bin      etc      mnt      proc     root     sys      usr      www

dev      lib      overlay  rom      sbin     tmp      var

root@OpenWrt:/etc# cat /proc/version 

Linux version 3.3.8 (blogic@Debian-60-squeeze-64-minimal) (gcc version 4.6.3 20120201 (prerelease) (Linaro GCC 4.6-2012.02) ) #1 Sat Mar 23 16:49:30 UTC 2013

三.openwrt固件编译准备工作

Virtual box虚拟机使用Ubuntu 10.04.4 LTS系统,并与windows共享文件夹,方便后期两个平台传输资源。

编译所需安装工具:

1安装SVN工具,下载Openwrt源码,因为源码是在不断更新的,SVN管理很方便
apt-get install subversion
2.安装git工具,如果你知道github的话……
apt-get install git-core
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

以上在非root用户下下载时需要在前面加上sudo命令:


然后在当前目录下新建openwrt目录,下载的源码包就放在该目录下:

mkdir openwrt
cd openwrt/
svn co svn://svn.openwrt.org/openwrt/trunk  这里我们下载的是trunk版本,也可以下载DREAMBOX或者backfire版本的
因为要连接国外的服务器下载源码,所以一般会很慢,建议可以下载DREAMBOX的,国内维护的,可能会快一点吧
svn co svn://svn.openwrt.org.cn/dreambox/backfire openwrt-dreambox
cd openwrt-dreambox
./scripts/feeds update -a 
./scripts/feeds install -a
下载结束后,会出现svn版本号表示下载成功了
下载完openwrt的源码后,为了使openwrt支持更多的软件,需要更新和安装其他源上面的软件:
cd ./trunk
./scripts/feeds update -a
./scripts/feeds install -a
PS:关于SVN
如果不是刚下载的源码,为保持代码为最新状态,可以运行svn update命令更新源码。
svn up或者 svn update
SVN更新的时候:
U:表示从服务器收到文件更新了
G:表示本地文件以及服务器文件都已更新,而且成功的合并了
A:表示有文件或者目录添加到工作目录
R:表示文件或者目录被替换了.
C:表示文件的本地修改和服务器修改发生冲突

SVN 查看历史信息 通过svn命令可以根据时间或修订号去除过去的版本,或者某一版本所做的具体的修改。以下四个命令可以用来查看svn 的历史:
svn log 用来展示svn 的版本作者、日期、路径等等
svn diff 用来显示特定修改的行级详细信息
svn cat 取得在特定版本的某文件显示在当前屏幕
svn list 显示一个目录或某一版本存在的文件

四.配置openwrt编译源码

测试编译环境:(先生成一个默认配置文件)

make defconfig

到这里就可以开始编译自己的固件了。进入定制界面:(如果需要前面加上sudo命令)

make menuconfig

稍后自动进入一个图形化配置界面,根据实际芯片进行配置

(我们用到的是AtherosAR9331),因此配置如下:

 

 

选择好芯片和模型配置好后,还要配置Luci(openwrt路由的web登录设置页面),将luci选项打上*,注意不是M(M只是将其当作模块来编译,而*可以将其编译进内核)

 

 

最后保存为配置文件SOM9331.config

 

执行make V=99开始编译工作,make V=99  (注意V为大写,而且编译过程中为避免权限问题,最好前面加上sudo),这里有人喜欢在make后加上”-j”选项参数,意思是让cpu全速编译,但这里不推荐,容易出现不可预料的错误或者卡顿。

五、编译过程中可能出现的问题及解决方法

既然编译了难免会出现一些错误而无法进行下去,这里总结几个自己遇到的问题及解决方法:

1.*** error: 'OpenWrtunknown' is too long, max firware version length is 13

[edimax_fw_header] *** error: 'OpenWrtunknown' is too long, max firware version length is 13

dd: failed to open'build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/f9k1115v2-rootfs': No such file or directory

dd: failed to open 'build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/tmp/f9k1115v2-uImage': No such file or directory

解决方法:一开始我是用sudo建立了那两个路径,结果还是有错,google了一下找到了方法:

 

即将trunk/scripts/getver.sh脚本第33行替换成那条语句,重新编译就OK了。

2.还有个是链接上了无法下载,需要手动下载到指定目录下,但是重新make时候编译器又将手动下载的文件remov了,这是到后来才发现的,于是果断编译开始后再将下载好的文件放到指定目录下就好了,编译通过!

3.Openwrt源码一般不支持root用户进行编译,所以一般每条命令都要利用sudo前缀,修改一下文件可以使得利用root编译。如果你是root用户名需要在配置上面做点修改。需要修改include/prereq-build.mk,把第十六行的注释掉。对于Ubuntu系统,貌似并不需要修改。

4.网友提到在执行make defconfig时,出现 checking libssl’… failed,,然后安装缺少的这个组件libssl-dev,请执行sudo apt-get install libssl-dev

请大家在操作过程中关注每一个遇到的错误,他都可能是编译成功的绊脚石~~~

5.对于连接国外源码服务器下载速度太慢的问题,可以换成国内的服务器进行下载

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

svn://svn.openwrt.org.cn/openwrt/trunk

svn://svn.openwrt.org.cn/dreambox/backfire openwrt-dreambox

六.烧写openwrt系统固件到SOM9331开发板

最后编译好了,cd到/openwrt/trunk/bin/ar71xx目录下,会有很多编译好的bin文件,

 

但适合SOM9331开发板的是openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

(注意:openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-factory.bin原厂固件,不带Luci界面,wifi默认不打开,openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin基于openwrt的升级,可以通过make menuconfig设置带Luci界面,当然也可以登录系统设置打开wifi)

这里采用tftp传输方式烧写固件,需要准备好网线连接电脑网孔和SOM9331开发板的WAN网口(本固件靠近USBJ1WAN口,另两个J2J3LAN)

 

另外软件方面需要tftpd32来传输,结合SecureCRT串口显示openwrt系统uboot菜单命令来烧写:

1、先把本机的IP地址设置为192.168.1.2,只要设置的IP地址和SOM9331开发板的IP在一个段域内即可。

 

2、给开发板供电,打开SecureCRT软件,按下开发板上的复位按钮,根据提示在电脑上按下空格键,进入Uboot界面,设置当前环境变量(即设置服务器IP和开发板本地客户端IP)

setenv serverip 192.168.1.2

setenv ipaddr 192.168.1.1(若与自己路由器ip冲突可以另外设置)

 

3、打开tftpd32.exe软件,设置下烧写的bin文件所在目录,以及当前服务器IP地址(PC的本地IP)

 

4、回到uboot界面,开始输入tftp命令传输bin文件到给定地址:

tftp 0x80000000 openwrt-ar71xx-generic-tl-wr703n-v1-squashfs-sysupgrade.bin

 

5、擦出原有的Flash区域:erase 0x9f020000 +0x7c0000,然后将刚烧写到内存的bin文件再写到刚才擦除的区域:cp.b 0x80000000 0x9f020000 0x7c0000

 

然后输入reset或者按下复位键重启,或者输入bootm 0x9f020000重启:

 

此时刷openwrt固件成功!

七、开启wifiLuci界面

命令行查看网络,输入ifconfig

 

发现没有wlan0,因为默认wifi没打开,需要手动设置,打开无线开关(配置wireless文件)键入 vi /etc/config/wireless 回车 光标移动到 option disabled 1 这一行,在这一行前面加上#注释掉,保存设置并退出,键入 /etc/init.d/network restart 回车 重启网络,这时电脑即可搜到“OpenWrt”热点并连接上,后续配置可在网页上(192.168.1.1)进行。

 

浏览器输入192.168.1.1后出现登录界面需要设置密码:

 

进入SecureCRT设置passwd:

 

输入设置好的密码即可成功登录!

 








      本文转自灬落魄灬  51CTO博客,原文链接:http://blog.51cto.com/smoke520/1830772,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
2789 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
4401 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
9407 0
android opengl es总结
注:这篇里的视锥体相对好理解些,不过好像和老罗的也差不多。 android opengl es总结(转) 时间:2013-10-25 作者: 屁屁孩 阅读次数:21 内容提示:统的一个免费二维和三维图形库。
1038 0
Neutron总结-OpenStack中的网络隔离
小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03
2805 0
13262
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载