news 2026/9/28 4:07:17

小米盒子 4S Max(MDZ-30-AA)刷入 Armbian Linux 完整教程:从电视盒子到边缘计算节点

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
小米盒子 4S Max(MDZ-30-AA)刷入 Armbian Linux 完整教程:从电视盒子到边缘计算节点

1. 为什么要把小米盒子 4S Max 刷成 Armbian

小米盒子 4S Max(型号 MDZ-30-AA)搭载的是 Amlogic S905X3 四核处理器,配 4GB 内存和 64GB eMMC。这个配置放在电视盒子里算中上水平,但跑 Android TV 其实有点浪费——日常就是解码视频、开几个流媒体 App,CPU 大部分时间在摸鱼。把它刷成 Armbian Linux 之后,它就从一台只能看视频的盒子,变成一台 7×24 小时低功耗的 ARM 服务器,可以跑下载机、轻量 Web 服务、Home Assistant、甚至一些边缘 AI 推理任务。

我手上这台 4S Max 是 4GB+64GB 版本,实测整机功耗在 5W 左右,一年电费不到 30 块。刷机过程不算复杂,但有几个坑非常隐蔽,比如 mainline u-boot 会直接卡死在 DRAM 初始化、earlycon 参数格式写错会导致内核启动后完全无输出。这篇教程会把每一步都拆开讲清楚,包括串口接线、U 盘启动盘制作、eMMC 写入、以及刷完之后怎么把它接入统一的 API 通道做边缘计算节点。

适合谁看:手上有闲置小米盒子、想折腾 ARM Linux 的人;想搞低功耗边缘节点但不想买树莓派的人;已经刷过 CoreELEC 或 EmuELEC、想进一步玩完整 Linux 的人。需要你有一点 Linux 命令行基础,至少知道dd、mount、lsblk是干什么的。

2. 刷机前的硬件准备与 TaoToken 通道配置

2.1 硬件清单

先把东西备齐,缺一样都可能在某个环节卡住:

物品要求用途
小米盒子 4S MaxMDZ-30-AA,能正常开机刷机目标
USB-TTL 串口小板CH340 / CP2102 / FT232 均可进入 u-boot 改启动参数
杜邦线(母对母)至少 3 根TTL 接线
U 盘8GB 以上,FAT32制作 Armbian 启动盘
USB HUB建议带独立供电同时接 U 盘和 USB 网卡
USB 转 RJ45 网卡千兆百兆均可盒子无网口,需要网络
电烙铁 + 细焊锡小头烙铁焊接 TTL 焊盘
十字螺丝刀、撬片—拆机

盒子只有一个 USB 口,所以 USB HUB 是必需品——一个口接 U 盘启动系统,一个口接网卡联网。如果你手头有带供电的拓展坞更好,避免 U 盘和网卡抢电导致识别不稳定。

2.2 为什么需要 TaoToken 统一 Key

刷完 Armbian 之后,这台盒子大概率要跑一些需要调用大模型 API 的服务,比如自动化 Agent、代码补全、或者本地知识库问答。如果每个服务都单独配一套 Key,管理起来很麻烦,而且不同厂商的接口格式还不一样。TaoToken 提供的是一个统一的 API 通道,你只需要一个 Key,就能通过兼容 OpenAI 的接口格式调用多种模型。

官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点是 https://taotoken.net/api 。在盒子上配置好之后,后续不管是跑 Claude Code 类的编码 Agent,还是自己写脚本调用模型对话,都走同一个通道,省去反复改配置的麻烦。

2.3 刷机前备份

刷机会清空 eMMC 上的所有数据,Android 系统、已安装的 App、账号信息全部没了。如果你盒子里有重要数据,先想办法导出来。另外建议把原厂固件备份一份,万一刷坏了还能救回来。备份原厂固件需要用到 Amlogic 的 USB Burning Tool,在 Windows 下操作,这里不展开,但强烈建议做。

