ocet刷armbian
本笔记记录了 OCET 设备刷入 Armbian 系统、配置 CasaOS、硬盘挂载、Docker 目录迁移、网络代理设置、二次刷机以及系统优化等步骤。
Armbian 系统自带的两个重要配置命令:
armbian-config # 系统设置工具,用于配置网络、用户、软件等
armbian-software # 软件管理工具,用于安装和管理软件包
1. 原系统刷机
请参考以下文章进行刷机操作:
post.smzdm.com/p/agwx06lm/
固件下载地址:
GitHub - ophub/amlogic-s9xxx-armbian: Support for Armbian in Amlogic, Rockchip and Allwinner boxes. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3588, rk3568, rk3399, rk3328, h6, etc.
下载文件名为 Armbian_25.08.0_rockchip_wxy-oect
的固件。
2. 设置静态 IP
通过 armbian-config
工具设置静态 IP:
- 在终端输入
armbian-config
。 - 选择
network
(网络)。 - 选择
bns 001- basic network setup
(基本网络设置)。 - 选择
eth0
网口(通常是第一个有线网口),然后回车确认。 - 选择
static set ip manually
(手动设置静态 IP)。 - 首先会弹出设置 MAC 地址的选项,直接回车保持不变。
- 然后输入你想要设置的静态 IP 地址,删除掉原来的默认输入。
- 重要: 务必输入正确的网关地址,然后一直回车,后面的设置通常保持默认即可。
- 返回到主页面,一直返回退出
armbian-config
。
建议: 最好不要直接在 Armbian 系统内设置静态 IP。我设置后曾遇到 ping 百度失败的问题,原因不明。
更推荐的做法是,将光猫改为桥接模式后,在路由器后台为 OCET 设备设置静态 IP,这样风险更低,操作也更方便。
3. 安装 CasaOS
执行以下命令安装 CasaOS:
curl -fsSL https://get.casaos.io | sudo bash
4. 添加第三方应用商店源
进入 CasaOS 界面,点击“应用商店”——“更多”,然后将以下链接粘贴进去:
https://play.cuse.eu.org/Cp0204-AppStore-Play.zip
5. 挂载硬盘
查看硬盘挂载位置并记录 UUID:
lsblk # 列出所有块设备,查看硬盘分区信息
获取指定分区的 UUID:
sudo blkid /dev/sda1 # 假设 /dev/sda1 是你的目标分区,获取其唯一标识符 UUID
编辑
/etc/fstab
文件以实现开机自动挂载:
将以下内容添加到/etc/fstab
文件中,请将UUID
修改为你的目标硬盘的实际 UUID。UUID=b89f4261-e017-49fe-85f0-04b441da17b7 /mnt/Storage1 ext4 defaults,noatime,nodiratime 0 2
卸载临时挂载(如果之前手动挂载过):
sudo umount /mnt/Storage1
重新加载所有
fstab
中定义的挂载点:sudo mount -a
注意: 如果有程序正在占用硬盘,可能需要
kill
掉相关进程。如果仍然遇到问题,可以尝试cd ~
返回主目录,或者直接重启系统。加载
systemd
配置:sudo systemctl daemon-reload
6. 更改 Docker 挂载目录
此操作旨在将 Docker 的数据目录从默认位置(通常是 /var/lib/docker
)迁移到挂载的硬盘上,以节省系统盘空间。在进行此操作前,建议参考 Bilibili 上的教程:只要70元轻nas——矿渣oec刷casaos保姆级教程\_哔哩哔哩\_bilibili。
6.1 暂停 CasaOS 服务
systemctl stop casaos*.service # 暂停所有CasaOS相关服务
systemctl status casaos.service # 查看CasaOS服务状态,确认已停止
按 CTRL+C
退出状态查看命令。
6.2 暂停 Docker 服务
systemctl stop docker.service # 暂停Docker守护进程
systemctl status docker.service # 查看Docker服务状态,确认已停止
按 CTRL+C
退出状态查看命令。
6.3 创建新的镜像和卷目录
在目标挂载点上创建 Docker 数据目录:
mkdir -p /mnt/Storage1/dockerdata
编辑 Docker 服务配置文件以指定新的数据根目录:
nano /lib/systemd/system/docker.service
找到 ExecStart
行,将其从:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
修改为(添加 --data-root
参数):
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --data-root /mnt/Storage1/dockerdata
6.4 复制原有 Docker 数据到新路径
将 /var/lib/docker
下的所有数据复制到新创建的目录:
rsync -avxP /var/lib/docker/ /mnt/Storage1/dockerdata
6.5 重启服务或系统
加载 systemd
配置并启动 Docker 和 CasaOS 服务:
systemctl daemon-reload
systemctl start docker.service
systemctl start casaos.service
或者,直接重启系统以确保所有更改生效:
reboot
6.6 验证 Docker 数据目录
重启后,验证 Docker 的数据根目录是否已更改为新路径:
docker info | grep "Docker Root Dir"
如果成功,将显示类似 Docker Root Dir: /mnt/Storage1/dockerdata
的结果。
6.7 遇到的问题及解决方案
问题: 打开 CasaOS 提示安装失败,并显示类似下图的错误。
原因: 这通常是由于父目录权限问题。rsync -a
命令会保留原始文件的权限,确保 /mnt/Storage1/dockerdata/containers
目录权限正确。但新目录 /mnt/Storage1/dockerdata
本身的权限,以及外接硬盘文件系统的类型,可能会导致 Docker 在进行某些特定操作(如下载镜像层到 /tmp
目录)时权限不足。
解决方案: 调整新 Docker 数据目录的权限和所有者,然后重启。
sudo chmod -R 755 /mnt/Storage1/dockerdata # 赋予目录及其内容读写执行权限
sudo chown -R root:root /mnt/Storage1/dockerdata # 将目录及其内容的所有者设为root
sudo reboot # 重启系统
7. 换源
为了避免网络问题和提高下载速度,建议更换 Linux 和 Docker 的软件源。手动逐个设置容易出错,且可能导致网络配置混乱(我曾因此重装系统)。推荐使用现成的脚本。
7.1 Linux 换源
执行以下命令一键更换 Linux 系统的软件源:
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
7.2 Docker 换源
执行以下命令一键更换 Docker 的软件源:
bash <(curl -sSL https://linuxmirrors.cn/docker.sh)
提示: 如果你安装了 CasaOS 的第三方应用商店源,可以尝试安装 dkturbo
这个 Docker 应用。它能自动检测并更换 Docker 源,并在还原后自动暂停。
参考:GitHub - Cp0204/CasaOS-AppStore-Play: A Docker Compose Hub, Making Docker Your Productivity Tool - 一个 Docker Compose 仓库,让 Docker 成为你的生产力工具
8. 代理设置
在国内主机上 git clone
或下载一些被墙的网站文件时,可能需要设置代理。
8.1 临时代理(当前终端会话有效)
在当前终端会话中设置 HTTP/HTTPS 代理:
export https_proxy=http://127.0.0.1:7890 # 在当前终端启动HTTPS代理
export http_proxy=http://127.0.0.1:7890 # 在当前终端启动HTTP代理
注意: 关闭当前终端或重启系统后,代理设置将失效。
8.2 永久系统代理
编辑 /etc/profile
文件,使其在每次用户登录时自动设置代理:
vim /etc/profile
在文件最下方添加以下两行代码:
export http_proxy=http://127.0.0.1:7890
export https_proxy=http://127.0.0.1:7890
保存文件后,重启系统使设置生效。
8.3 Docker 代理设置
系统环境的代理设置不会影响 Docker 流量,因为 Docker 容器有独立的网络环境。以下是为 Docker 设置代理的方法:
8.3.1 配置 Docker 服务(全局代理)
这种方法会使整个 Docker 守护进程通过代理访问网络。
创建 Docker 服务配置目录:
sudo mkdir -p /etc/systemd/system/docker.service.d
创建并编辑代理配置文件:
sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf
粘贴以下内容(请将
<宿主机IP>
替换为实际的宿主机 IP 地址):[Service] Environment="HTTP_PROXY=http://<宿主机IP>:7890" Environment="HTTPS_PROXY=http://<宿主机IP>:7890" Environment="NO_PROXY=localhost,127.0.0.1,*.example.com" # 配置不走代理的地址
重新加载
systemd
配置并重启 Docker 服务:sudo systemctl daemon-reload sudo systemctl restart docker
提示: 如果你只想在拉取镜像时临时使用代理,可以在拉取完成后删除此配置文件:
sudo rm /etc/systemd/system/docker.service.d/http-proxy.conf
sudo systemctl daemon-reload
sudo systemctl restart docker
更优雅的办法:通过 Docker 客户端配置代理
编辑或创建 ~/.docker/config.json
文件:
vim ~/.docker/config.json
添加以下内容(请将 <宿主机内网IP>
替换为实际的宿主机内网 IP 地址):
{
"proxies": {
"default": {
"httpProxy": "http://<宿主机内网IP>:7890",
"httpsProxy": "http://<宿主机内网IP>:7890",
"noProxy": "localhost,127.0.0.1"
}
}
}
当不需要拉取镜像时,可以将 config.json
文件改名(例如 config.json.bak
)来禁用代理。
8.3.2 为指定的容器配置代理
如果你只想让某个特定的 Docker 容器走代理,可以在启动容器时通过环境变量设置:
使用 docker run
命令:
docker run -e http_proxy=http://<宿主机IP>:7890 -e https_proxy=http://<宿主机IP>:7890 your-image-name
使用 docker-compose.yml
文件:
version: '3'
services:
myservice:
image: your-image
environment:
- http_proxy=http://<宿主机IP>:7890
- https_proxy=http://<宿主机IP>:7890
- NO_PROXY=localhost,127.0.0.1,192.168.0.0/16,10.0.0.0/8,172.16.0.0/12 # 避免内网访问时走代理
9. 刷机后刷其他系统(二次刷机)
如果你想在 Armbian 系统之后刷入其他系统,可以使用瑞芯微(Rockchip)刷写工具。
- 安装瑞芯微驱动: 确保你的电脑已安装瑞芯微设备的驱动。
- 打开 RK 刷写工具。
- 连接设备进入刷机模式:
用卡针按住 OCET 设备的 Reset 键,然后用手机数据线 Type-A 接口连接电脑,Type-C 接口连接图片下方所示的 C 口(非 USB 3.0 接口),此时无需连接电源
。
注意: 之前我曾尝试用双公头线连接 OCET 的 USB 3.0 接口,指示灯不亮,排查了很久。请务必连接正确的 Type-C 接口。 - 刷写新系统:
连接成功后,RK 刷写工具会显示“发现一个 Loader 设备”。
取消勾选第一个 Loader 分区。
点击第二个 System 分区旁边的三个点...
,选择你想要刷入的其他系统镜像文件。
点击“执行”开始刷写。
10. 测速
10.1 局域网传输速度测试(也适用于 Tailscale 内网穿透速度)
使用 iperf3
工具测试局域网或内网穿透的传输速度。
在 NAS(服务端)上操作:
安装
iperf3
:sudo apt-get install iperf3 -y
启动
iperf3
服务端:iperf3 -s # 启动iperf3,默认端口是5201。请确保NAS防火墙已开启5201端口。
在电脑或 VPS(客户端)上操作:
- 下载并安装
iperf3
。 - 打开命令行工具(如 CMD)。
- 进入
iperf3
解压后的文件夹。 执行测试命令(请将
192.168.1.1
替换为你的 NAS 的实际 IP 地址):.\iperf3.exe -c 192.168.1.1 # Windows客户端 iperf3 -c 192.168.1.1 # Linux/macOS客户端
高级测试选项:
使用多线程测试(例如 8 个线程):
iperf3 -c 192.168.200.108 -P 8 # 在客户端运行,测试从客户端到服务端的上传速度
测试从服务端到客户端的速度(下载速度):
iperf3 -c 192.168.200.108 -P 8 -R # 在客户端运行,测试从服务端到客户端的下载速度
11. 关闭 LED 灯
为了减少光污染或节省微弱的功耗,可以创建一个脚本来关闭 OCET 设备的 LED 指示灯。
11.1 创建关灯脚本
创建脚本文件:
sudo nano /usr/local/bin/led-off.sh
粘贴以下内容到文件中:
#!/bin/bash # 关闭所有 LED echo 0 | sudo tee /sys/class/leds/blue:/brightness /sys/class/leds/green:/brightness /sys/class/leds/red:/brightness /sys/class/leds/mmc0::/brightness >/dev/null
赋予脚本执行权限:
sudo chmod +x /usr/local/bin/led-off.sh
11.2 创建 systemd 服务实现开机自启动
创建 systemd 服务文件:
sudo nano /etc/systemd/system/led-off.service
粘贴以下内容到文件中:
[Unit] Description=Turn off all LEDs after system boot After=multi-user.target # 确保在系统完全启动后执行 [Service] Type=oneshot ExecStart=/usr/local/bin/led-off.sh [Install] WantedBy=multi-user.target
重新加载
systemd
配置:sudo systemctl daemon-reload
设置服务开机自启动:
sudo systemctl enable led-off.service
立即启动服务以关闭当前 LED 灯:
sudo systemctl start led-off.service