找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 44475|回复: 95

菜鸟新手硬改flash、自编译固件教程(在线写不定期更新)

 火.. [复制链接]
发表于 2015-8-29 15:02 | 显示全部楼层 |阅读模式
玩路由,从菜鸟开始,从原厂固件到DD-WRT到蕃茄到Open-WRT,是很有意思的一个过程。这期间发现很多问题,通过网络各位高手的文章不断学习,自己也学到很多知识。因为涉及到很多关于硬件、Linux操作系统、软件等方面的专业知识,做为一个新手,一个菜鸟涉足到玩路由器这个领域,确实很有难度。像Open-WRT刚出的时候也刷过,那时候缺省固件没有web配置界面,虽然Linux终端下命令行的配置方式对于我没有什么难度,但是我还是觉得不方便,人毕竟是很懒的。
我发这个帖子的目的就是借助一个改装实例来帮助一些新手菜鸟了解一些基本知识,因为我爬了很多的帮助、很多的教程,有一些基本的知识高手都忽略了,可能对于高手来说,一些基本知识是必须要知道的,也无需描述的,所以导致了菜鸟们难以理解,我作为一个菜鸟新手,很有感慨,所以想通过这个帖子简单的讲一下我改造路由器的过程。

我不是高手,很多东西我也是半桶水不懂的,所以也请不要跟我提问太高深的问题,因为我也不懂。{:soso_e113:}

评分

参与人数 6恩山币 +12 收起 理由
1130039046 + 1 犀利
lily339 + 5 亲,你太牛逼了,走,我请你吃鳇鱼头去~~~
lch911 + 3 城会玩
dengsha + 1 切糕党手持切糕刀强势围观楼主!
wsh75 + 1 泥马,真给力,我要顶!
liehuo735 + 1 一看就是觉得高端、大气、上档次!

查看全部评分

相关帖子

我的恩山、我的无线 The best wifi forum is right here.
发表于 2015-8-29 15:06 | 显示全部楼层
新人路过帮顶
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-29 15:09 来自手机 | 显示全部楼层
菜鸟路过,支持楼主!期待更新
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 15:39 | 显示全部楼层
这是我在这里发的第一个帖子。

我有很多路由器,我最喜欢的就是TP-LINK 841N V7,这个路由器用了几年了,原厂固件买回来就没怎么用过,直接刷了DD-WRT在跑,一直很稳定,硬件配置和速度也还不错,DD-WRT和Open-WRT都支持,我很满意。

近来开始研究科学上网,试了几种方案,花了好接天时间,终于确定下来,但是发现TP-LINK 841N V7这个路由的Flash只有4M,我要的软件装不下,自己用Open-WRt的ImageBuilder重新编译了一个固件,还是超过了4M,只好把Luci Web配置界面去掉,编译了一个最简单的固件,终于可以跑了,但是用了一个礼拜还是觉得不方便,因此动了改造硬件升级Flash的念头。

说干就干,开始研究资料购买相关硬件。

第一步,升级TP-LINK 841N V7的Flash,原机配置的Flash是4M,要换更大的,我要装更多软件。目标升级到8M或16M。

这里给菜鸟解释一下什么是Flash,为什么要换它。
简单的理解,Flash就像电脑的硬盘,我们的操作系统Open-WRT和应用软件就存在这个芯片里面,当软件太多放不下时,我们就要换一个容量大一点的,就像电脑换个大硬盘一样,我们刷机刷固件,也是刷在这个Flash芯片里面。

替换的Flash芯片有很多种品牌和型号,经过一番研究最后我确定了买 Winbond W25Q64FVSIG W25Q128FVSG 这两种型号,感觉这两个型号兼容性好一点,立马淘宝找,各买了5个一共10个花了50块钱。买这么多是怕自己第一次搞没经验,搞坏了可以换,再说买一个人家也不愿卖你。

25Q64FVSIG 是8M的,25Q128FVSG是16M的,8脚封装的Flash芯片,匹配原路由器的芯片。

配个图个看一下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

评分

参与人数 1恩山币 +1 收起 理由
gdsgds + 1 精彩点滴

查看全部评分

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 15:48 | 显示全部楼层
我们来看看 TP-LINK 841N V7 拆开后,Flash芯片的位置。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 16:17 | 显示全部楼层
第二步,准备要刷写的Open-WRT固件

芯片买好了,我们还要准备相应的固件。 Open-WRT官网提供的固件是4M的,我们换了8M Flash后就不能直接用了,要自己重新弄一个。

这里菜鸟们就需要对固件有一个大概的了解,它的结构是怎么样的呢? TP-LINK的固件里面,大概包括了3个部分功能。

  |---------------------|
  |     u-boot       |         
  |---------------------|
  |                     |
  |    Firmware     |
  |                     |
  |____________|
  |        art         |
  |---------------------|