3. 拆机、焊接 TTL 并进入 u-boot

3.1 拆开盒子

用十字螺丝刀卸掉底部的螺丝,用撬片沿边缘慢慢撬开卡扣。注意卡扣比较紧,别用蛮力,沿着四周一点点撬。打开后能看到主板,eMMC 芯片和 TTL 焊盘都在正面。

3.2 找到 TTL 焊盘并焊接

主板上有一个未焊接的 3 脚焊盘位,分别标着 TX、RX、GND。这是小米盒子预留的调试串口接口。用细焊锡把三根杜邦线分别焊上去,焊点要饱满但不要粘连。如果你没有焊接经验,找修手机的朋友帮忙,或者用测试钩夹住焊盘也行,但稳定性差一些。

接线规则很简单:盒子的 TX 接 USB-TTL 小板的 RX,盒子的 RX 接小板的 TX,GND 接 GND。千万不要接 VCC,只共地就行,接 VCC 可能烧板。

3.3 进入 u-boot 命令行

USB-TTL 小板插到电脑上,打开串口终端(Windows 下用 PuTTY 或 MobaXterm,Linux 下用 minicom 或 screen),参数设为波特率 115200、数据位 8、停止位 1、无校验。然后给盒子上电。

串口会输出大量启动日志,在出现下面这行时快速按空格键:

Hit Enter or space or Ctrl+C key to stop autoboot

按对了会进入 u-boot 命令行,提示符是frozen#。如果没抓住,重新上电再试一次。

3.4 写入 U 盘优先启动的环境变量

在frozen#提示符下依次执行以下命令,让盒子优先从 U 盘引导:

setenv bootfromrecovery 0 setenv bootfromnand 0 setenv start_mmc_autoscript "run switch_bootmode" setenv start_usb_autoscript "if fatload usb 0 11000000 aml_autoscript; then autoscr 11000000; fi; if fatload usb 1 11000000 aml_autoscript; then autoscr 11000000; fi;" setenv start_autoscript "if usb start; then run start_usb_autoscript; fi; run start_mmc_autoscript; " setenv bootcmd "run start_autoscript" saveenv

saveenv保存后,盒子以后每次开机都会优先尝试从 U 盘引导。这一步是后续所有操作的基础,如果没保存成功,后面 U 盘启动会失败。

4. 制作 Armbian 启动盘并修改引导参数

4.1 下载镜像

本项目使用 ophub 维护的 Armbian 镜像,针对 Amlogic 电视盒子做了优化。镜像文件名类似:

Armbian_26.08.0_amlogic_s905x3_noble_6.18.44_server_2026.08.15.img.gz

来源是 GitHub 上的 ophub/amlogic-s9xxx-armbian 项目,选择 s905x3 架构的 server 版本。server 版没有桌面环境,资源占用更低,适合做服务器。

4.2 烧录到 U 盘

在 Linux 电脑上,将镜像解压后写入 U 盘:

gzip -dk Armbian_26.08.0_amlogic_s905x3_noble_6.18.44_server_2026.08.15.img.gz sudo dd if=Armbian_26.08.0_amlogic_s905x3_noble_6.18.44_server_2026.08.15.img of=/dev/sdX bs=4M conv=fsync status=progress

/dev/sdX是你的 U 盘设备名,比如/dev/sdd。用lsblk确认清楚再写,写错会覆盖其他磁盘。写入完成后,U 盘会分成两个分区:BOOT(FAT32,存放引导文件)和 ROOTFS(ext4,系统根分区)。

4.3 修改 uEnv.txt 引导参数

这是整个刷机过程中最容易踩坑的地方。挂载 U 盘的 BOOT 分区,编辑uEnv.txt:

sudo mount /dev/sdX1 /mnt/boot sudo nano /mnt/boot/uEnv.txt

修改为以下关键内容:

