基本这玩意到了一个瓶颈.从本质上来说,硬件分为 nand 和 nor flash .
nand 有坏块. nor 很小
1.你玩 nor 就会遇到 flash 太小导致各种 ipk 塞不进去,或者预留空间太小导致被各种运行日志塞满,文件系统报错,路由崩溃
2.你玩 nand,那你可就享了大福了.因为 Openwrt 喜欢用 squashfs,这是一个高压缩,不支持坏块处理的文件系统.这意味着你得保证你的 rootfs 分区的前 X 块没有坏块(x 取决于固件大小).每台机器坏块位置都不一样,
a.可能你运气好,没有问题,喜滋滋论坛发帖.
b.可能你运气一般,坏块刚好在一些无关紧要的部分,可能只是稳定性问题.
c.更有可能你运气贼差,要么在 uboot 刷入的时候就直接挂载文件系统崩溃,反复重启.要么文件系统报错,勉强进了系统,但是对他的任何读写都会报 I/O 错误.
你要是觉得 squashfs 就辣鸡,我要上 UBIFS,好家伙,编出来的固件比你的 nand 都大.塞不进去.而且你还得考虑需要改 uboot 启动 cmdline
更痛苦的是刷机固件论坛充斥着牛鬼蛇神.各种垃圾固件,意想不到的问题.虽然我感谢对方提供了免费的固件,但是这个质量实在太过感人.终于在某大神处刷了一个有问题的 UBOOT,直接完全砖了.
又一次刷机失败.又是 nand.以前耍过几个小米的 AC2100 已经够恶心了.现在又刷飞了.痛苦 别再刷你的狗屎路由器了.它就是一坨狗屎
1
mooyo 2023-08-05 01:30:53 +08:00
很奇怪的是,x86 的 openwrt 也是这一坨牛鬼蛇神。
|
2
kokutou 2023-08-05 02:00:20 +08:00 via Android 1
没事刷什么 uboot 。。。
编程器都没有,刷什么机。。。 不用官方 op 的 uboot ,刷论坛的 uboot 是什么操作。。。。 |
3
ryd994 2023-08-05 02:20:13 +08:00 via Android
你要装大包就用 pivot root 改到 U 盘上去。所以带 USB 的路由器很好用。
openwrt 官方有编译好的,你需要定制化的话可以用 image builder 直接组装镜像,不需要编译。我也编译过 openwrt ,也没多复杂,需要的时间比较长。 没事刷什么 uboot ,只要 uboot 没坏,就可以用串口救砖。如果 uboot 坏了,就只能用编程器救砖了。 我玩 openwrt 这么多年,少说也有五六个路由器了,没哪个是真的砖了的。最坏也就是串口救回来而已。刷之前先看看官方 wiki ,如果 unbrick 太复杂的就不要碰了。 砖也是刷机的一部分,不爽不要玩 |
4
lhbc 2023-08-05 02:32:22 +08:00 1
1. 不要买 OpenWrt 官方不支持的设备。你用第三方固件还怪 OpenWrt 不成
2. 把固件搞得比空间还大,要是想搞几个大软件进去就该买或者改装大容量的空间 一百几十块的路由器,就是工作一两个小时最多半天的收入吧 自己维护代码、编译固件、维护各个内核模块,这工作量,还不如多花一百,哪有空间不足的问题 |
5
wuruxu 2023-08-05 06:06:18 +08:00 1
我也在使用红米的 AC2100 ,加上亲戚家的,一共 6 台,都是我远程在维护升级。目前使用 openwrt 23.05 , 还是很稳定的
楼主 你可以自己编译一把符合自己需求的固件,这样大小和功能,都能合乎要求。 squashfs 作为一个只读的文件系统,其实还是很符合路由器系统使用的。 |
6
AIXAI 2023-08-05 07:36:33 +08:00 via Android 2
有这精力不如直接去买 glinet 路由器官方自带固件就是 openwrt
|
7
0xsui 2023-08-05 08:11:32 +08:00 via Android 1
刷路由可是个技巧活,除了软件工具齐全,还得有硬件工具,编程器烧录夹,这些工具在折腾路由时候,尤其是内核不启动,引导不启动的时候,是最需要的。
编译固件,也是个技术话,需要你会定制化选择插件功能,要知道,op 开源代码里的编译选项很多都是开发者为扩容硬盘以后编译出来是用的固件,不是随随便便出厂默认硬件能装得下的。 还有一点,玩 openwrt 刷固件,就只折腾一次,只熬一次夜,那是连门都入不了的,很多大佬和宅佬,搞硬件和系统,兴趣和胃口吊起来了,那是废寝忘食,一门心思全身心投入的,有时去掉吃饭和睡觉,剩下时间精力全在硬件和系统上,这种持续一个星期到半个多月都有。 最后再给你一些玩机建议,真想体验较好的 op 系统,又怕刷挂掉,那就几十块钱淘个二手斐讯 N1 ,这东西有线刷,有各种定制固件,而且内存硬盘都爱你的 2100 高,玩机体验更好,还能节省一堆修复疑难杂症的时间。 |
8
0xsui 2023-08-05 08:15:49 +08:00 via Android
让你的 2100 老老实实的做个路由在角落里运行着。等你玩硬件玩系统,脾气好了,性格温和了,经验丰富以后再去碰她……
|
9
bequt 2023-08-05 08:18:25 +08:00
没楼主说得那么不堪,在恩山找到对应的热门刷机机器,随便刷。当然你想硬着头皮搞个性化、特殊化,那就得折腾呗。不然麻烦就加钱上八爪鱼,一两千块钱而已。
|
11
ks3825 2023-08-05 08:51:22 +08:00 via Android
以前闲着没事儿就更新 uboot 版本,看了楼主的遭遇以后不敢了……
|
12
2000wcw 2023-08-05 08:55:25 +08:00
之前的 K2P 刷了各种 OP 和 PADAVAN ,很好用,而且 K2P 有 breed ,完全刷不死。
20 年上了 500M 的联通,就换了个红米 AX6 ,这货刷机很麻烦,还要外接 AP 破解,刷好了 SSH 接着上 OP ,然后就变砖了,去搞了个 RS232 接口后按照教程重新刷了不死 UBOOT 就放心了,随便折腾,现在上面跑 PASSWALL 接免费撸的 AMAZON LIGHTSAIL 和 CLOUDFLARE 的 WORKERS ,每天看油管看网飞还是很爽的。 这玩意就是折腾用的,不喜欢折腾的就电信送的路由就够了。 |
13
pisser 2023-08-05 08:56:22 +08:00
折腾就折腾到底,编程器热风枪用起来。
|
16
m1nm13 OP 感觉来玩 Openwrt 的老哥全是硬件工程师,上来就热风枪干 flash,换编程器烧 bin....
这成本也忒高了,不论是设备还是技术成本 |
17
dant 2023-08-05 11:03:14 +08:00 1
> 因为 Openwrt 喜欢用 squashfs,这是一个高压缩,不支持坏块处理的文件系统
玩了几台 openwrt ,都是 squashfs 放在 ubi 里的 |
18
twoz 2023-08-05 11:06:21 +08:00 via Android
试试小米路由器 ssh
|
19
kidlj 2023-08-05 12:42:19 +08:00 via iPhone 1
为啥不从淘宝买刷好的,一百来块钱。
|
20
ochatokori 2023-08-05 12:45:47 +08:00 via Android
之前有我有两台小米路由器 3 ,有一台死活刷不进原来是坏块的问题
|
21
ochatokori 2023-08-05 12:49:18 +08:00 via Android
还是软路由 x86 吧,我不信你 x86 还能刷坏
|
22
RecursiveG 2023-08-05 12:50:45 +08:00
这就是没有标准的后果,要折腾还是 x86 ,UEFI 比起各种魔改 uboot 香多了。
|
23
Cheons 2023-08-05 12:59:29 +08:00 via Android
为了什么而折腾?
有人是为了学习、娱乐、低成本 为了省心使用,加钱不就完了。 |
24
ocoushika 2023-08-05 13:13:41 +08:00
淘宝 500 多买的软路由 2G+16GB ,3 年了没啥问题,普通路由器折腾不了
|
25
Chieh 2023-08-05 13:29:24 +08:00
刷低配路由就是抱着学习心态,就算砖了也不心疼,而且刷机也挺花时间的,真要高性能还是加钱直接买产品
|
26
locoz 2023-08-05 13:53:25 +08:00 via Android
不如拿 x86 机器装,啥屁事都没有,想装啥装啥,有那折腾的时间都能赚多少差价出来了
|
27
dvbs2000 2023-08-05 17:16:14 +08:00
我就是哪个 x86 的 minipc 虚拟机装进去 稳的一劈
|
28
adoal 2023-08-05 17:37:07 +08:00 1
话说,你有这样的经历,标题不应该是“我再也不刷我的狗屎路由器了”嘛……
尤其是,“更痛苦的是刷机固件论坛充斥着牛鬼蛇神.各种垃圾固件”,你要根据这些江湖风雨来呼吁别人“别再刷你的狗屎路由器了”,让我们不信各种*大固件、只用 imagebuilder 来加官包定制的稳如老狗党情何以堪。 |
29
Donahue 2023-08-05 17:47:34 +08:00
k2p + 我家云/panther x2, 或者 360T7 512M 版本基本就是当前的最优解了。
k2p 便宜性能够用,我测试隔墙 wifi 能跑到 600MB/s 的,现在才 60 多包邮,然后旁路由用于科学、挂软件等。 如果只要跑科学,单独 360T7 512M 也是不错的,内存小点,但是挂 openclash 够用了。 刷路由器就是很折腾的,不折腾的方案要不软路由,要不旁路由(略微没那么折腾) |
30
m1nm13 OP @Donahue #29 怪啊..我用 512m(newifi3)) / 256m(极路由 4/红米 ac2100)的路由都跑过 openclash ,突出一个 一天或者几天爆一次内存.搞得我完全不在非 X86 上跑 openclash 了.你有查过日志,dmesg 啥的吗?
|
31
m1nm13 OP @adoal #28 主要这回买了个新路由来刷也是 YT 被推荐了视频,说又出了个 XX 路由器刷 op 很好用...
但是这种 nand flash 的路由,就是存在我上面提的问题.而且根本没办法解决. 但是这些视频\论坛从来都闭口不谈这个.感觉坑一个是一个.所以我来这边呼吁各位别买了... |
32
m1nm13 OP @bigtan #14 我刷过一共 4 个 AC2100.基本全都有点问题.最差的就是很小的底包刷进去都不开机.最好的也就是有点稳定性的问题.更多的是刷个小的固件还能用,大一点的就开始报错.
所以 NAND 这玩意根本就看运气 |
33
ihciah 2023-08-05 20:18:46 +08:00
别抠那点 rom 空间了,x86 + debian 不香吗
|
34
Donahue 2023-08-05 20:41:50 +08:00
@m1nm13 512M 我其实没测过,但 MT7621 的路由器没什么必要用来跑科学,性能不够
openclash 比较吃性能,可以换 passwall 之类的东西,以前我在 k2p 上跑 passwall 还是够用的 还是旁路由吧 |
35
lc5900 2023-08-05 21:42:43 +08:00
别折腾硬路由了,老实让他做个 ap ,接个软路由用吧,硬路由配置不太行,没啥折腾空间
|
36
minami 2023-08-05 22:09:36 +08:00
ac2100 坏块问题我记得恩山那边一直有讨论的吧,不过确实也没啥解决办法
|
37
bibiisme 2023-08-05 22:36:21 +08:00
你是不知道 ubi 这个东西吗? 7621 那种老古董内核不能放 ubi 里是有这问题,新的 mtk 798x 完全没这问题。
|
38
AliceFizzy 2023-08-06 01:20:10 +08:00
我就是想到硬路由刷固件会砖的风险所以选了 x86+硬路由 AP 的形式,最后一步到位直接 ACAP 软路由
硬路由试错成本有点高了,x86 我甚至可以先整个虚拟机看看里面有啥玩意再考虑要不要用这个固件 |
39
m1nm13 OP @bibiisme #37 ummmm.....我刷飞的刚好就是你说的 7981B H3C NX30PRO .... 他很确定他不是 UBI.或者只有 OVERLAY 是 UBI.
...所以这是什么问题? 我之所以再次刷了它的 UBOOT 是因为我第一次刷入的 uboot 是大分区 UBOOT.在刷了好几个固件不开机,唯一开机的固件在报错 squashfs 错误的时候.我意识到这玩意有根本性的问题,就是我在主题里面说的那个. 打算往回刷的时候找了个某大神 Uboot 直接变砖. 既然你说他支持 ubi. 那为什么最终这些固件都是 squashfs? |
40
cst4you 2023-08-06 03:41:47 +08:00
还好我是 hyperv, 随便整
|
41
yaott2020 2023-08-06 07:53:45 +08:00 via Android
想要好用就加钱,找个 openwrt 支持的路由器,刷官方发布的固件,哪需要操心这么多。
别去捡那些 k2p 之流的垃圾了,折腾到最后都不会符合你的期望的。 前两周换了两台 360t7 ,wifi6 支持,加买个 usb 转 ttl ,直接刷 openwrt 官方固件,速度很满意,全部加起来也就 260 。哪里需要什么编程器,自己小心点就行。 |
42
jackOff 2023-08-06 08:56:12 +08:00 via Android
加入我树莓派阵营吧,使劲造也就是个 sd 卡的问题
|
43
levenwindy 2023-08-06 09:12:18 +08:00 via Android
#29 #41 +1 ,买个 mt7981 ,海鲜平台已经魔改好 512 的也才 160~170 ,到手就能刷。WiFi 6
不会编译的话,到恩山注册个账号,用别人的就行了。 |
44
documentzhangx66 2023-08-06 11:46:41 +08:00
民用级软路由的首要优点是方便好用,而不是考虑包转发性能,所以民用级软路由的正确打开方式是 x86 mini 主机,兼容性高,刷起来也方便,而不是各种奇奇怪怪的 ARM 设备。
你要包转发性能,完全可以上硬路由。如果又要性能,又要功能,也可以加钱上 FPGA + 志强 x86 协作的企业级路由。 |
45
Hopefully 2023-08-06 12:47:29 +08:00
为啥不选 X86 ?
菜鸟更应该上 X86 ! |
46
justfun 2023-08-06 14:42:07 +08:00
不知道为啥看到这句话“别再刷你的狗屎路由器了”可想笑哈哈哈(友善的 非恶意
我曾经也是刷机刷的想摔手机哈哈 |
47
bibiisme 2023-08-06 17:57:40 +08:00
@m1nm13 刷机不开机是因为 h3c 的官方和第三方固件默认是 64m 的 ubi ,你刷那个大分区 uboot 是 112m 引导不了这些固件才开不了机,跟坏块根本没关系。
|
48
bibiisme 2023-08-06 18:03:10 +08:00
@m1nm13 刷机不开机是因为 h3c 的官方和第三方固件默认是 64m 的 ubi ,你刷那个大分区 uboot 是 112m 引导不了这些固件才开不了机,跟坏块根本没关系。而且 mtk 还有个运行在 nand 底层的 nmbm 坏块处理机制(对上层文件系统透明)
squashfs 封装在 ubi 里面,这有什么冲突吗?文件名没写 ubi 就没用 ubi 了 ? |
49
m1nm13 OP @bibiisme #48 https://openwrt.org/docs/techref/filesystems
> There is a generic problem when running SquashFS on NAND: The issue is that SquashFS has no bad block management at all and requires all blocks on order; but for proper NAND bad block management you also need to be able to skip bad blocks and occasionally relocate blocks (see squashfs and NAND flash). That's why raw SquashFS is a bad idea on NAND (it works if you use a FTL like UBIFS). 而且不是不开机,是 uboot 网页都打不开了 |
55
m1nm13 OP @bibiisme #54
https://firmware-selector.immortalwrt.org/?version=23.05.0-rc3&target=mediatek%2Ffilogic&id=h3c_magic-nx30-pro 我最后一次刷 uboot 直接刷了这里面的 uboot,然后就不行了.至于命令` mtd write /tmp/xxx.bim FIP` |
57
m1nm13 OP @levenwindy #43 牛的牛的.第一次知道还有卖改好内存的
|
58
bibiisme 2023-08-06 18:52:26 +08:00
@m1nm13 这个就是主线 uboot 。一会用没人用的大分区 uboot ,一会去用不带 nmbm 的主线 uboot 和原厂开了 nmbm 的 uboot 混搭,你不炸谁炸。
不老老实实刷大家都用的 64m uboot ,自己去刷的东西是什么都不知道,唉。 |
60
m1nm13 OP @bibiisme #59 我是看的 YT 视频入坑的.他提供的刷机包也没写是啥 uboot,我试了几个固件才发现它的 uboot 是大分区的.
不过还是有个问题.我唯一一次能跑起来的 OP 固件,ssh 进去 dmesg 一堆 squashfs 的 IO 错误. 难道不是坏块导致的吗?如果是的话.那我主题里面说的是不是也没错?玩 nand 就是在抽奖. 报错我只留下了 wget 的,dmesg 的没存 ``` root@ImmortalWrt:~# wget Error loading shared library libssl.so.1.1: I/O error (needed by /usr/bin/wget) Bus error ``` |
61
bibiisme 2023-08-06 19:02:05 +08:00
@m1nm13 谁的 yt 视频,发出来看下? ImmortalWrt 也是 64m 的 ubi ,和 112m uboot 的 ubi 大小对不上挂载有问题不很正常?
|
62
hanwckf 2023-08-06 19:02:27 +08:00 via Android 2
@m1nm13 openwrt 主线的 nand 固件是在 ubi 抽象层上面划分 rootfs 和 rootfs_data 两个 volume ,其中 rootfs 用只读不可写的 squashfs ,rootfs_data 用可读写的 ubifs ,squashfs 完全只读不可写,正常使用过程中不可能出现坏块,只要在刷入的时候由底层的 ubi 抽象层处理坏块就完全没问题。
另外如果是 mt798x 的路由器,还有一个比 ubi 更底层的 nmbm 子系统处理坏块映射,一般来说 ubi 抽象层连坏块都看不见(但是 openwrt 的主线 uboot 和 ubootmod 固件因为社区某些人的坚持,没有开 nmbm 支持,只使用 ubi 处理坏块) |
65
bibiisme 2023-08-06 19:18:37 +08:00
@m1nm13 自己去想办法用主线 uboot 怎么刷机吧。我问了下主线 uboot 是不会响应 ping 的,只能 tftp 刷机。
|
66
madku 2023-08-07 09:28:45 +08:00
炸出一堆大佬
|
67
cndns 2023-08-07 22:40:24 +08:00 via Android
@m1nm13 open.wrt.cc 里面有 nx30pro 固件
|
69
MSIAM 2023-08-08 15:03:06 +08:00
嫌弃这个那要不学我用傲腾当系统盘? 16G 的傲腾非常便宜
|
70
hahasong 2023-08-09 16:09:30 +08:00
@hanwckf #62 搭车问一个问题,AX6 有 rootfs rootfs_1 两个分区,我刷了 op 最新 rc2 https://firmware-selector.openwrt.org/?version=23.05.0-rc2&target=ipq807x%2Fgeneric&id=redmi_ax6
直接把我分区合并成一个 rootfs 了。不知道这个是可以动态映射的还是改了官方分区表? 然后也不能刷机让先 detach 也不能 sysupgrade 别的 op. 这种情况想刷别的固件咋办? |
71
TsukiMori 2023-08-10 17:03:57 +08:00
刷 OP 当然是去官方支持列表里找设备然后用官方编译的版本
进阶一点就是根据官方的源代码自己编译 刷论坛里的固件本来就是很牛鬼蛇神的事情…… |
72
chancat 2023-08-11 09:02:42 +08:00 via Android
你要是用京东云亚瑟你会出这问题?你用 qsdk 的固件会有这问题?没有 nss 加速的硬路由,🐶狗都不用
|
74
TsukiMori 2023-08-11 17:54:28 +08:00
@a90405 也看方案 以前 wifi5 时代那群 MT7621 配方的玩意官方驱动其实也可以 但是高通 ipq806x 方案的那几个大块头洋垃圾真的是官方驱动狗都不用 没有 NSS 驱动的 OP 无线性能和 nat 性能都超不过 500M 加了 NSS 当 AP 867M 的协商速度才能跑到 680+
x86 配官方 OP 是最省事的 唯一的缺点就是官方预编译的版本并不能 NAT1 只能用官方源码编译 然后手动加补丁进去 |
76
zhongxiaoqian 2023-08-12 14:15:44 +08:00 via Android
我是更新路由器固件的时候总是出问题,到现在不敢随便更新。
|
77
bibiisme 2023-08-12 17:31:15 +08:00
自己刷了有问题的 uboot 怪机器,然后对一堆人刷机成功的正常 uboot 表示怀疑。果然从一开始你分不清 ubi 和 ubifs 的时候就没必要回复你。
|
78
txfsjzm 2023-08-14 00:50:43 +08:00 via Android
我刷上了,目前遇到的 bug 就是 ssr plus+ 8 小时死一次,别的很 ok
|
79
leungzw246 2023-09-30 21:03:43 +08:00 via Android
直接去终点:x86+ap
|
80
kenX 360 天前
前天周末刚把手上的 xdr6086 刷了官方 openwrt ,然后再看到了一系列 nmbm 相关的资料,大概明白了可能存在的风险,所幸我刷机过程比较顺利,没有搞坏引导部分。但也还有些疑问,故特意来请教一下。
背景: 我的 xdr6086 原厂固件较久,使用 openwrt 官方指引的命令注入漏洞可以成功拿到 shell 权限。 刷入 PRELOADER 和 BL3 前在 TP 原厂固件备份了 mtd9 ,应该是整个完整的 nand 内容了,大小正好是 128*1024*1024=134217728 问题: 1 、在原厂固件 shell 环境中备份的 mtd9 是否可以理解为一个准确无误的完整备份?因为 nmbm 对上层透明,上层应用读取的 mtd9 已经过纠错 2 、虽然刷机后正常启动和使用,但刷成官方 openwrt 后由于没有 nmbm 支持,假如 nand 在 factory 分区(校准数据)部分有坏快,原厂 nmbm 机制会将坏快部分的数据存放到冗余区,这可能导致导致官方 openwrt 无法准确读取和使用这部分数据,这个理解是否准确? 3 、假如 2 所述问题存在,是否从 mtd9 备份中提取 factory 及其他关键部分数据,在 op 下重新刷入,能解决无 nmbm 支持环境下的数据准确性问题? 4 、假如后续由于各种原因需要拆 nand 或更换 nand ,涉及到使用编程器将 mtd9 完整备份写入 nand 的步骤,这个 128M 的 nand 如何写入?编程器读出来的完整备份应该是带 BCH 校验的,容量大于 128M @bibiisme @hanwckf 希望两位大佬可以答疑一下 也欢迎其他朋友讨论 |
82
kenX 358 天前
@bibiisme 原来是这样。我看 openwrt 论坛关于 xdr6086 适配过程的那个帖子,有人发了原固件提取的 dtb ( https://forum.openwrt.org/t/adding-support-for-tp-link-xdr-6086/140637/6 ),里面看到有 nmbm 相关属性,以为也是开启的。可惜我前几天刷机的时候还没关注到这块的内容,没有在原厂固件上做相关确认就开刷了。
|
83
hanwckf 328 天前 via Android 1
@kenX tplink 原厂没有开 nmbm ,所以不用考虑你的问题 123 ,ubi 前面应该不会出现坏块。
至于问题 4 ,因为市面上所有的 mt798x 都是使用 spi-nand 的内置 ondie-ecc 作为 ecc 引擎,没有像前代产品一样使用 cpu 内部的 snfi ,所以编程器在写入 spi-nand 时必须要开启 ondie-ecc ,由 nand 芯片自行处理 ecc oob 数据(编程器写入的数据大小就是 128M ),编程器在离线备份时也不需要备份 nand 的任何 oob 数据。 |
84
kenX 309 天前
|
86
qzydustin 104 天前
时隔一年,再次回来,不由得觉得 op 说得越来越有道理了。
个人观点: 1. 刷使用人多的固件,某些固件支持几十个硬件设备,但是开发者可能就测试过几个自己有的设备,😂 2. 有 OpenWRT 官方的固件,直接全套官方的是个接近最优解,可能因为开源驱动无线不是最强,但是差距不大。特别是 MTK 系列,现在官方的开源驱动还是不错的,今年还修复了 mt7628 的问题,https://github.com/openwrt/openwrt/issues/10074 ,现在小米 nano 可以变成个优雅的玩具。 3. 高通 IPQ6000 系列,官方不支持,用的 Lean VIP 群的闭源固件,50 元入群费。有一些细节上的小 bug ,反馈了也没人修,软件源比较老也不适合装软件包折腾,固件内自带的软件差不多都够用。可以把这个看成加了功能的原厂固件,没有扩展性,但是稳定性和性能都是挺好的。不够优雅但是实用派。 4. padavan 太老了,pandorabox 不更新,非怀旧或者实用派还是不要碰了,不够优雅 |