这个固件的最开始的头部分,是一个叫u-boot的东西,它类似于电脑主板里面的BIOS,通电后检查初始化硬件,准备启动后面的操作系统。
中间的Firmware就是我们的Open-Wrt系统软件部分,它就是我们路由器的操作系统。通过u-boot把它引导起来运行。
最后的art部分,是路由器的无线硬件参数,好多同学刷完机没有无线功能,就是这部分刷错或丢失了。

我现在要做的,就是按照上面的结构,重新弄一个适合我路由器的新固件。

u-boot 原来路由器里面已经有了,但是换成8M Flash以后还能不能用,我不确定,理论上应该是可以的,但是我在论坛上,看见有高手写的u-boot,和新版的Breed,我很想试一下,带web恢复界面,很方便啊。就算出了什么问题我也容易恢复系统,因为以前这个路由被我刷成砖头的时候,是用TTL线救回来了,那过程真的能搞死人。 经过对比,我选择了本论坛hackpascal大侠自行研发的Breed这个u-boot,后面事实证明真的好用,没有出任何问题。

参考链接: hackpascal 研发的 Breed

中间的Firmware部分,就是Open-WRT了,这个需要我们自己编译。

点评

问下,比如是TP-WR941N的。也是4M的Flash芯片现在买了8M或16M的芯片。如果我先用编程器刷了Breed的不死Uboot后。然后焊上去这个新的芯片,直接在Breed的不死Uboot界面刷入官网的941N的DD-WRT固件可以吗?还有也刷进  详情 回复 发表于 2018-11-23 16:14
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 16:35 | 显示全部楼层
准备Open-WRT 8M固件

8M的固件,只能自己编译了,我没有用源码编译,那个太麻烦太耗时间,也不适合新手,我用的是Open-WRT提供的Image Generator,这个就简单多了,详细内容可以参考官网文档。我这里只真对841N V7我的处理过程做一个说明。

先装一个Linux系统环境,用虚拟机也可以,但是要64位的操作系统,官方文档里用的是ubuntu,所以我就装了一个64位的ubuntu系统,我有很多服务器和Linux系统,所以装一个还是蛮方便的,只有一个电脑的同学可以用Vmware在自己电脑上装一个,也不麻烦,具体方法自行解决。

装好ubuntu后,ssh登录进控制台,先下载Image Generator软件http://downloads.openwrt.org/bar ... inux-x86_64.tar.bz2

或者用windows下载好,再用winscp / sftp 传到ubuntu上面

ubuntu 里面直接下载:

wget http://downloads.openwrt.org/bar ... inux-x86_64.tar.bz2

这是个bz2的压缩包,我们用tar命令把它解压缩:

tar xjvf http://downloads.openwrt.org/bar ... inux-x86_64.tar.bz2

这时候会解出来一个OpenWrt-ImageBuilder-ar71xx_generic-for-linux-x86_64目录, cd进去。
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 16:50 | 显示全部楼层
本帖最后由 bobochiu 于 2015-8-29 17:30 编辑

修改
include/target.mk 把缺省dnsmasq改成dnsmasq-full 因为我要装的S.h.a.d.o.w.s.o.c.k.s软件方案,会用到ipset软件包,缺省配置的dnsmasq不支持ipset,所以这里把它改成完全版本的dnsmasq-full

修改repositories.conf 加入以下内容
src/gz barrier_breaker_base http://downloads.openwrt.org/bar ... neric/packages/base
src/gz barrier_breaker_luci http://downloads.openwrt.org/bar ... neric/packages/luci
src/gz barrier_breaker_management http://downloads.openwrt.org/bar ... packages/management
src/gz barrier_breaker_oldpackages http://downloads.openwrt.org/bar ... ackages/oldpackages
src/gz barrier_breaker_packages http://downloads.openwrt.org/bar ... c/packages/packages
src/gz barrier_breaker_routing http://downloads.openwrt.org/bar ... ic/packages/routing
src/gz barrier_breaker_telephony http://downloads.openwrt.org/bar ... /packages/telephony
src/gz openwrt_dist http://openwrt-dist.sourceforge.net/releases/ar71xx/packages

编译的时候,会从这些软件源里下载所需要的软件。

修改target/linux/ar71xx/image/Makefile 文件,将原固件设定的4M改成8M

VI 编辑器,用 :/841 查找,有几处,把最后面的的4Mlzma改成8Mlzma,这样就可以编译出8M固件了。
$(eval $(call SingleProfile,TPLINK-LZMA,$(fs_64kraw),TLWR841NV8,tl-wr841n-v8,TL-WR841N-v8,ttyS0,115200,0x08410008,1,8Mlzma))

开始编译:
make image PROFILE=TLWR841 PACKAGES="ipset iptables-mod-nat-extra luci-app-sqm libpolarssl shadowsocks-libev-polarssl luci uhttpd lua luci-i18n-chinese "