LINUX=/zImage INITRD=/uInitrd FDT=/dtb/amlogic/meson-sm1-h96-max-x3.dtb APPEND=earlycon=meson,0xff803000 mem=3584M root=UUID=<你的ROOTFS分区UUID> rootflags=data=writeback rw rootwait rootfstype=ext4 console=ttyAML0,115200n8 console=tty0 no_console_suspend consoleblank=0 fsck.fix=yes fsck.repair=yes net.ifnames=0 max_loop=128 cgroup_enable=cpuset cgroup_memory=1 cgroup_enable=memory swapaccount=1 video=HDMI-A-1:1920x1080@60e plymouth.enable=0

三个关键点必须注意:

FDT=/dtb/amlogic/meson-sm1-h96-max-x3.dtb:小米 4S Max 没有官方 dtb,实测 H96 Max X3(同为 S905X3 4GB LPDDR4)的 dtb 最兼容。用错 dtb 会导致网卡不识别、内存识别异常等问题。

earlycon=meson,0xff803000:必须是 meson 格式。官方默认的aml,uart是供应商内核写法,mainline 内核不识别,会导致Starting kernel ...后完全无输出,看起来像死机。这个坑我踩过,排查了半天才发现是参数格式问题。

mem=3584M:实测 4GB 全开会在初始化高位内存时触发硬件 SError 崩溃。小米的安全世界保留了最高端约 500MB 内存,限制为 3584M(3.5GB)是最优值,稳定且能用满绝大部分内存。

4.4 删除 u-boot.ext

ophub 镜像的 BOOT 分区自带u-boot.ext(mainline u-boot),但在小米盒子上一定不能用它。小米是 secure boot + 定制 LPDDR4,mainline u-boot 会在DRAM:处卡死,因为 DDR 训练参数不匹配。

sudo mv /mnt/boot/u-boot.ext /mnt/boot/u-boot.ext.bak sync sudo umount /mnt/boot

删除后,原厂 u-boot 会走 autoscript 的兜底路径,直接booti引导 Armbian 内核,完美绕开 mainline u-boot。这个机制和 CoreELEC、EmuELEC 是一样的。

5. 从 U 盘启动并验证系统

5.1 首次启动

U 盘插到盒子的 USB HUB 上,接好 USB 网卡,给盒子上电。正常会看到串口输出:

Starting kernel ... [ 0.000000] Booting Linux on physical CPU [ 0.000000] Linux version 6.18.44-ophub ... [ 0.000000] earlycon: meson0 at MMIO 0x00000000ff803000 [ 0.000000] Memory limited to 3584MB

首次启动会进入 Armbian 初始化向导:设置 root 密码(务必记牢)、选择默认 shell(选 1,bash)、创建用户账户(可以直接 Ctrl+C 跳过,仅用 root)。完成后进入 root shell,用lsblk确认系统跑在 U 盘(sda)上。

5.2 网络连通性验证

盒子没有网口,网络全靠 USB 网卡。启动后先确认网卡被识别:

ip addr

如果看到eth0或enP...之类的接口并且拿到了 IP,说明网卡工作正常。如果没识别,可能是 dtb 不对或者 USB 供电不足,换个带供电的 HUB 试试。

然后测试外网连通性:

ping -c 4 223.5.5.5 curl -I https://taotoken.net/api

5.3 配置 TaoToken API 通道

网络通了之后,配置 TaoToken 的统一 Key。在盒子上创建配置文件:

mkdir -p /etc/taotoken cat > /etc/taotoken/config.toml << 'EOF' [api] base_url = "https://taotoken.net/api" api_key = "你的_TaoToken_Key" default_model = "claude-sonnet-4-20250514" timeout = 60 [logging] level = "info" path = "/var/log/taotoken.log" EOF

如果你用 Claude Code 类的编码 Agent,对应的 settings.json 骨架:

{ "api_endpoint": "https://taotoken.net/api", "api_key": "你的_TaoToken_Key", "model": "claude-sonnet-4-20250514", "max_tokens": 8192, "temperature": 0.7 }

