一、 硬件与镜像资源参考

1. 常用开发板下载与文档

  • 天嵌 PB_SBC01_H3 资料: [https://disk.yandex.ru/d/YKVAkKMSWaEmsw/PB_SBC01_H3](https://disk.yandex.ru/d/YKVAkKMSWaEmsw/PB_SBC01_H3)
  • 香橙派官方服务与支持:
  • Orange Pi 5 Pro: [http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-Pro.html](http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-5-Pro.html)
  • Orange Pi Zero 3: [http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.html](http://www.orangepi.cn/html/hardWare/computerAndMicrocontrollers/service-and-support/Orange-Pi-Zero-3.html)
  • 香橙派 Wiki 文档: [http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_Zero_3](http://www.orangepi.cn/orangepiwiki/index.php/Orange_Pi_Zero_3)

2. 默认登录凭据

  • 默认普通用户: 账号 orangepi / 密码 orangepi
  • 默认 Root 用户: 账号 root / 密码 orangepi

二、 系统基础配置

1. 时区与语言环境

设置正确的时区与检查语言环境,确保日志时间与系统显示正常。

# 查看当前时区配置
timedatectl

# 将系统时区设置为北京时间 (Asia/Shanghai)
sudo timedatectl set-timezone Asia/Shanghai

# 验证时区变更状态
timedatectl status

# 检查当前语言环境变量
locale

# 查看系统区域配置详情
localectl status

2. 用户与权限安全强化

针对边缘设备或服务器场景,建议锁定默认的普通账号(如 orangepi),改用专用账号或仅保留必要的 Root/Sudo 权限。

# 查看系统所有登录的用户
who

# 查看系统所有用户列表及基本信息
cat /etc/passwd

# 仅提取并显示所有用户名
cut -d: -f1 /etc/passwd

# 修改 Root 用户密码(建议第一时间修改)
sudo passwd root

# 强制终止 orangepi 用户的全部进程与会话
sudo pkill -KILL -u orangepi

# 锁定 orangepi 用户密码(禁止密码登录)
sudo passwd -l orangepi

# 更改 orangepi 用户的 Shell 为 nologin(彻底禁止交互式 Shell 登录)
sudo usermod -s /usr/sbin/nologin orangepi

三、 串口与物理终端(TTY)安全精简

在不需要串口调试或本地显示器输入的无头(Headless)设备上,可关闭 getty 自动登录,防止未经授权的串口接入。

1. 禁用 Getty 服务与串口自动登录

# 停止当前运行的本地 TTY 与串口 Getty 服务
sudo systemctl stop getty@tty1.service
sudo systemctl stop serial-getty@ttyS0.service

# 禁用 TTY 与串口服务的开机自启
sudo systemctl disable getty@tty1.service
sudo systemctl disable getty@tty0.service
sudo systemctl disable serial-getty@ttyS0.service

2. 修改串口 Getty 自动登录行为

编辑串口服务配置文件:

sudo vim /usr/lib/systemd/system/serial-getty@.service.d/override.conf
  • 原配置 (自动登录为 orangepi):
    ExecStart=-/sbin/agetty --noissue --autologin orangepi %I $TERM
  • 修改为 (清除自动登录,要求正常输入账号密码):
    ExecStart=-/sbin/agetty --noclear %I $TERM

3. 限制物理/串口终端的 Root 登录

编辑 /etc/securetty 文件,注释或删除串口终端条目(若文件不存在可忽略):

sudo vim /etc/securetty

将以下行注释掉(行首加 #):

# ttyS0
# ttyAMA0
# ttyGS0

四、 网络与无线功能优化

1. 彻底禁用板载无线模块 (WiFi / 蓝牙)

若设备仅使用有线网络,禁用无线驱动与服务可节省内存并减少系统开销。

步骤 1:创建驱动黑名单配置文件

sudo vim /etc/modprobe.d/blacklist-orangepi-wireless.conf

写入以下内容(禁用 Spreadtrum/Unisoc 常见无线驱动):

blacklist uwe5622_bsp_sdio
blacklist sprdwl_ng
blacklist sprdbt_tty

步骤 2:在 /etc/modules 中注释掉开机自动加载的模块

sudo vim /etc/modules

将无线相关的模块注释:

# uwe5622_bsp_sdio
# sprdwl_ng
# sprdbt_tty
# bluetooth
# wifi

步骤 3:停止并禁用相关无线服务

sudo systemctl stop bluetooth wpa_supplicant
sudo systemctl disable bluetooth wpa_supplicant hciuart.service

2. 使用 NetworkManager 配置网络

针对单一网卡(如 end0eth0)进行 NetworkManager 优化。

  • 设置静态 IP:

    sudo nmcli connection modify "Wired connection 1" ipv4.method manual ipv4.addresses 192.168.10.90/24 ipv4.gateway 192.168.10.1 ipv4.dns "223.5.5.5,192.168.10.1"
    
  • 禁用 IPv6 自动配置(可减少 DNS 解析延迟与无用报文):

    sudo nmcli connection modify "Wired connection 1" ipv6.method disabled
    
  • 恢复 DHCP 自动获取(备用指令):

    sudo nmcli connection modify "Wired connection 1" ipv4.method auto ipv4.addresses "" ipv4.gateway "" ipv4.dns ""
    

3. Netplan 简洁配置范例

若系统使用 Netplan 管理网络,可按以下方式优化 /etc/netplan/01-network-config.yaml

# 备份旧配置
sudo cp -r /etc/netplan/ /etc/netplan_backup/

# 编辑配置文件
sudo nano /etc/netplan/01-network-config.yaml

填入以下内容:

network:
  version: 2
  renderer: NetworkManager
  ethernets:
    end0:
      dhcp4: true
      dhcp6: false
      accept-ra: false
      optional: true

应用配置并设置正确的安全性权限:

# 设置权限(Netplan 要求配置文件仅 Root 可读写)
sudo chmod 600 /etc/netplan/01-network-config.yaml

# 测试并应用网络配置
sudo netplan generate
sudo netplan apply
sudo systemctl restart NetworkManager

五、 系统服务裁剪与开机加速

精简不需要的后台服务,可大幅缩短开机时间并降低系统资源占用。

1. 调整 NetworkManager 启动超时时间

防止因为等待网络就绪而卡住开机流程:

sudo mkdir -p /etc/systemd/system/NetworkManager.service.d
sudo vim /etc/systemd/system/NetworkManager.service.d/timeout.conf

加入以下内容(静态 IP 设置为 4 秒,DHCP 建议设置为 15 秒):

[Service]
TimeoutStartSec=4

禁用等待在线的服务:

sudo systemctl disable networkd-dispatcher.service
sudo systemctl stop networkd-dispatcher.service

sudo systemctl disable systemd-networkd-wait-online.service
sudo systemctl mask systemd-networkd-wait-online.service

2. 停用不必要的后台服务

针对开发板上不需要的功能(如红外、音频恢复、硬盘 SMART 监控、本地 DNS 解析等)进行屏蔽:

# 1. 禁用 SMART 监控(SD卡/eMMC 不支持 SMART)
sudo systemctl stop smartd
sudo systemctl disable smartd
sudo systemctl mask smartd

# 2. 禁用红外遥控服务 (LIRC)
sudo systemctl stop lircd.service lircd-setup.service
sudo systemctl disable lircd-setup.service lircd.service lircd.socket irexec.service
sudo systemctl mask lircd.service lircd-setup.service lircd.socket

# 3. 禁用 ALSA 声卡状态恢复
sudo systemctl disable alsa-restore.service
sudo systemctl mask alsa-restore.service

# 4. 停止并禁用 systemd-resolved (若改用 NetworkManager 直接管理 DNS)
sudo systemctl stop systemd-resolved
sudo systemctl disable systemd-resolved

# 5. 内存优化:若系统物理内存大于 1GB,可考虑关闭 ZRAM 内存压缩交换
sudo systemctl disable orangepi-zram-config.service

3. 批量禁用 GPG Agent Socket 服务

防止普通用户会话下启动无用的 GPG 监听服务:

# 禁用全局 GPG 相关的 Socket
sudo systemctl --global disable gpg-agent.socket gpg-agent-ssh.socket gpg-agent-browser.socket gpg-agent-extra.socket dirmngr.socket keyboxd.socket

# 禁用当前用户作用域的 GPG Socket
systemctl --user disable gpg-agent.socket gpg-agent-ssh.socket gpg-agent-browser.socket gpg-agent-extra.socket dirmngr.socket keyboxd.socket

六、 自动更新与 Cron 任务管理

在边缘设备中,未受控的自动更新可能会占满存储空间或占用 CPU 资源。

1. 禁用 APT 与无人值守自动更新

# 1. 停止并禁用 unattended-upgrades 服务
sudo systemctl stop unattended-upgrades
sudo systemctl disable unattended-upgrades

# 2. 禁用 APT 自动更新定时器
sudo systemctl stop apt-daily.timer apt-daily-upgrade.timer
sudo systemctl disable apt-daily.timer apt-daily-upgrade.timer

# 3. 修改 APT 定期配置
sudo vim /etc/apt/apt.conf.d/20auto-upgrades

确保配置文件内容如下:

APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";

2. 锁定特定软件包自动更新 (以 Podman 为例)

若在无人值守更新中排除或锁定特定包:

# 查看软件包安装状态
sudo apt-cache policy podman

# 锁定 podman 版本,阻止 apt upgrade 自动更新它
sudo apt-mark hold podman

# 若仍保留了 unattended-upgrades,可在黑名单中排除 Podman
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

在黑名单段落中加入:

Unattended-Upgrade::Package-Blacklist {
    "podman";
    "podman-rootless";
    "podman-plugins";
};

3. 清理与禁用自动更新计划任务

# 检查当前用户与系统的定时任务
crontab -l -u orangepi
sudo crontab -l
cat /etc/crontab
ls -la /etc/cron.d/

# 禁用特定脚本(通过重命名使其失效)
sudo mv /etc/cron.d/orangepi-updates /etc/cron.d/orangepi-updates.disabled
sudo mv /etc/cron.daily/apt-compat /etc/cron.daily/apt-compat.disabled

# 刷新 systemd 配置
sudo systemctl daemon-reload

七、 容器工具 (Podman / Docker) 与镜像源

在 ARM64/Cortex-A53 架构开发板上部署 OpenWrt 容器。

1. Podman 获取 Cortex-A53 架构 OpenWrt 镜像

  • 镜像 Tag 列表参考: [https://hub.docker.com/r/openwrt/rootfs/tags](https://hub.docker.com/r/openwrt/rootfs/tags)
  • 软件包仓库地址: [https://downloads.openwrt.org/releases/packages-22.03/aarch64_cortex-a53/](https://downloads.openwrt.org/releases/packages-22.03/aarch64_cortex-a53/)
# 拉取适合 Cortex-A53 架构的 OpenWrt 22.03 rootfs 镜像
podman pull docker.io/openwrt/rootfs:aarch64_cortex-a53-openwrt-22.03

# 禁用 Podman 自动更新服务与定时器
sudo systemctl disable podman-auto-update.service
sudo systemctl disable podman-auto-update.timer
sudo systemctl mask podman-auto-update.service

2. 禁用 Docker 服务(若仅使用 Podman)

# 1. 停止 Docker 及 containerd 引擎
sudo systemctl stop docker.service docker.socket containerd.service

# 2. 禁用开机自启
sudo systemctl disable docker.service docker.socket containerd.service

# 3. 查看 Docker 相关服务列表状态
systemctl list-unit-files | grep -E "(docker|containerd)"

八、 系统监控、清理与维护

诊断开发板资源消耗、硬件温度与垃圾清理的常用命令。

1. 性能与端口监控

# 动态监控 CPU 占用最高的 10 个进程(每 2 秒刷新一次)
watch -n 2 'ps aux --sort=-%cpu | head -10'

# 实时查看 SSH/系统登录日志
sudo tail -f /var/log/auth.log

# 查看所有正在监听的 TCP/UDP 端口
netstat -tunlp
# 或使用 ss 命令
ss -tunlp

# 过滤输出只保留 LISTEN 状态的端口及对应进程路径
sudo netstat -tunlp | awk 'NR==1 || /LISTEN/'

# 查看当前运行的用户作用域服务
systemctl --user list-units | grep running

# 查看系统近 10 分钟内抛出的严重错误日志 (Priority level 3)
sudo journalctl -p 3 -xb --since "10 minutes ago"

2. 启动耗时分析

# 查看整体启动时间
systemd-analyze

# 按耗时降序排列各服务的启动时间
systemd-analyze blame

# 打印关键链上的服务依赖耗时
systemd-analyze critical-chain

3. 系统温度查看

针对 ARM 板载 SoC 的温度监控:

# 查看所有温度传感器的当前读数 (单位: 毫摄氏度, 需除以1000)
cat /sys/class/thermal/thermal_zone*/temp

# 查看各个温度传感器对应的类型/名称
cat /sys/class/thermal/thermal_zone*/type

# 查看 CPU 核心区域温度 (zone0 通常对应 CPU)
cat /sys/class/thermal/thermal_zone0/temp

4. 磁盘空间与缓存清理

# 清理下载的 APT 软件包缓存文件
sudo apt clean

# 自动卸载不再需要的依赖包
sudo apt autoremove

# 清理残留的孤立配置文件 (状态为 rc 的软件包)
sudo apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')

八、 系统监控、清理与维护 章节中,已将计划任务、系统任务以及启动项的排查与禁用方法补充整理如下。你可以直接替换或插入到该章节中:


5. 排查与管理计划任务 (Cron Jobs)

定时任务常被用于后台隐蔽运行脚本,需分别排查用户级与系统级的配置。

(1) 排查定时任务

# 查看指定用户(如 orangepi)的定时任务
crontab -l -u orangepi

# 查看 Root 用户的定时任务
sudo crontab -l

# 查看系统级主定时任务配置文件
cat /etc/crontab

# 查看目录下的附加系统定时任务文件
ls -la /etc/cron.d/

# 查看按周期执行的脚本目录
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/
ls -la /etc/cron.weekly/
ls -la /etc/cron.monthly/

(2) 清理与禁用定时任务

# 编辑当前用户的定时任务(直接删除或注释掉不需要的行)
crontab -e

# 编辑 Root 用户的定时任务
sudo crontab -e

# 删除指定用户的全部定时任务
crontab -r -u orangepi

# 禁用 /etc/cron.d/ 中的特定任务(通过重命名后缀使其失效)
sudo mv /etc/cron.d/orangepi-updates /etc/cron.d/orangepi-updates.disabled

6. 排查与管理系统启动项 (Systemd Services)

检查系统及用户作用域下开机自动运行的服务,屏蔽不必要的后台进程。

(1) 排查启动项与运行状态

# 查看所有已设置为开机自启的服务和单元
systemctl list-unit-files | grep enabled

# 查看当前正在运行的所有系统服务
systemctl list-units --type=service --state=running

# 查看当前用户作用域下开机自启的服务
systemctl --user list-unit-files | grep enabled

# 查看当前用户作用域下正在运行的服务
systemctl --user list-units --type=service --state=running

(2) 禁用与屏蔽启动项

# 停止正在运行的服务
sudo systemctl stop <服务名>.service

# 禁用开机自启
sudo systemctl disable <服务名>.service

# 彻底屏蔽服务(防止被其他服务作为依赖意外拉起)
sudo systemctl mask <服务名>.service

# 禁用用户作用域下的启动项
systemctl --user stop <服务名>.service
systemctl --user disable <服务名>.service

7. 清理系统残留配置文件

(1)清理残留配置文件

sudo apt purge $(dpkg -l | grep '^rc' | awk '{print $2}')
  • 作用: 彻底卸载并清理系统中那些“已经被删除,但还保留着配置文件”的软件包(包括旧内核残留)。
  • 具体命令拆解:
  • dpkg -l:列出系统中所有已安装或曾经安装过的软件包状态。
  • grep '^rc':筛选出状态为 rc 的行。
  • r (Remove):表示该软件的程序主体已经被卸载。
  • c (Config-files):表示该软件的配置文件依然留在系统中
  • awk '{print $2}':提取筛选结果中的第 2 列,即获取这些残留软件的名称列表。
  • sudo apt purge ...:对提取出来的软件列表执行 purge 清理。与 apt remove 只删程序不同,purge 会将程序及其配置文件一并彻底删除,释放空间并保持系统整洁。

(2)关闭不需要的内核模块开机加载

# 编辑modules文件
sudo vim /etc/modules

# 注释掉不需要的模块
# bluetooth
# wifi
  • 作用: 禁止系统在开机启动时自动加载蓝牙(Bluetooth)和无线网卡(WiFi)的硬件驱动模块。
  • 文件说明:
  • /etc/modules 是 Linux 系统中用来指定开机时必须自动加载的内核模块(驱动程序)列表的文件。
  • 文件中每一行代表一个模块名称。
  • 操作含义:
  • 使用 vim 打开该配置文件后,在 bluetoothwifi 等模块名称前加上 # 符号(即“注释”)。
  • 被注释掉的模块在下一次开机时,系统将不再自动为其加载驱动
  • 效果: 如果设备只使用有线网卡,且不需要蓝牙,这样操作可以减少开机系统资源的占用,并降低硬件功耗。

标签: none

添加新评论