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
-
前两天入手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