前言

在博主很小的时候,大概是上初三那会,无意间接触到了一些关于我的世界服务器的知识。在潜心学习(其实是乱搞一通)一段时间之后,终于萌生出了一个大胆的想法:我也要开个好玩的我的世界服务器!

当时博主还只会用拼多多,也不懂什么硬件之类的。再加上零花钱紧缺,就只会傻乎乎的搜我的世界服务器,然后再一个个的找既便宜又看起来牛逼的。在那个一个4+64j1900都要大几百的年代,拼多多上各种电子垃圾简直贵的离谱。

后来在不断的搜寻下,找到了一款号称可以流畅运行我的世界服务器的电视盒子: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进行分析,

得到系统启动日志。关键错误出现在最后部分:

  1. 系统尝试挂载根文件系统/dev/mmcblk2p17时失败。

  2. 文件系统检查fsck失败,错误代码8,提示“execute failed: Exec format error”,这可能是由于fsck.ext4无法执行(可能是架构不匹配或文件损坏)。

  3. 挂载根文件系统时,系统报告“Structure needs cleaning”

  4. 随后,系统进入紧急模式。

其实这里就大概可以判断出问题所在了:

首先,可能是文件丢失或者分区损坏而导致文件系统出现错误。

其次,系统在尝试调用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

刷入安卓系统

使用瑞芯微自有的刷机软件进行刷机。

先找到瑞芯微官方驱动,点击安装驱动,等其自动安装即可。

屏幕截图 2025-09-14 080545.png

安装完驱动,打开瑞芯微工厂工具,选择安卓固件,选定模式为修复,点击开始,再用小针顶住av口后面的按钮,将盒子与电脑用双头usb线连接,大约三到五秒松开,等待其刷入成功即可。

刷入armbian

刷入armbian比前面来说要简单的多。镜像链接:Index of /jock/web/rk3318/

制作启动盘

使用balenaEtchermultitool.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(如果镜像源不是国内的,可以更换镜像源加速包的安装);

后记

在折腾这个板子的时候找到了一个有趣的现象:

在瑞芯微官网并没有提到这款芯片,同时网络上流传着大量rk3318rk3328通用的镜像。加上rk3318极不稳定的发热以及漏电情况来看,很有可能rk3318是魔改的rk3328的废板,当然这只是个人推测,有不准确的地方,欢迎留言。