ARM Linux 系统管理实战指南 从Arch Linux入门到精通

引言:为什么选择ARM架构与Arch Linux?
在当今的嵌入式系统和物联网时代,ARM架构凭借其低功耗、高性能的特性,已成为主流选择。从树莓派到各类开发板,再到企业级服务器,ARM无处不在。而Arch Linux以其简洁、轻量、高度可定制的特性,成为深入理解Linux系统管理的理想平台。本指南将带你从零开始,逐步掌握ARM架构下的Arch Linux系统管理,最终达到精通水平。
第一部分:基础准备与安装
1.1 硬件选择与准备
选择适合的ARM开发板是成功的第一步。以下是几个常见选择:
树莓派4B/5
:社区支持完善,适合初学者
Orange Pi 5
:性能强劲,适合需要更多计算资源的场景
NVIDIA Jetson Nano
:适合AI和机器学习应用
BeagleBone Black
:工业级应用,接口丰富
准备工作
:
下载对应开发板的Arch Linux ARM镜像
准备8GB以上的microSD卡
使用
dd
命令或Etcher工具将镜像写入SD卡
# 示例:将镜像写入SD卡(注意确认设备路径)
sudo dd if=archlinuxarm-aarch64-latest.img of=/dev/sdX bs=4M status=progress
1.2 首次启动与基础配置
首次启动后,需要进行基础配置:
# 登录默认用户:alarm,密码:alarm
# 切换到root用户
su –

# 更新系统
pacman -Syu

# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock –systohc

# 配置语言环境
echo “en_US.UTF-8 UTF-8” >> /etc/locale.gen
locale-gen
echo “LANG=en_US.UTF-8” > /etc/locale.conf

# 设置主机名
echo “arm-arch” > /etc/hostname

# 配置网络(以有线网络为例)
systemctl enable systemd-networkd
systemctl start systemd-networkd
1.3 创建普通用户
出于安全考虑,不应长期使用root用户:
# 创建新用户
useradd -m -G wheel -s /bin/bash username

# 设置密码
passwd username

# 配置sudo权限
echo “%wheel ALL=(ALL) ALL” >> /etc/sudoers

# 切换到新用户
su – username
第二部分:系统管理核心技能
2.1 包管理与软件安装
Arch Linux使用pacman作为包管理器,AUR(Arch User Repository)提供海量软件。
基础操作
:
# 搜索软件包
pacman -Ss package_name

# 安装软件包
sudo pacman -S package_name

# 删除软件包
sudo pacman -R package_name

# 清理缓存
sudo pacman -Sc
使用AUR
:
# 安装yay(AUR助手)
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si

# 使用yay安装软件
yay -S package_name
示例:安装并配置Nginx
# 安装Nginx
sudo pacman -S nginx

# 启动服务
sudo systemctl enable nginx
sudo systemctl start nginx

# 测试Nginx
curl http://localhost

# 配置文件位于:/etc/nginx/nginx.conf
# 网站根目录:/usr/share/nginx/html
2.2 系统服务管理
Arch Linux使用systemd管理服务。
常用命令
:
# 查看服务状态
systemctl status service_name

# 启动服务
sudo systemctl start service_name

# 停止服务
sudo systemctl stop service_name

# 重启服务
sudo systemctl restart service_name

# 设置开机自启
sudo systemctl enable service_name

# 禁用开机自启
sudo systemctl disable service_name
示例:管理SSH服务
# 安装OpenSSH
sudo pacman -S openssh

# 启动并启用SSH服务
sudo systemctl enable sshd
sudo systemctl start sshd

# 检查状态
systemctl status sshd

# 配置SSH(编辑/etc/ssh/sshd_config)
# 禁用root登录:PermitRootLogin no
# 修改端口:Port 2222
# 重启服务使配置生效
sudo systemctl restart sshd
2.3 磁盘管理与文件系统
查看磁盘信息
:
# 查看所有磁盘
lsblk

# 查看磁盘分区
sudo fdisk -l

# 查看文件系统使用情况
df -h
创建和挂载分区
:
# 创建新分区(以/dev/mmcblk0p3为例)
sudo fdisk /dev/mmcblk0
# 输入:n -> p -> 3 -> 回车 -> 回车 -> w

# 格式化分区为ext4
sudo mkfs.ext4 /dev/mmcblk0p3

# 创建挂载点
sudo mkdir /mnt/data

# 临时挂载
sudo mount /dev/mmcblk0p3 /mnt/data

# 永久挂载(编辑/etc/fstab)
echo “/dev/mmcblk0p3 /mnt/data ext4 defaults 0 2” | sudo tee -a /etc/fstab
LVM(逻辑卷管理)示例
:
# 创建物理卷
sudo pvcreate /dev/mmcblk0p3

# 创建卷组
sudo vgcreate vg_data /dev/mmcblk0p3

# 创建逻辑卷
sudo lvcreate -L 10G -n lv_apps vg_data

# 格式化逻辑卷
sudo mkfs.ext4 /dev/vg_data/lv_apps

