您的位置:首页 > 运维架构

OpenWrt固件编译刷机完全总结

2016-07-27 17:36 471 查看
OpenWrt固件编译刷机完全总结一.SOM9331板子信息

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

二.登录openwrt系统Uboot信息:uboot> versionU-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-bitFLASH: 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:/# lsbin etc mnt proc root sys usr wwwdev lib overlay rom sbin tmp varroot@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-devsudo apt-get install zlib1g-devsudo apt-get install bisonsudo apt-get install flexsudo apt-get install unzipsudo apt-get install autoconfsudo apt-get install gawksudo apt-get install makesudo apt-get install gettextsudo apt-get install gccsudo apt-get install binutilssudo apt-get install patchsudo apt-get install bzip2sudo apt-get install libz-devsudo apt-get install asciidocsudo apt-get install subversionsudo apt-get install sphinxsearchsudo apt-get install libtoolsudo 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稍后自动进入一个图形化配置界面,根据实际芯片进行配置(我们用到的是Atheros的AR9331),因此配置如下:

选择好芯片和模型配置好后,还要配置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 13dd: 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/backfiresvn://svn.openwrt.org.cn/openwrt/trunksvn://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网口(本固件靠近USB的J1为WAN口,另两个J2,J3为LAN口),

另外软件方面需要tftpd32来传输,结合SecureCRT串口显示openwrt系统uboot菜单命令来烧写:1、先把本机的IP地址设置为192.168.1.2,只要设置的IP地址和SOM9331开发板的IP在一个段域内即可。

2、给开发板供电,打开SecureCRT软件,按下开发板上的复位按钮,根据提示在电脑上按下空格键,进入Uboot界面,设置当前环境变量(即设置服务器IP和开发板本地客户端IP):setenv serverip 192.168.1.2setenv 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固件成功!七、开启wifi和Luci界面命令行查看网络,输入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:

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


本文出自 “尼古风锁丝愁过” 博客,请务必保留此出处http://smoke520.blog.51cto.com/9256117/1830772
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: