博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
跟 UMU 一起玩 OpenWRT(高级篇2):不拆机刷不死 U-Boot
阅读量:6835 次
发布时间:2019-06-26

本文共 1834 字,大约阅读时间需要 6 分钟。

    在上一篇《》介绍了如何编译不死 U-Boot,但是不死 U-Boot 的作者只介绍了用 TTL 线刷方法,UMU 可不想拆机,毕竟拆机感觉并不好……

    第一个思路是刷上 DD-WRT 固件,但是找了一下 DD-WRT 木有支持 DIR-505,只好继续蛋疼地编译 OpenWRT。

    第一遍在虚拟机从 12:20 编译到 23:56,花了将近 12 小时……刚开始时,有一个下载过程,不断失败,想想是因为公司的网络太烂了,于是把下载脚本改了一下:

<openwrt-svn-dir>/trunk/scripts/download.pl 中的 wget -t5 --timeout=20 --no-check-certificate 改为 wget -t5 --timeout=120 --no-check-certificate

    第二天来,刷上,没问题,于是开始改代码去掉 U-Boot 写保护,参考这篇《Openwrt 中刷写 uboot ART》,但结果很不幸,型号不同嘛!

    接下来,凭自己的编程水平了,尝试改 <openwrt-svn-dir>/trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-dir-505-a1.c,加入下面两个结构体:

static struct mtd_partition dir505_partitions[] = { {  .name  = "u-boot",  .offset  = 0,  .size  = 0x010000,  .mask_flags = 0, }, {  .name  = "art",  .offset  = 0x010000,  .size  = 0x010000, }, {  .name  = "mac",  .offset  = 0x020000,  .size  = 0x010000, }, {  .name  = "nvram",  .offset  = 0x030000,  .size  = 0x010000, }, {  .name  = "language",  .offset  = 0x040000,  .size  = 0x040000, }, {  .name  = "firmware",  .offset  = 0x080000,  .size  = 0x780000,  .mask_flags = 0, }};static struct flash_platform_data dir505_flash_data = { .parts  = dir505_partitions, .nr_parts       = ARRAY_SIZE(dir505_partitions),};

    并将 dir_505_a1_setup 函数里的 ath79_register_m25p80(NULL); 改为 ath79_register_m25p80(&dir505_flash_data);

    测试还是无效……看来必须在源头上使 MTD_WRITEABLE 无效掉,grep -r MTD_WRITEABLE <openwrt-svn-dir>/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.10.36/drivers/mtd,看到几处关键的地方:

if (!(ubi->mtd->flags & MTD_WRITEABLE)) {

if (!mtd->_write || !(mtd->flags & MTD_WRITEABLE))

    主要在 mtd_erase、mtd_write 等函数,很明显,C 语言不管在什么平台都是很好懂,看几眼就搞定了,原理是使 MTD_WRITEABLE 这个标志无用掉,您可以设置,但是我把判断这个标志的代码全干掉了,设了也是白设!

    最后编译好的 openwrt-ar71xx-generic-dir-505-a1-squashfs-sysupgrade.bin,用 sysupgrade 刷一下,reboot 后再用 mtd 刷不死 U-Boot,一切顺利,成功刷上不死 U-Boot!

转载于:https://my.oschina.net/umu618/blog/267912

你可能感兴趣的文章
足够安全 美国防部计划将400万部设备升级至Win10
查看>>
转型之旅 VMware是如何践行数字化转型的?
查看>>
27家大数据企业入驻京玖大厦
查看>>
深港成立大数据联盟 推动智慧城市建设
查看>>
《Spring技术内幕》——导读
查看>>
电讯盈科企业方案公司成立全球数据中心联盟
查看>>
美国情报部门表示可通过物联网监控公民
查看>>
2016年俄罗斯M2M市场达100亿俄罗斯卢布
查看>>
AI民主化:你愿意与Cortana共享绝密隐私吗?
查看>>
零售连锁企业CRM可以实现什么?
查看>>
说说CORS与jsonp
查看>>
Vue组件间通信
查看>>
webpack笔记
查看>>
最最最常用的十大ES6特性总结
查看>>
leetcode.最小栈问题
查看>>
js实现可执行的字符串计算
查看>>
IPFS基本使用
查看>>
玩转Go语言之闭包
查看>>
iOS 控制器的实例 的block循环引用
查看>>
用委托者模式实现的多类型Adapter
查看>>