前言
在博主很小的时候,大概是上初三那会,无意间接触到了一些关于我的世界服务器的知识。在潜心学习(其实是乱搞一通)一段时间之后,终于萌生出了一个大胆的想法:我也要开个好玩的我的世界服务器!
当时博主还只会用拼多多,也不懂什么硬件之类的。再加上零花钱紧缺,就只会傻乎乎的搜我的世界服务器,然后再一个个的找既便宜又看起来牛逼的。在那个一个4+64的j1900都要大几百的年代,拼多多上各种电子垃圾简直贵的离谱。
后来在不断的搜寻下,找到了一款号称可以流畅运行我的世界服务器的电视盒子:H96MAX,还是4+64版的。当时商家怕我们这些小白不会配置之类的,还提供免费的内网穿透和一大堆的服务。虽然当时我不知道这么多服务是个啥,但关键是这么多东西只要近两百大洋。
我有感觉:买这玩意绝对赚了。
后来买回来准备开服的时候才发现,,每一次按照网上的教程运行就报错。看着每次运行报错的一堆信息,我真的头大,当时也没有所谓的ai解答,只能自己上网去对照报错一个个慢慢找。
后来一顿搜索才知道我想玩的版本是“基岩版”,电视盒子的芯片是RK3318,属于arm芯片,基岩版服务器无法在arm的芯片上运行。
头大,真的头大,买来的盒子除了放着吃灰外,没什么我会折腾的。索性就放着,偶尔拆开看看。
在拆来拆去几个月后,终于在有一天,我知道了一个叫做”blog“的东西。
当时还是用的typecho。
这个东西好啊,那时候,博主还是个喜欢发说说的小朋友。看到这玩意:千变万化的主题,无数种字体等等在空间里不能实现的,在blog上都可以轻而易举的展示。那可是两眼放光。
后来就用盒子部署了一个blog放在家里通过赠送的内网穿透部署到公网,期望着可以像很多厉害的blog一样写出很多优秀的文章。
可能是比较懒,也可能是后来上高中没这么多时间记录的缘故。
实际上,直到后来盒子系统损坏,博客里也仅仅只有一篇自动生成的欢迎报告。
当然在博客折腾的过程中,我也遇见了不少的大佬,学习了不少的知识(虽然是散装的?),也还算其乐无穷。
当然,再讲下去有点偏离本文的叙述范畴了。
咳咳,回归正文。
刚刚说到了,在部署blog之后,博主成为了一个朝五晚九的苦逼高中生,盒子也一直在家插电闲置。
在有一天我尝试访问blog的时候,链接不上,才知道blog已经离线了。
原以为是内网穿透的问题,因为赠送的服务,稳定性肯定差一点,等它自己恢复应该就好了。可后来回家才发现,盒子已经关机很久,开机怎么也进不去系统,提示报错文件系统损坏。
找了很多办法没点屁用,当时的博主以为这玩意彻底坏了,也就没怎么管过,就真的吃灰三年。
文件系统损坏恢复
在前言中提到,盒子在开机后一直提示:
[FAILED] Failed to mount /sysroot.
See "systemctl status sysroot.mount" for details.
[DEPEND] Dependency failed for Initial Boot File System.
[DEPEND] Dependency failed for Reload Configuration from the Real Boot.
OK 1 Stopped dracut pre-udev hook.
OK 1 Stopped dracut initqueue hook.
OK 1 Stopped target Basic System.
OK 1 Stopped target System Initialization.
OK 1 Started Emergency Shell.
OK 1 Reached target Emergency Mode.
OK 1 Reached target Initial File Systems.
Generating "/run/initramfs/rdsosreport.txt"
Entering emergency mode. Exit the shell to continue.
Type "journalctl" to view system logs.
You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /host
after mounting them and attach it to a bug report.这里我们主要注意Failed to mount /sysroot. 这里提示说无法挂载/sysroot
同时提取出文件rdsosreport.txt 。
对提出的文件rdsosreport.txt进行分析,
得到系统启动日志。关键错误出现在最后部分:
系统尝试挂载根文件系统
/dev/mmcblk2p17时失败。文件系统检查
fsck失败,错误代码8,提示“execute failed: Exec format error”,这可能是由于fsck.ext4无法执行(可能是架构不匹配或文件损坏)。挂载根文件系统时,系统报告
“Structure needs cleaning”。随后,系统进入紧急模式。
其实这里就大概可以判断出问题所在了:
首先,可能是文件丢失或者分区损坏而导致文件系统出现错误。
其次,系统在尝试调用fsck.ext4这个文件时提示“execute failed: Exec format error” ,可能原因是文件与当前系统架构不匹配而导致,也有可能是该文件丢失。
解决方案
尝试手动修复文件系统
在紧急模式的shell中执行:
# 1. 卸载文件系统 (确保未挂载)
umount /dev/mmcblk2p17 2>/dev/null
# 2. 强制修复文件系统
e2fsck -f -y /dev/mmcblk2p17
# 3. 检查修复结果
echo $?
# 返回0表示成功,非0需进行下一步很幸运,这里我们在执行完之后,系统返回0即,代表修复成功。
之后可以正常重启进入系统。
救砖成功。
刷入armbian
从其他渠道了解到这块rk3318的板子可以刷入armbian,
大概步骤就是将引导镜像刷入U盘,再将armbian系统拷贝至U盘启动,从而刷入镜像。
但尝试多次,发现总卡在从U盘启动这一步。
?
这是怎么回事呢?
在反复刷机几十次后发现:
似乎是原系统的问题。
原厂家在刷入自制的镜像的时候修改了底层的boot,使的这种boot可以正常识别自制的系统。
但是我们要启动的这个引导镜像就必须依赖于原安卓boot才能正常启动。
梳理一下目前问题:
首先我们要启动引导镜像
其次从引导镜像刷入armbain
现有boot无法启动镜像
原安卓boot可以启动镜像
也就是说,目前应刷回安卓系统,再从安卓输入armbian
刷入安卓系统
使用瑞芯微自有的刷机软件进行刷机。
先找到瑞芯微官方驱动,点击安装驱动,等其自动安装即可。

