UNT403a (2+16) 系统写入emmc出错的一种解决方法 #1911
Unanswered
zzhi-github
asked this question in
Amlogic
Replies: 2 comments
-
犯了个低级错误,最新的trixie是testing状态,连docker都装不了!!! 没办法,重新下载bookworm release,再次从头开始。。。烧录usb,改uEnv,用u盘boot,漫长等待进入系统。 然后就是我说的,用blkid /dev/mmcblk2p2 输出格式化好的第二个分区UUID和Label,记住UUID,打开armbian-install,修改UUID,注示掉mkfs.ext4。参见我diff的结果:
最后,执行新的脚本就能把系统写入emmc了。 |
Beta Was this translation helpful? Give feedback.
0 replies
-
配服樓主的功力及探究精神! |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
前两天入手UNT403a(2+16),芯片应该是s905l3a。卖家发货是刷过机,Android有root权限。
收货当天用电脑adb connect可以连接盒子,说明debug模式开启。第二天新入手的u盘,国货Greatwall USB 2.0 64G,直接烧录armbian最新的trixie 5.15.139。话说在GitHub上下载压缩过的img太费劲了,好不容易找到个国内代理,多线程也下载了一个晚上。
当天晚上,把盒子上的几个TV直播软件用adb备份出来,有两个app还是能看电视直播的,这不物以稀为贵嘛。然后用adb shell update重启盒子,立即插入烧录好的u盘。系统能顺利启动,对了烧录后改了uEnv的dtb,用的是401a的。启动后,登陆root一切正常。时间已晚,就一直让盒子开机,等第二天把系统安装到emmc。
第二天晚上有空开始折腾emmc安装,用armbian-install脚本,选择306和ext4,结果脚本执行到中间中断,出现I/O错误。
blk_update_request: I/O error, dev mmcblkz, sector 30539752 op 0x1: (WRITE) flags 0x800 phys_seg 3 prio class 0
Buffer I/O error on dev mmcbIk2, logical block 3817469, lost async page write
这一下抓瞎了,各种翻找,在网上寻求解答。结果资料五花八门,看得人云里雾里。有人说选303,304和305,也有人说ext4可能会出问题,GitHub上官方的帮助文档和issue回答更偏向一个方法,调节emmc max-frequency,降低频率。于是一通忙活,反编译,改dts,重新编译dtb,更换原来的dtb,重启。把频率试了个遍,全部都是I/O出错。其实,issue里面没有人说出来到底怎么解决这个问题,有人提到改了frequency后成功,有人也是试过所有的frequency,结果失败。我甚至把openAI抓着问了一遍又一遍,还是没有找到问题根结。折腾一晚上,铩羽而归。感觉可能机器本身的体质不适合armbian,都想到退货了。(其实水货市场买的二手,不太好意思说)
第三天,机器一直不敢关机,u盘也一直挂着。想一想还是不甘心,重新看了一遍官方文档,研究了一下emmc的分区。结果发现dump出来的分区信息比较简单,就两个分区mmcblk2p1,mmcblkp2,基本上就是第二个分区会出错。用lsblk看过,也用fsck检查了一遍分区,一切正常。这就奇怪了,决定彻底检查一遍第二个分区,问过openAI后,用dd命令执行了read和write操作,把整个分区都扫了一遍,没有任何错误!!!
OK,一执行armbian-install就看见syslog报错,一直出现I/O error,奇葩!好吧,用脚本调试模式bash -x /usr/sbin/armbian-install看看到底哪里出错了。结果发现问题出现在第二分区的格式化命令: mkfs.ext4,手动执行这个命令立马报错,一毛一样。又找了一下网上,有人说armbian可能有bug,但没有确实的证据,但事实就是无法执行mksf.ext4。怎么办?
再次检查了两个分区,第一个是vfat,安装的是boot文件;第二个分区是ext4,安装的系统文件。但第二个分区本身就是ext4,里面没有任何内容,为什么安装的时候还要格式化呢?我猜脚本的初衷是彻底格式化这个分区,一个绝对干净的分区上安装系统文件是最理想的。但armbian的mkfs.ext4死活就是无法正确执行。既然第二个分区已经是期望的ext4,里面也是空的,那么直接用就行了,跳过格式化理论上不就能解决问题了吗?
说干就干,打开armbian-install找到格式化命令,注示掉。把跟格式化分区相关的参数都手工填好,其实就是UUID和一个固定label,这些用系统的命令就能设置,没什么难度。不过armbian居然没有vi,只能用nano;搞得不像Linux嘛。
OK,把修改好的脚本让openAI检查一遍,一切就绪。执行新的armbian-install,激动的期待系统刷入emmc。再次用bash -x执行脚本,果然一切按预料的结果,系统顺利得刷入emmc。同时在另一个window看到syslog还是在报错I/O error,不过这都不重要了。我觉得I/O error可能是armbian kernel的一个bug。
最后,按照教程:poweroff 系统,拔掉u盘,重新上电。armbian系统就这样安静的启动了,一切都很丝滑。唯一的问题就是poweroff后我立即拔掉了u盘,结果系统还没正常shutdown,有些文件读写的动作中断了,可能u盘上的系统不完整,不知道是否会影响下一次u盘启动系统。
总结:UNT403a将系统写入emmc的I/O出错有可能是mkfs.ext4格式化的锅,更改max-frequency无法解决。如果ext4分区已经能正常使用,可能自己动手修改armbian-install,删除格式化操作,直接执行后面的部分。系统日志中的I/O error可以无视,至于是不是会影响系统稳定性,还待后期使用反馈。望刷机的小伙伴能顺利解决类似的问题,感谢项目的贡献者,完善的帮助,还有issue各种讨论。
Beta Was this translation helpful? Give feedback.
All reactions