网站已进行站点迁移,新站点:blog.murainy.com,部分链接展示异常,新页面预计在24小时内生效。详见更新日志 预计剩余0天0时0分0秒
H618 4+64G 有锁盒子刷 Armbian以及配置TOC0、eMMC、Docker 与 1Panel 完整实录

之前买的数智佳 H618 电视盒子被我乱刷固件刷成有锁的了,近日翻了出来,重新编译最终吃上了armbian。本篇教程是AI写的,把其中的坑给大家排一排。

如果你也是同款数智佳盒子,不要着急看这个教程,可以参考这个:https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=8469382&extra=&highlight=h618%2Barmbian&page=1 因为这个盒子本身是无锁的,这个教程上半仅适用于有锁机器的引导启动。


这篇文章可以解决下面几个特殊问题:

  • 普通 eGON.BT0 镜像无法从 TF 卡引导;
  • 必须使用自签名 TOC0 U-Boot;
  • 安装到 eMMC 时必须同步替换 rootfs 内的 U-Boot;
  • 自动升级会覆盖定制内核和 DTB,导致无法启动;
  • Docker 需要使用 iptables-legacy

本机配置:

SoC:       Allwinner H618
内存:      3.8GiB 可用(标称 4GB)
eMMC:      58.3GiB(标称 64GB)
网卡:      RTL8211F 千兆网卡
系统:      Debian Bookworm / Armbian 25.05
内核:      6.12.11-edge-sunxi64
根分区:    /dev/mmcblk0p1
引导格式:  TOC0.GLH

本文只在这一块数智佳 H618 4+64G、X98H 配置、RTL8211F 网卡的主板上验证成功。即使商品名称和容量相同,不同批次的 DRAM、eMMC、网卡、供电及安全熔丝也可能不同。务必先从 TF 卡验证,确认成功后再写 eMMC。

一、核心原理

普通 Allwinner Armbian 镜像的引导头通常是:

eGON.BT0

这台锁机盒子不会执行 TF 卡里的普通 eGON SPL。实测必须把 SPL/U-Boot 打包成 TOC0,正确镜像从 8KiB 偏移开始应看到:

TOC0.GLH

对应十六进制:

54 4f 43 30 2e 47 4c 48

本机可以接受本地密钥签名的 TOC0,说明它要求 TOC0 格式,但没有被不可替换的厂商 ROTPK 完全锁死。其他机器如果已经把厂商公钥哈希写入 eFuse,本文镜像仍可能被拒绝。

二、开始前准备

准备以下物品:

  1. armbian 自签 TOC0 镜像;
  2. 与镜像配套的 linux-u-boot-x98h-edge DEB;
  3. 一张大于4G的 TF 卡,读卡器和 Rufus、balenaEtcher 或 Win32 Disk Imager。
  4. 有线网络和能够查看 DHCP 地址的路由器。

(所需文件网盘链接放在文章结尾了,大家可以自取)

三、写入 TF 卡并验证启动

把文末提供的最终镜像完整写入 TF 卡:

Armbian-unofficial_25.05.0-trunk_h618_debian_edge_6.12.11_server_TOC0_TF_4G_TEST.img

盒子彻底断电,插卡后再上电。从路由器中寻找新的 DHCP 地址,然后 SSH 登录。

四、安装到 eMMC 前必须替换系统内的 U-Boot

这是整套流程最关键的一步。

最终 TF 镜像的裸引导区虽然已经写入 TOC0,但 rootfs 内的 U-Boot 文件可能仍是普通 eGON 版本。armbian-install 会使用 rootfs 里的文件写入 eMMC;如果跳过本节,TF 可以启动,拔卡后 eMMC 可能无法启动。

从电脑上传配套 DEB:

scp linux-u-boot-x98h-edge_25.05.0-trunk_arm64__2025.01-S6d41-P754c-H8869-Ve54e-Bb703-R448a.deb root@盒子IP:/root/

在盒子中校验并安装:

cd /root

echo 'aaa99261873553a21cf72d16f02bed3ad9683a8047c17dd6b2ff3ccd362cfb9c  linux-u-boot-x98h-edge_25.05.0-trunk_arm64__2025.01-S6d41-P754c-H8869-Ve54e-Bb703-R448a.deb' \
  | sha256sum -c -

dpkg -i linux-u-boot-x98h-edge_25.05.0-trunk_arm64__2025.01-S6d41-P754c-H8869-Ve54e-Bb703-R448a.deb

验证待写入文件:

sha256sum /usr/lib/linux-u-boot-edge-x98h/u-boot-sunxi-with-spl.bin
od -An -tx1 -N8 /usr/lib/linux-u-boot-edge-x98h/u-boot-sunxi-with-spl.bin

必须得到:

2340dae80c0ba7caf96d2edf548beca1e141e3d1e1d40fed54cc3b4d2416fcec
54 4f 43 30 2e 47 4c 48

五、确认 TF 与 eMMC 的设备名

不要照抄设备编号,先检查本机:

findmnt /
lsblk -e7 -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL
dmesg | grep -Ei 'mmc|emmc|sdhci' | tail -80

本机的对应关系是:

设备含义
/dev/mmcblk1,29.1GiBTF 卡
/dev/mmcblk0,58.3GiB,型号 TWSCeMMC
/dev/mmcblk0boot0boot1eMMC 引导分区

如果你的编号相反,必须按实际结果操作。写错设备会破坏 TF 卡或 eMMC。

六、安装 Armbian 到 eMMC

确认当前根分区来自 TF、内存为 3.8GiB,并且 rootfs 内已经是正确 TOC0 U-Boot 后执行:

armbian-install

本机选择:

2  Boot from eMMC - system on eMMC

目标选择已核对的 eMMC,文件系统选择 ext4,等待复制完成。这个过程会清空 eMMC 原有系统和分区。

完成后:

sync
poweroff

彻底断电后拔掉 TF 卡,再上电。登录后检查:

findmnt /
free -h
uname -r

成功结果:

/dev/mmcblk0p1
Mem: 3.8Gi
6.12.11-edge-sunxi64

七、第一时间锁定板级软件包

这台机器依赖定制 U-Boot、内核和 DTB。普通 apt upgrade 曾把包升级到 Armbian 26.5.1,实际装入 7.0.12-edge-sunxi64,重启后 HDMI 和网络全部不可用。

首次从 eMMC 启动成功后,立即锁定以下四项:

apt-mark hold \
  armbian-bsp-cli-x98h-edge \
  linux-dtb-edge-sunxi64 \
  linux-image-edge-sunxi64 \
  linux-u-boot-x98h-edge

apt-mark showhold

应显示四个包。

默认源为官方源,在国内建议自行换源。

之后升级用户空间前先模拟:

apt update
apt upgrade --dry-run

确认没有上述四项,再执行:

apt upgrade

不要使用 armbian-upgrade,暂时避免 apt full-upgradedist-upgrade,也不要显式安装这四个包的新版本。

八、安装 Docker 与 1Panel(可选)

1Panel 使用 Docker/Compose 管理网站、数据库和应用,所以安装前必须准备 Docker。

安装时大概率会报错Job for docker.service failed because the control process exited with error code.See “systemctl status docker.service” and “journalctl -xeu docker.service” for details.应该是系统默认的 iptables-nft 与精简内核不匹配,可以按照以下流程配置。

1. 检查 Docker 所需模块

这张 6.12.11 镜像已经包含 Docker 基础模块:

for m in \
  overlay bridge br_netfilter veth \
  nf_conntrack nf_nat \
  ip_tables iptable_filter iptable_nat iptable_raw \
  xt_MASQUERADE
do
  if modprobe "$m"; then
    echo "[成功] $m"
  else
    echo "[失败] $m"
  fi
done

没有问题的话,应该是全部加载成功的。

2. 切换到 iptables-legacy

内核保留了完整的 legacy iptables/NAT 模块,但 nftables 的 IPv4/IPv6 table 支持不完整。Debian 默认的 iptables-nft 可能让 Docker 报出“无法创建 NAT chain”一类错误。

apt-get install --no-install-recommends iptables

update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

iptables --version
ip6tables --version
iptables -t nat -S

版本中应出现 (legacy),NAT 表应能够正常列出。

让模块开机自动加载:

tee /etc/modules-load.d/docker.conf >/dev/null <<'EOF'
overlay
bridge
br_netfilter
veth
nf_conntrack
nf_nat
ip_tables
iptable_filter
iptable_nat
iptable_raw
xt_MASQUERADE
EOF

启用容器转发:

tee /etc/sysctl.d/99-docker.conf >/dev/null <<'EOF'
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
EOF

sysctl --system

3. 验证:

systemctl is-enabled docker
systemctl is-active docker
docker version
docker info
docker run --rm hello-world
1pctl user-info

*九、容易踩的坑

坑 1:普通 Armbian 镜像写卡后毫无反应

原因:镜像使用 eGON.BT0,锁机 BootROM 不执行它。

处理:使用开头为 TOC0.GLH 的配套镜像。不要因为同为 H618 就把本文 U-Boot 直接写入其他批次 eMMC,应先从 TF 测试。

坑 2:系统启动了,但只有 1.9GiB 内存

原因:TOC0 回退路径中 U-Boot proper 的内存探测上限为 2GiB。

处理:使用包含 4GiB 探测补丁的 U-Boot。正确的设备树内存长度为 00000001 00000000

这个一般不会出现,因为我上传的就是带4g补丁的包。我也把探测补丁一并放在了压缩包中。