# 挂载逻辑卷
sudo mkdir /mnt/apps
sudo mount /dev/vg_data/lv_apps /mnt/apps
2.4 网络配置与管理
有线网络配置
:
# 查看网络接口
ip link show

# 配置静态IP(编辑/etc/systemd/network/eth0.network)
[Match]
Name=eth0

[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8

# 重启网络服务
sudo systemctl restart systemd-networkd
无线网络配置
:
# 安装无线工具
sudo pacman -S iwd

# 启动iwd服务
sudo systemctl enable iwd
sudo systemctl start iwd

# 连接WiFi
sudo iwctl
# 在交互界面中:station wlan0 scan
# station wlan0 connect SSID
# 输入密码
网络诊断工具
:
# 查看路由表
ip route show

# 测试网络连通性
ping 8.8.8.8

# 查看端口监听
ss -tuln

# 跟踪路由
traceroute 8.8.8.8
第三部分:高级系统管理
3.1 系统监控与性能调优
常用监控工具
:
# 实时系统监控
htop

# 磁盘I/O监控
iostat -x 1

# 网络监控
nload

# 进程监控
ps aux | grep process_name
性能调优示例
:
# 调整CPU governor(性能模式)
echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

# 调整内存管理
# 编辑/etc/sysctl.conf添加:
# vm.swappiness=10
# vm.vfs_cache_pressure=50
sudo sysctl -p

# 调整I/O调度器
echo deadline | sudo tee /sys/block/mmcblk0/queue/scheduler
3.2 安全加固
基础安全配置
:
# 配置防火墙(UFW)
sudo pacman -S ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw enable

# 安装fail2ban防止暴力破解
sudo pacman -S fail2ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

# 配置SELinux(可选)
sudo pacman -S selinux
# 需要重新编译内核支持SELinux
SSH安全配置
:
# 编辑/etc/ssh/sshd_config
# 禁用root登录:PermitRootLogin no
# 限制用户:AllowUsers username
# 使用密钥认证:PubkeyAuthentication yes
# 重启服务
sudo systemctl restart sshd
3.3 备份与恢复
使用rsync进行备份
:
# 备份整个系统到外部存储
sudo rsync -aAXv –exclude={“/dev/*”,”/proc/*”,”/sys/*”,”/tmp/*”,”/run/*”,”/mnt/*”,”/media/*”,”/lost+found”} / /mnt/backup/

# 增量备份
sudo rsync -aAXv –link-dest=/mnt/backup/latest / /mnt/backup/$(date +%Y%m%d)
使用Btrfs快照
:
# 安装Btrfs工具
sudo pacman -S btrfs-progs

# 创建子卷
sudo btrfs subvolume create /mnt/data

# 创建快照
sudo btrfs subvolume snapshot /mnt/data /mnt/data/snapshot_$(date +%Y%m%d)

# 恢复快照
sudo btrfs subvolume delete /mnt/data
sudo btrfs subvolume snapshot /mnt/data/snapshot_20231001 /mnt/data
第四部分:特定场景实战
4.1 树莓派优化配置
配置/boot/config.txt
:
# 启用GPU内存分配
gpu_mem=64

# 超频(谨慎使用)
over_voltage=2
arm_freq=1800
gpu_freq=600

# 启用硬件加速
dtparam=audio=on
dtparam=vc4-fkms-v3d=on

# 启用摄像头
start_x=1
gpu_mem=128
优化电源管理
:
# 禁用不必要的服务
sudo systemctl disable bluetooth
sudo systemctl disable avahi-daemon

# 调整CPU频率
echo “performance” | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
4.2 物联网设备管理
MQTT客户端示例
:
# 安装MQTT客户端
sudo pacman -S mosquitto-clients

# 发布消息
mosquitto_pub -h broker.hivemq.com -t “test/topic” -m “Hello from ARM Arch”

# 订阅消息
mosquitto_sub -h broker.hivemq.com -t “test/topic”
传感器数据采集
:
# Python示例:读取温度传感器
import Adafruit_DHT
import time

sensor = Adafruit_DHT.DHT22
pin = 4

while True:
humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
if humidity is not None and temperature is not None:
print(f”温度: {temperature:.1f}°C, 湿度: {humidity:.1f}%”)
time.sleep(2)
4.3 容器化部署
安装Docker
:
# 安装Docker
sudo pacman -S docker

# 启动Docker服务
sudo systemctl enable docker
sudo systemctl start docker

# 将用户加入docker组
sudo usermod -aG docker $USER
# 重新登录生效
Docker Compose示例
:
# docker-compose.yml
version: ‘3’
services:
web:
image: nginx:alpine
ports:
– “80:80”
volumes:
– ./html:/usr/share/nginx/html
restart: unless-stopped

db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
volumes:
– postgres_data:/var/lib/postgresql/data
restart: unless-stopped

volumes:
postgres_data:
运行容器
:
# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down
第五部分:故障排除与维护
5.1 常见问题解决
系统无法启动
:
# 1. 检查SD卡是否损坏
sudo fsck /dev/mmcblk0p2

# 2. 检查引导分区
sudo mount /dev/mmcblk0p1 /mnt/boot
ls /mnt/boot

# 3. 重新安装内核
sudo pacman -S linux-aarch64
网络连接问题
:
# 1. 检查网络接口
ip link show

# 2. 检查IP地址
ip addr show

# 3. 检查路由
ip route show

# 4. 检查DNS
cat /etc/resolv.conf

# 5. 重置网络
sudo systemctl restart systemd-networkd
软件包冲突
:
# 1. 更新系统
sudo pacman -Syu

# 2. 清理缓存
sudo pacman -Sc

# 3. 强制重新安装
sudo pacman -Syyu –force package_name

# 4. 检查依赖关系
sudo pacman -Qi package_name
5.2 日志分析
查看系统日志
:
# 查看所有日志
journalctl

# 查看最近日志
journalctl -n 50

# 查看特定服务日志
journalctl -u sshd

# 实时跟踪日志
journalctl -f
应用日志分析
:
# 查看Nginx访问日志
tail -f /var/log/nginx/access.log

# 查看错误日志
tail -f /var/log/nginx/error.log

# 统计访问量
awk ‘{print $1}’ /var/log/nginx/access.log | sort | uniq -c | sort -nr
5.3 系统更新与维护
定期维护任务
:
# 1. 系统更新(每周)
sudo pacman -Syu

# 2. 清理旧内核(每月)
sudo pacman -Rns $(pacman -Qdtq)

# 3. 检查磁盘健康(每月)
sudo smartctl -a /dev/mmcblk0

# 4. 备份配置文件(每月)
sudo tar -czf /mnt/backup/config-$(date +%Y%m%d).tar.gz /etc
创建维护脚本
:
#!/bin/bash
# maintenance.sh

echo “开始系统维护…”

# 更新系统
echo “更新系统…”
sudo pacman -Syu –noconfirm

# 清理缓存
echo “清理缓存…”
sudo pacman -Sc –noconfirm

# 清理临时文件
echo “清理临时文件…”
sudo journalctl –vacuum-time=7d
sudo rm -rf /tmp/*

# 检查磁盘空间
echo “磁盘使用情况:”
df -h

echo “维护完成!”
第六部分:进阶主题
6.1 自定义内核编译
准备编译环境
:
# 安装编译工具
sudo pacman -S base-devel git

# 下载内核源码
git clone –depth 1 https://github.com/raspberrypi/linux.git
cd linux

# 配置内核
make bcm2711_defconfig # 树莓派4B配置
# 或 make menuconfig 进行自定义配置
编译内核
:
# 编译内核
make -j$(nproc) Image modules dtbs

# 安装内核模块
sudo make modules_install

# 安装内核
sudo cp arch/arm64/boot/Image /boot/kernel8.img
sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/
6.2 系统自动化
使用systemd定时任务
:
# 创建定时任务
sudo nano /etc/systemd/system/backup.service

# 内容:
[Unit]
Description=Daily backup

[Service]
Type=oneshot
ExecStart=/usr/local/bin/backup.sh

# 创建定时器
sudo nano /etc/systemd/system/backup.timer

# 内容:
[Unit]
Description=Run backup daily

[Timer]
OnCalendar=daily
Persistent=true

[Install]
WantedBy=timers.target

# 启用定时器
sudo systemctl enable backup.timer
sudo systemctl start backup.timer
使用Ansible进行配置管理
:
# 安装Ansible
sudo pacman -S ansible

# 创建playbook
nano deploy.yml
—
– hosts: all
become: yes
tasks:
– name: Install packages
pacman:
name: “{{ item }}”
state: present
loop:
– nginx
– mariadb
– php-fpm

– name: Enable services
systemd:
name: “{{ item }}”
enabled: yes
state: started
loop:
– nginx
– mariadb
– php-fpm
6.3 性能监控与调优
使用Prometheus监控
:
# 安装Prometheus
sudo pacman -S prometheus

# 配置Prometheus(/etc/prometheus/prometheus.yml)
global:
scrape_interval: 15s

scrape_configs:
– job_name: ‘node’
static_configs:
– targets: [‘localhost:9100’]

# 安装Node Exporter
sudo pacman -S node_exporter
sudo systemctl enable node_exporter
sudo systemctl start node_exporter
使用Grafana可视化
:
# 安装Grafana
sudo pacman -S grafana

# 启动服务
sudo systemctl enable grafana-server
sudo systemctl start grafana-server

# 访问http://localhost:3000
# 默认用户名:admin,密码:admin
结语
通过本指南的学习,你已经从ARM架构的Arch Linux入门者成长为系统管理专家。掌握了从基础安装到高级调优的全方位技能。记住,系统管理是一个持续学习的过程,保持对新技术的关注,不断实践和优化你的系统。
下一步建议
:
尝试在不同ARM设备上部署Arch Linux
学习容器编排(Kubernetes)
探索边缘计算场景
参与开源项目贡献
祝你在ARM Linux系统管理的道路上越走越远!