安装完驱动,打开瑞芯微工厂工具,选择安卓固件,选定模式为修复,点击开始,再用小针顶住av口后面的按钮,将盒子与电脑用双头usb线连接,大约三到五秒松开,等待其刷入成功即可。
刷入armbian
刷入armbian比前面来说要简单的多。镜像链接:Index of /jock/web/rk3318/
制作启动盘
使用balenaEtcher将multitool.img烧录到TF卡上。烧录完成后,把镜像文件复制进MULTITOOL分区的images文件夹里。
分区容量不够的,可以用磁盘工具进行扩容。
刷入镜像
将TF卡插入电视盒,连接至显示屏并插入键盘和电源线。几秒钟后,蓝色 LED 开始闪烁并出现 Multitool 菜单。
从菜单中选择 “Erase flash” 格式化盒子的所有分区;
选择 “Burn image to flash”,然后选择目标设备(通常为 mmcblk2)和要刻录的镜像;
等待刷机过程完成,然后从主菜单中选择 “Shutdown”;
拔掉电源线和TF卡,将然后重新插上电源线;
等待 10 秒,然后 LED 应该开始闪烁并且 HDMI 将打开。第一次启动过程需要几分钟或更长时间,因为文件系统将被调整大小,所以请耐心等待登录提示。
救砖
请重复刷安卓的步骤。
后续设置
首次启动时,系统会要求您输入您选择的 root 用户的密码以及普通用户的名称和密码并选择时区和 WiFi。也可以在设置完root密码后按 ctrl+c 退出设置(可以用 armbian-config 设置时区,语言,WiFi和其他个人设置);
运行 rk3318-config 以配置板特定选项(可以更改cpu的运行最大频率和EMMC的频率);
替换原镜像源sources.list(如果镜像源不是国内的,可以更换镜像源加速包的安装);
后记
在折腾这个板子的时候找到了一个有趣的现象:
在瑞芯微官网并没有提到这款芯片,同时网络上流传着大量rk3318和rk3328通用的镜像。加上rk3318极不稳定的发热以及漏电情况来看,很有可能rk3318是魔改的rk3328的废板,当然这只是个人推测,有不准确的地方,欢迎留言。