家里 ARM 盒子解析
1. Armbian 简介
Armbian 不是独立的 Linux 发行版,而是基于 Debian/Ubuntu 构建的镜像框架,为 ARM 开发板提供优化的内核和设备树支持。
为什么不直接刷 Ubuntu?RK3566 等 ARM 盒子没有 PC 的标准启动方式(UEFI/ACPI),启动依赖 U-Boot + 设备树/驱动。通用 Ubuntu Server ARM64 镜像缺乏底层适配,直接写盘大概率无法启动或缺少网卡/USB 驱动。
Armbian 提供 Ubuntu flavor(Noble/Jammy 等),用户态是 Ubuntu apt 生态,底层由 Armbian 负责适配。若目标是稳定运行 Docker,推荐 Debian 12。
启动方式对比:
- TF 卡启动:系统在 TF 卡上,不能拔出
- eMMC 启动:系统在内置 eMMC,TF 卡可拔出(插 TF 优先从 TF 启动)
写入 TF 卡指将系统镜像(.img/.img.xz)通过工具写成可启动盘,流程:选择镜像 → 选择 SD/USB → Flash。
eMMC(embedded MultiMediaCard)是焊在板子上的非易失存储,包含闪存和控制器。
2. 现有磁盘分析
1 | Filesystem Size Used Available Use% Mounted on |
关键存储只有两类:根盘 /(/dev/root) 和 数据盘 /mnt/data(/dev/mmcblk1p8)。
%%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#4F46E5', 'primaryTextColor': '#000', 'primaryBorderColor': '#3730A3', 'lineColor': '#6366F1', 'secondaryColor': '#10B981', 'tertiaryColor': '#F59E0B'}}}%%
flowchart TD
subgraph Physical["物理存储 (eMMC 32G)"]
P1["mmcblk1p1<br/>16M Boot"]
P7["mmcblk1p7<br/>84.5M Overlay"]
P8["mmcblk1p8<br/>27.5G Data"]
ROOT["root<br/>329M SquashFS"]
end
subgraph Virtual["虚拟文件系统 (内存)"]
TMPFS["tmpfs<br/>/dev, /run, /var"]
ZRAM["zram<br/>/tmp 15M"]
end
subgraph Mounts["挂载视图"]
BOOT["/mnt/boot"]
OVERLAY["/mnt/overlay"]
DATA["/mnt/data"]
DOCKER["/var/lib/docker"]
ROOTFS["/"]
end
P1 --> BOOT
P7 --> OVERLAY
P8 --> DATA
P8 --> DOCKER
ROOT --> ROOTFS
OVERLAY -->|"绑定挂载"| ETC["/etc/dropbear<br/>/root/.ssh<br/>/etc/default"]
classDef primary fill:#4F46E5,stroke:#3730A3,color:#fff
classDef success fill:#10B981,stroke:#059669,color:#fff
classDef warning fill:#F59E0B,stroke:#D97706,color:#000
classDef info fill:#06B6D4,stroke:#0891B2,color:#fff
class P1,P7,P8,ROOT primary
class TMPFS,ZRAM info
class DATA,DOCKER success
class OVERLAY,ETC warning2.1 eMMC 分区结构
物理盘表现为 /dev/mmcblk1px:
| 分区 | 大小 | 挂载点 | 用途 |
|---|---|---|---|
| mmcblk1p1 | 16M | /mnt/boot | 启动文件 |
| mmcblk1p7 | 84.5M | /mnt/overlay | 配置覆盖层(绑定挂载到多个目录) |
| mmcblk1p8 | 27.5G | /mnt/data | 数据分区(Docker、日志) |
mmcblk1p7 被绑定挂载到 /etc/default、/etc/dropbear、/root/.ssh 等目录,用于存储可写配置。
2.2 根文件系统 100% 问题
/dev/root 显示 100% 是正常现象:
- 根分区是只读 SquashFS 镜像,大小固定 329M
- 系统升级采用整块镜像刷写
- 可写内容通过 overlay 挂载实现
实际可写空间由 /dev/mmcblk1p8(27.5G)决定。
2.3 内存文件系统
| 类型 | 用途 |
|---|---|
| tmpfs | 设备节点(/dev)、共享内存(/dev/shm)、运行时文件(/run) |
| zram | 压缩内存盘(/tmp) |
这些是内存使用情况,不占用 eMMC 空间。
2.4 Docker Overlay
overlay 行是 Docker overlay2 存储驱动为每个容器创建的叠加文件系统视图。每个容器有独立的 merged 目录,底层共享 /dev/mmcblk1p8。