坑 3:TF 能启动,安装 eMMC 后拔卡黑屏

原因:只替换了镜像外部裸引导区,没有替换 rootfs 内的 U-Boot;armbian-install 又把旧 eGON 文件写进了 eMMC。

处理:运行 armbian-install 前必须安装本文配套的 U-Boot DEB,并检查文件哈希和 TOC0.GLH 引导头。

坑 4:照抄 /dev/mmcblk0/dev/mmcblk1

不同镜像和设备树可能交换 TF/eMMC 编号。必须结合 findmnt、容量、型号及 boot0/boot1 判断,不能只看编号。

坑 5:普通 apt upgrade 覆盖了内核和 DTB

本机升级后包版本变成 26.5.1,实际内核为 7.0.12-edge-sunxi64,重启后无法启动。修复文件系统后仍无法启动,降回 25.05.0-trunk / 6.12.11 后恢复。

处理:首次成功启动就锁定 BSP、内核、DTB、U-Boot 四个包。注意:显式执行 dpkg -i 降级内核后,内核和 DTB 的 hold 状态会被重置,必须再次 apt-mark hold

坑 6:升级过程中整机卡死,强制重启后无法启动

本机曾出现:

bad block bitmap checksum
Filesystem failed CRC

从已验证 TF 启动后确认根分区为 /dev/mmcblk1p1,再修复未挂载的 eMMC:

findmnt /
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS,MODEL

umount /mnt/emmc 2>/dev/null || true

# /dev/mmcblk0p1 是本机 eMMC;其他机器必须按 lsblk 结果修改
e2fsck -f -y -v /dev/mmcblk0p1

本机 FSCK_EXIT=1,表示发现并修复错误,且显示 0 bad blocks。如果出现大量 I/O error,应优先怀疑 eMMC 或供电,不要继续写盘。

坑 7:误以为 Docker 一定缺少 NAT/iptables 内核模块

这张镜像实际包含 iptable_natnf_natxt_MASQUERADE、bridge、veth 和 overlayfs。模块能够加载、NAT 表也能工作。

真正的问题是用户空间默认调用 iptables-nft,而精简内核的 nftables table 支持不完整。切换到 iptables-legacy 后 Docker 成功启动。必须以 systemctl status dockerjournalctl -u docker 的具体错误为准,不能只看通用结论。

*十、内核升级后无法启动的救援方法

*十一、编译信息备忘

*十二、参考资料

十三、下载与附件

下载的压缩包包含如下文件。最终镜像和配套 U-Boot DEB 是普通用户安装所必需的,其他文件用于救援或复现。

文件用途SHA256
Armbian-unofficial_25.05.0-trunk_h618_debian_edge_6.12.11_server_TOC0_TF_4G_TEST.img最终 TF 启动镜像295dce9b6f69d4eb15426769c5fb928b46a29ef9ba32b68fa17bd9f8df5d0428
linux-u-boot-x98h-edge_25.05.0-trunk_arm64__2025.01-S6d41-P754c-H8869-Ve54e-Bb703-R448a.debeMMC 安装前替换 rootfs 内 U-Bootaaa99261873553a21cf72d16f02bed3ad9683a8047c17dd6b2ff3ccd362cfb9c
u-boot-sunxi-with-spl_4G_TOC0.bin裸 U-Boot、救援及二次制作镜像2340dae80c0ba7caf96d2edf548beca1e141e3d1e1d40fed54cc3b4d2416fcec
173-sunxi-h616-toc0-probe-up-to-4g.patch4GB 探测源码补丁d65adc72b53fc56855a8f453be1396a54d01809a64628c9d20d5d140b4cdcf72
SHA256SUMS.txt所有下载文件校验清单

下载链接:

夸克网盘:https://pan.quark.cn/s/3386785fb30a?pwd=EhSm 提取码:EhSm

评论

  1. mock
    iPhone Safari 26.0
    山西 移动
    3 周前
    2026-8-04 9:52:14

    网卡是百兆把armbian固件换成对应的就行了吗,有锁机刷完以后可以变无锁吗

    • 博主
      mock
      Android Chrome 151.0.0.0
      山东 电信
      3 周前
      2026-8-05 1:06:59

      可以试一下,理论上是可行的,刷完也不能变无锁,所有固件都得这么搞一遍才行

  2. mock
    iPhone Safari 26.0
    山西 移动
    3 周前
    2026-8-04 9:54:42

    哈哈哈哈,今天就刷到了,昨天写的教程

  3. gitarm
    Windows Chrome 151.0.0.0
    美国
    1 周前
    2026-8-19 22:49:53

    armbian-install没反应,dd if=/dev/mmcblk1 of=/dev/mmcblk0 bs=4M status=progress conv=fsync亦然。emmc明明已加载

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