Key 的获取在 TaoToken 控制台的 API Keys 页面,地址是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite 。创建之后复制出来,填到上面的配置里。

5.4 验证 API 调用

配置好之后,用 curl 测试一下通道是否通:

curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的_TaoToken_Key" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "回复 OK"}], "max_tokens": 10 }'

如果返回正常的 JSON 响应,说明通道配置成功。后续你的 Agent 或脚本就可以通过这个端点调用模型了。模型对话的入口在 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite ,可以在浏览器里先试试效果。

6. 写入 eMMC 并完成最终配置

6.1 执行 armbian-install

U 盘跑通后,把系统装进盒子自带的 64GB eMMC,以后拔掉 U 盘也能启动。在盒子的 root shell 中执行:

armbian-install

按提示选择:设备型号输入514(H96-Max-X3,与我们的 dtb 对应),文件系统输入1(ext4)。安装时会提示备份 bootloader,保持默认(写回原厂 bootloader 备份),不要选择写 mainline u-boot,避免破坏小米的 secure boot 引导链。

等待复制完成,最后会提示[SUCCESS] Installation completed successfully.

6.2 确认 eMMC 引导参数

安装完成后挂载 eMMC 的 BOOT 分区,确认uEnv.txt关键参数与 U 盘一致:

mount /dev/mmcblk2p1 /mnt/boot grep APPEND /mnt/boot/uEnv.txt

重点确认mem=3584M、earlycon=meson、h96-max-x3dtb 这三项。如果不对,手动改回来。

6.3 从 eMMC 启动

poweroff

拔掉 U 盘(保留 USB 网卡),重新上电。盒子会直接从 eMMC 启动 Armbian。启动后验证:

lsblk # 根分区应在 mmcblk2p2(eMMC) free -m # 应显示约 3.4GB 内存 ip addr # 网络应已通过 USB 网卡获取 IP

6.4 常见错误排查

串口无输出,卡在 Starting kernel:99% 是 earlycon 参数格式写错了。检查是不是写成了earlycon=aml,uart,必须改成earlycon=meson,0xff803000。

卡在 DRAM: 处不动:说明 u-boot.ext 没删掉,mainline u-boot 在初始化 DDR 时挂了。重新挂载 BOOT 分区,确认u-boot.ext已经改名或删除。

启动后内存只有 2GB 或更少:dtb 选错了。确认用的是meson-sm1-h96-max-x3.dtb,其他 S905X3 的 dtb 内存映射可能不一样。

USB 网卡不识别:换一个带独立供电的 USB HUB,或者换一块网卡。有些廉价网卡在 ARM 平台下驱动不完整。

eMMC 写入后无法启动:检查armbian-install时有没有误选 mainline u-boot。如果选了,需要重新从 U 盘启动,重新执行安装并保持默认 bootloader 选项。

API 调用返回 401:检查 Key 是否复制完整,有没有多余空格。TaoToken 的 Key 在控制台可以重新生成,如果确认 Key 没问题,检查base_url是不是写成了https://taotoken.net/api,不要漏掉/api。

7. 把盒子变成边缘计算节点的后续配置

系统装好之后,这台盒子就是一台完整的 Ubuntu 24.04 ARM 服务器了。你可以按需安装服务:

apt update && apt upgrade -y apt install -y docker.io docker-compose-plugin systemctl enable --now docker

Docker 跑起来之后,Home Assistant、aria2、nginx 这些服务都可以用容器部署。如果要做编码 Agent,可以装 Claude Code 或者自己写脚本调用 TaoToken 的 API。长期跑编码任务的话,Coding Plan 的入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite ,有包月套餐,比按量计费划算。

最后提醒一句:U 盘别扔,它是应急恢复盘。eMMC 出问题的时候,插上 U 盘就能救回来。另外刷机有风险,动手前确认自己理解每一步的作用,数据无价。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!