这里面包含了我要安装的软件,当然你也可以根据需要添加删减。 ipset iptables-mod-nat-extra libpolarssl shadowsocks-libev-polarssl 这几个软件是科学上网要用到的,luci uhttpd lua luci-i18n-chinese 这几个软件是Web界面配置系统的,luci-app-sqm这个是限速的。

编译完后,会在bin/ar71xx目录里面生成我需要的固件,把openwrt-ar71xx-generic-tl-wr841nd-v7-squashfs-factory.bin这个文件下载回本地电脑,这个就是我们后期合成新8M固件要用到的Open-WRT固件。
============================
注:如果是编译16M的固件,就把上面的4M改成16M即可
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-29 16:55 | 显示全部楼层
菜鸟,来学习的~!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-29 16:56 | 显示全部楼层
支持楼主的分享!
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

发表于 2015-8-29 16:56 来自手机 | 显示全部楼层
写的很好  支持支持  
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 17:13 | 显示全部楼层
现在准备固件的art部分

ssh登录进路由器,查看当前分区情况,我现在路由已经是刷了Open-WRT

cat /etc/proc/mtd
cat: can't open '/etc/proc/mtd': No such file or directory
root@OpenWrt:~# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot"
mtd1: 00110600 00010000 "kernel"
mtd2: 00ebfa00 00010000 "rootfs"
mtd3: 00bd0000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 00fd0000 00010000 "firmware"

我们需要备份的,就是 mtd0的uboot 和 mtd4的art,备份u-boot只是以防万一以后会刷回原厂uboot,后面的art就是路由无线参数部分我们合成新8M固件会用到。

dd if=/dev/mtd0 of=/tmp/u-boot.bin
dd if=/dev/mtd4 of=/tmp/art.bin

把这两个备份文件下载回本地电脑备用。
u-boot应该是一个128K的文件,art是一个64K文件,因为他们在固件里面所占的空间就是这么多,uboot占据了固件开始头部的128K空间,而art则是占据了固件最后尾部的64K空间,中间就是Open-WRT系统等占用的空间了,户型结构参考上面。

点评

既然已经安装了open-wrt,flash空间就被破坏了,怎么还能备份出正确的art呢?这应该是没刷机之前就备份的吧。没刷之前又怎么能ssh呢?  详情 回复 发表于 2017-9-14 20:45
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 17:28 | 显示全部楼层
本帖最后由 bobochiu 于 2015-8-29 17:32 编辑

准备生成新的8M路由器固件

下载841N路由适用的Breed u-boot程序 breed-ar724x.bin
上面我们自行编译的Open-WRT 固件 openwrt-ar71xx-generic-tl-wr841nd-v7-squashfs-factory.bin
从路由器备份出来的art  art.bin

三个文件都准备好,烧热锅,放油准备炒。


用WinHEX软件 新建一个8M文件,编辑-全选,填充选块,填充十六进制数值 FF 。

打开breed-ar724x.bin文件,编辑-全选, 复制。切换到刚建立的8M文件,从文件头偏移地址0 编辑-写入 Ctrl+b覆盖。这里要注意不是用Ctrl+V来粘贴。

找到0001FC00行的MAC地址,改成你自己的路由器后面贴的MAC,找到0001FE00行的密码改成自己路由器上贴的PIN密码

找到00020000位置,同样操作贴入8M固件openwrt-ar71xx-generic-tl-wr841nd-v7-squashfs-factory内容

找到0007F0000位置,同样操作贴入art分区内容,注意实际内容是从0007F10000开始的。(注:16M的固件找到000FF0000位置,贴入art分区内容,实际内容是从0007F10000开始)

保存文件,这个就是我们用来刷机的新8M完整固件了。

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 17:43 | 显示全部楼层
软件部分已经准备好了,剩下的就是刷机。

再次上网采购编程器、IC插座、电烙铁等,又花了100多块,电烙铁要买尖头的,才好焊接IC芯片。

编程器买回来,傻眼!不会接。 研究了1分钟后明白,芯片上面有个圆点标识就是1脚,对应编程器上面的1脚,下载安装好软件,开始刷。
8M的Flash刷写大概不到3分钟,16M的时间更长一些,我把买回来的10片Flash全部都刷了,确保都正常。 这个30多块钱的编程器很好焊顺利的就完成的刷写工作,让我很开心。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 发表于 2015-8-29 17:52 | 显示全部楼层
剩下的就是拆路由,焊芯片,把原来的Flash芯片焊下来,用个小镊子轻轻从芯片下面翘起,烙铁来回烫,很容易就把芯片取下,放上新片子,注意1脚对应,摆好位置按住,小心焊上去,其实也不是很难。

看看我焊接的成品效果。光线不好,照糊了{:soso_e127:}


效果还是很满意的,随后通电启动路由,一次成功! 手痒又把这个8M的芯片焊下换上16M芯片,也是一次运行成功! 配置好运行一天完全正常。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-19 15:41

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表