家里 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
2
3
4
5
6
7
8
9
10
Filesystem                Size      Used Available Use% Mounted on
/dev/root 329.6M 329.6M 0 100% /
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 744.8M 416.9M 327.9M 56% /run
/dev/mmcblk1p1 16.0M 178.0K 15.8M 1% /mnt/boot
/dev/mmcblk1p7 84.5M 1.7M 76.0M 2% /mnt/overlay
/dev/mmcblk1p8 27.5G 8.1G 18.2G 31% /mnt/data
/dev/mmcblk1p8 27.5G 8.1G 18.2G 31% /var/lib/docker
overlay 27.5G 8.1G 18.2G 31% /var/lib/docker/overlay2/.../merged

关键存储只有两类:根盘 /(/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 warning

2.1 eMMC 分区结构

物理盘表现为 /dev/mmcblk1px

分区大小挂载点用途
mmcblk1p116M/mnt/boot启动文件
mmcblk1p784.5M/mnt/overlay配置覆盖层(绑定挂载到多个目录)
mmcblk1p827.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