活动公告

系统通知
05-18 21:22
系统通知
通知:本站资源由网友上传分享,如有违规等问题请到版务模块进行投诉,资源失效请在帖子内回复要求补档,会尽快处理!
10-23 09:31

全面解析Arch Linux ARM线上课程学习路径从系统安装到服务配置助你掌握轻量级Linux在嵌入式设备上的应用与优化成为Linux高手

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

<font color=白金月票" /> 发表于 2025-9-22 21:40:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

Arch Linux ARM是专为ARM处理器架构设计的Arch Linux发行版,它继承了Arch Linux的简洁、轻量和高度可定制的特点。随着物联网和嵌入式设备的普及,掌握Arch Linux ARM在嵌入式设备上的应用与优化变得越来越重要。本文将全面解析Arch Linux ARM的学习路径,从系统安装到服务配置,帮助你成为Linux高手。

Arch Linux ARM基础

Arch Linux ARM是基于ARM架构的Arch Linux移植版本,专为嵌入式设备设计。它保留了Arch Linux的核心特点,包括滚动更新、简洁性和高度定制性。与传统的桌面Linux发行版相比,Arch Linux ARM更加轻量,适合资源受限的嵌入式设备。

Arch Linux ARM支持多种ARM设备,包括Raspberry Pi、BeagleBone、ODROID等常见的开发板。它的软件包管理系统与Arch Linux相同,使用pacman作为包管理器,并且有一个活跃的社区提供支持。

系统安装

准备工作

在安装Arch Linux ARM之前,需要准备以下内容:

1. 一台支持Arch Linux ARM的ARM设备(如Raspberry Pi)
2. 一张MicroSD卡(建议16GB或更大,Class 10)
3. 一台运行Linux或Windows的电脑,用于准备安装介质
4. 稳定的网络连接

下载系统镜像

首先,从Arch Linux ARM官方网站下载适合你设备的系统镜像。以Raspberry Pi 4为例,访问Arch Linux ARM官网下载最新的镜像文件。
  1. # 在Linux系统上,可以使用wget下载镜像
  2. wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz
复制代码

准备MicroSD卡

在Linux系统上,使用以下命令准备MicroSD卡:
  1. # 确定MicroSD卡的设备名称
  2. lsblk
  3. # 假设MicroSD卡是/dev/sdb,卸载所有分区
  4. sudo umount /dev/sdb*
  5. # 使用fdisk创建分区
  6. sudo fdisk /dev/sdb
  7. # 在fdisk中,执行以下命令:
  8. # o - 创建新的空DOS分区表
  9. # n - 创建新分区
  10. # p - 主分区
  11. # 1 - 第一个分区
  12. # 按Enter键接受默认起始扇区
  13. # +100M - 设置第一个分区大小为100MB(用于/boot)
  14. # t - 更改分区类型
  15. # c - 设置为W95 FAT32 (LBA)类型
  16. # n - 创建新分区
  17. # p - 主分区
  18. # 2 - 第二个分区
  19. # 按Enter键接受默认起始扇区
  20. # 按Enter键使用剩余空间
  21. # w - 写入更改并退出
  22. # 格式化分区
  23. sudo mkfs.vfat /dev/sdb1
  24. sudo mkfs.ext4 /dev/sdb2
  25. # 挂载分区
  26. sudo mkdir -p /mnt/root
  27. sudo mount /dev/sdb2 /mnt/root
  28. sudo mkdir /mnt/root/boot
  29. sudo mount /dev/sdb1 /mnt/root/boot
  30. # 解压系统镜像到MicroSD卡
  31. sudo bsdtar -xpf ArchLinuxARM-rpi-aarch64-latest.tar.gz -C /mnt/root
  32. sync
  33. # 卸载分区
  34. sudo umount /mnt/root/boot /mnt/root
复制代码

首次启动

将MicroSD卡插入Raspberry Pi,连接电源和网络,启动设备。默认情况下,Arch Linux ARM通过DHCP获取IP地址,你可以通过路由器管理界面或使用nmap扫描网络来找到设备的IP地址。
  1. # 使用nmap扫描网络中的设备
  2. sudo nmap -sn 192.168.1.0/24
复制代码

找到IP地址后,使用SSH连接到设备:
  1. # 默认用户名是alarm,密码是alarm
  2. ssh alarm@192.168.1.x
  3. # 默认root用户密码是root
  4. su
复制代码

基础配置

初始化pacman密钥环

首次启动后,需要初始化pacman密钥环:
  1. # 初始化pacman密钥环
  2. pacman-key --init
  3. pacman-key --populate archlinuxarm
复制代码

更新系统

更新系统到最新状态:
  1. # 更新系统
  2. pacman -Syu
复制代码

设置时区

设置正确的时区:
  1. # 查看可用时区
  2. ls /usr/share/zoneinfo/
  3. # 设置时区,例如设置为上海时区
  4. ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  5. # 同步硬件时钟
  6. hwclock --systohc
复制代码

设置主机名

设置系统主机名:
  1. # 编辑主机名文件
  2. echo "myarcharm" > /etc/hostname
  3. # 编辑hosts文件
  4. cat << EOF > /etc/hosts
  5. 127.0.0.1   localhost
  6. ::1         localhost
  7. 127.0.1.1   myarcharm.localdomain myarcharm
  8. EOF
复制代码

创建新用户

为了安全起见,建议创建一个新用户并禁用root登录:
  1. # 创建新用户
  2. useradd -m -G wheel -s /bin/bash newuser
  3. # 设置新用户密码
  4. passwd newuser
  5. # 编辑sudoers文件,允许wheel组用户使用sudo
  6. visudo
  7. # 取消以下行的注释:
  8. # %wheel ALL=(ALL) ALL
  9. # 禁用root密码登录
  10. passwd -l root
复制代码

配置网络

如果需要静态IP配置,可以编辑网络配置文件:
  1. # 创建网络配置文件
  2. cat << EOF > /etc/systemd/network/eth0.network
  3. [Match]
  4. Name=eth0
  5. [Network]
  6. Address=192.168.1.100/24
  7. Gateway=192.168.1.1
  8. DNS=8.8.8.8 8.8.4.4
  9. EOF
  10. # 启用并启动网络服务
  11. systemctl enable systemd-networkd
  12. systemctl start systemd-networkd
复制代码

软件管理

pacman基础使用

pacman是Arch Linux ARM的包管理器,以下是常用命令:
  1. # 更新软件包数据库
  2. pacman -Sy
  3. # 升级系统
  4. pacman -Su
  5. # 同步数据库并升级系统(相当于上面两个命令的组合)
  6. pacman -Syu
  7. # 搜索软件包
  8. pacman -Ss keyword
  9. # 显示软件包信息
  10. pacman -Si package_name
  11. # 安装软件包
  12. pacman -S package_name
  13. # 卸载软件包及其依赖
  14. pacman -Rs package_name
  15. # 清除软件包缓存
  16. pacman -Scc
复制代码

AUR使用

Arch User Repository (AUR)是用户驱动的社区仓库,包含大量官方仓库中没有的软件包。要使用AUR,需要先安装一个AUR助手,如yay:
  1. # 安装必要的依赖
  2. pacman -S --needed git base-devel
  3. # 克隆yay仓库
  4. git clone https://aur.archlinux.org/yay.git
  5. # 进入yay目录
  6. cd yay
  7. # 编译并安装yay
  8. makepkg -si
复制代码

使用yay安装AUR软件包:
  1. # 搜索AUR软件包
  2. yay -Ss keyword
  3. # 安装AUR软件包
  4. yay -S package_name
复制代码

系统优化

禁用不必要的服务

为了提高系统性能,可以禁用不必要的服务:
  1. # 列出已启用的服务
  2. systemctl list-unit-files --state=enabled
  3. # 禁用不必要的服务,例如bluetooth
  4. systemctl disable bluetooth.service
复制代码

优化文件系统

优化文件系统可以提高系统性能:
  1. # 编辑fstab文件,添加noatime选项
  2. vim /etc/fstab
  3. # 将包含"ext4"的行的defaults改为defaults,noatime
  4. # 重新挂载所有文件系统
  5. mount -o remount /
复制代码

配置swap

如果设备内存有限,可以配置swap文件:
  1. # 创建1GB的swap文件
  2. fallocate -l 1G /swapfile
  3. # 设置正确的权限
  4. chmod 600 /swapfile
  5. # 格式化为swap
  6. mkswap /swapfile
  7. # 启用swap
  8. swapon /swapfile
  9. # 添加到fstab,使swap永久生效
  10. echo '/swapfile none swap sw 0 0' >> /etc/fstab
  11. # 调整swap使用频率(值越接近100,越倾向于使用swap)
  12. echo 'vm.swappiness=10' >> /etc/sysctl.d/99-sysctl.conf
复制代码

优化内核参数

通过调整内核参数可以优化系统性能:
  1. # 创建自定义内核参数文件
  2. cat << EOF > /etc/sysctl.d/99-sysctl.conf
  3. # 减少swap使用
  4. vm.swappiness=10
  5. # 增加文件句柄限制
  6. fs.file-max = 100000
  7. # 优化网络栈
  8. net.core.rmem_max = 16777216
  9. net.core.wmem_max = 16777216
  10. net.ipv4.tcp_rmem = 4096 87380 16777216
  11. net.ipv4.tcp_wmem = 4096 65536 16777216
  12. EOF
  13. # 应用新的内核参数
  14. sysctl -p /etc/sysctl.d/99-sysctl.conf
复制代码

服务配置

SSH服务

SSH是远程管理Linux系统的基本工具,以下是SSH服务的配置:
  1. # 安装OpenSSH服务器
  2. pacman -S openssh
  3. # 启用并启动SSH服务
  4. systemctl enable sshd
  5. systemctl start sshd
  6. # 配置SSH服务器
  7. vim /etc/ssh/sshd_config
  8. # 修改以下设置:
  9. # Port 22 - 可以更改默认端口
  10. # PermitRootLogin no - 禁止root登录
  11. # PasswordAuthentication yes - 允许密码认证(建议使用密钥认证)
  12. # 重启SSH服务
  13. systemctl restart sshd
复制代码

Web服务器

以Nginx为例,配置Web服务器:
  1. # 安装Nginx
  2. pacman -S nginx
  3. # 启动并启用Nginx服务
  4. systemctl start nginx
  5. systemctl enable nginx
  6. # 创建网站目录
  7. mkdir -p /srv/http/mywebsite
  8. # 创建简单的测试页面
  9. echo '<html><body><h1>My Arch Linux ARM Website</h1></body></html>' > /srv/http/mywebsite/index.html
  10. # 创建Nginx配置文件
  11. cat << EOF > /etc/nginx/sites-available/mywebsite
  12. server {
  13.     listen 80;
  14.     server_name localhost;
  15.    
  16.     root /srv/http/mywebsite;
  17.     index index.html;
  18.    
  19.     location / {
  20.         try_files $uri $uri/ =404;
  21.     }
  22. }
  23. EOF
  24. # 启用网站配置
  25. ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/
  26. # 测试Nginx配置
  27. nginx -t
  28. # 重新加载Nginx配置
  29. systemctl reload nginx
复制代码

数据库服务

以MariaDB为例,配置数据库服务:
  1. # 安装MariaDB
  2. pacman -S mariadb
  3. # 初始化MariaDB数据目录
  4. mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
  5. # 启动并启用MariaDB服务
  6. systemctl start mariadb
  7. systemctl enable mariadb
  8. # 运行安全安装脚本
  9. mysql_secure_installation
  10. # 连接到MariaDB
  11. mysql -u root -p
复制代码

Docker服务

Docker在嵌入式设备上越来越受欢迎,以下是Docker的安装和配置:
  1. # 安装Docker
  2. pacman -S docker
  3. # 启动并启用Docker服务
  4. systemctl start docker
  5. systemctl enable docker
  6. # 将用户添加到docker组,以便无需sudo运行docker命令
  7. usermod -aG docker newuser
  8. # 重新登录以应用组更改
  9. # 测试Docker安装
  10. docker run hello-world
复制代码

网络配置

有线网络配置

对于有线网络,可以使用systemd-networkd进行配置:
  1. # 创建网络配置文件
  2. cat << EOF > /etc/systemd/network/eth0.network
  3. [Match]
  4. Name=eth0
  5. [Network]
  6. DHCP=yes
  7. # 或者使用静态IP:
  8. # Address=192.168.1.100/24
  9. # Gateway=192.168.1.1
  10. # DNS=8.8.8.8 8.8.4.4
  11. EOF
  12. # 启用并启动systemd-networkd服务
  13. systemctl enable systemd-networkd
  14. systemctl start systemd-networkd
复制代码

无线网络配置

对于无线网络,可以使用wpa_supplicant:
  1. # 安装必要的软件包
  2. pacman -S wpa_supplicant dialog
  3. # 创建wpa_supplicant配置文件
  4. cat << EOF > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
  5. ctrl_interface=DIR=/run/wpa_supplicant GROUP=wheel
  6. update_config=1
  7. network={
  8.     ssid="Your_Network_SSID"
  9.     psk="Your_Password"
  10. }
  11. EOF
  12. # 设置配置文件权限
  13. chmod 600 /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
  14. # 启用并启动wpa_supplicant服务
  15. systemctl enable wpa_supplicant@wlan0
  16. systemctl start wpa_supplicant@wlan0
  17. # 配置DHCP或静态IP(参考有线网络配置)
复制代码

防火墙配置

使用ufw(Uncomplicated Firewall)配置防火墙:
  1. # 安装ufw
  2. pacman -S ufw
  3. # 启用防火墙
  4. ufw enable
  5. # 允许SSH连接
  6. ufw allow ssh
  7. # 允许HTTP和HTTPS连接
  8. ufw allow http
  9. ufw allow https
  10. # 查看防火墙状态
  11. ufw status
复制代码

安全设置

自动安全更新

配置自动安全更新:
  1. # 安装pacman-contrib
  2. pacman -S pacman-contrib
  3. # 创建自动更新脚本
  4. cat << EOF > /usr/local/bin/security-updates
  5. #!/bin/bash
  6. # 检查安全更新
  7. pacman -Sy --quiet --noconfirm
  8. if pacman -Qu | grep -q '\[security\]'; then
  9.     echo "Security updates available. Updating..."
  10.     pacman -Su --noconfirm
  11. fi
  12. EOF
  13. # 使脚本可执行
  14. chmod +x /usr/local/bin/security-updates
  15. # 创建systemd定时器
  16. cat << EOF > /etc/systemd/system/security-updates.timer
  17. [Unit]
  18. Description=Check for security updates daily
  19. Requires=security-updates.service
  20. [Timer]
  21. OnCalendar=daily
  22. Persistent=true
  23. [Install]
  24. WantedBy=timers.target
  25. EOF
  26. cat << EOF > /etc/systemd/system/security-updates.service
  27. [Unit]
  28. Description=Check for security updates
  29. [Service]
  30. Type=oneshot
  31. ExecStart=/usr/local/bin/security-updates
  32. EOF
  33. # 启用定时器
  34. systemctl enable security-updates.timer
  35. systemctl start security-updates.timer
复制代码

配置自动锁屏

为了提高安全性,可以配置自动锁屏:
  1. # 安装screen
  2. pacman -S screen
  3. # 创建自动锁屏脚本
  4. cat << EOF > /usr/local/bin/autolock
  5. #!/bin/bash
  6. # 10分钟无活动后锁屏
  7. screen -dmS autolock sh -c 'sleep 600; vlock'
  8. EOF
  9. # 使脚本可执行
  10. chmod +x /usr/local/bin/autolock
  11. # 添加到.bashrc
  12. echo "/usr/local/bin/autolock" >> ~/.bashrc
复制代码

配置fail2ban

fail2ban可以防止暴力破解攻击:
  1. # 安装fail2ban
  2. pacman -S fail2ban
  3. # 复制配置文件
  4. cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
  5. # 编辑配置文件
  6. vim /etc/fail2ban/jail.local
  7. # 修改以下设置:
  8. # [sshd]
  9. # enabled = true
  10. # bantime = 1h
  11. # findtime = 10m
  12. # maxretry = 3
  13. # 启用并启动fail2ban服务
  14. systemctl enable fail2ban
  15. systemctl start fail2ban
复制代码

故障排除

系统无法启动

如果系统无法启动,可以尝试以下步骤:

1. 检查MicroSD卡是否正确插入
2. 尝试重新刷写系统镜像
3. 检查电源供应是否稳定
4. 连接显示器查看启动信息

网络连接问题

如果遇到网络连接问题,可以尝试以下步骤:
  1. # 检查网络接口状态
  2. ip link
  3. # 检查IP地址
  4. ip addr
  5. # 检查路由表
  6. ip route
  7. # 测试网络连接
  8. ping -c 4 8.8.8.8
  9. # 检查DNS解析
  10. nslookup archlinux.org
  11. # 查看系统日志
  12. journalctl -u systemd-networkd
复制代码

软件包安装问题

如果遇到软件包安装问题,可以尝试以下步骤:
  1. # 清理pacman缓存
  2. pacman -Scc
  3. # 刷新密钥环
  4. pacman-key --refresh-keys
  5. # 更新系统
  6. pacman -Syu
  7. # 如果特定软件包安装失败,尝试忽略依赖检查
  8. pacman -Sdd package_name
复制代码

服务启动失败

如果服务启动失败,可以尝试以下步骤:
  1. # 查看服务状态
  2. systemctl status service_name
  3. # 查看服务日志
  4. journalctl -u service_name
  5. # 重新加载systemd配置
  6. systemctl daemon-reload
  7. # 重启服务
  8. systemctl restart service_name
复制代码

进阶应用

构建自定义内核

在嵌入式设备上,构建自定义内核可以提高性能和减少资源占用:
  1. # 安装必要的工具
  2. pacman -S base-devel git xmlto kmod inetutils bc libelf
  3. # 克隆Linux内核源码
  4. git clone --depth=1 --branch rpi-5.10.y https://github.com/raspberrypi/linux
  5. # 进入内核源码目录
  6. cd linux
  7. # 复制当前内核配置
  8. zcat /proc/config.gz > .config
  9. # 或者使用默认配置
  10. make ARCH=arm64 bcm2711_defconfig
  11. # 配置内核
  12. make ARCH=arm64 menuconfig
  13. # 编译内核
  14. make -j$(nproc) ARCH=arm64 Image modules dtbs
  15. # 安装模块
  16. sudo make ARCH=arm64 modules_install
  17. # 复制内核和设备树到/boot分区
  18. sudo cp arch/arm64/boot/dts/broadcom/*.dtb /boot/
  19. sudo cp arch/arm64/boot/dts/overlays/*.dtb* /boot/overlays/
  20. sudo cp arch/arm64/boot/dts/overlays/README /boot/overlays/
  21. sudo cp arch/arm64/boot/Image /boot/kernel8.img
复制代码

配置GPIO

在嵌入式设备上,GPIO控制是常见需求:
  1. # 安装必要的工具
  2. pacman -S python python-pip
  3. # 安装RPi.GPIO库
  4. pip install RPi.GPIO
  5. # 创建一个简单的GPIO控制脚本
  6. cat << EOF > /usr/local/bin/gpio_blink.py
  7. #!/usr/bin/env python
  8. import RPi.GPIO as GPIO
  9. import time
  10. # 设置GPIO模式
  11. GPIO.setmode(GPIO.BCM)
  12. # 设置GPIO引脚
  13. LED_PIN = 18
  14. # 设置GPIO引脚为输出
  15. GPIO.setup(LED_PIN, GPIO.OUT)
  16. try:
  17.     while True:
  18.         GPIO.output(LED_PIN, GPIO.HIGH)
  19.         time.sleep(1)
  20.         GPIO.output(LED_PIN, GPIO.LOW)
  21.         time.sleep(1)
  22. except KeyboardInterrupt:
  23.     GPIO.cleanup()
  24. EOF
  25. # 使脚本可执行
  26. chmod +x /usr/local/bin/gpio_blink.py
  27. # 运行脚本
  28. /usr/local/bin/gpio_blink.py
复制代码

配置I2C和SPI

I2C和SPI是常见的嵌入式设备通信接口:
  1. # 加载I2C和SPI内核模块
  2. modprobe i2c-dev
  3. modprobe spi_bcm2835
  4. # 使模块在启动时自动加载
  5. echo "i2c-dev" >> /etc/modules-load.d/raspberrypi.conf
  6. echo "spi_bcm2835" >> /etc/modules-load.d/raspberrypi.conf
  7. # 安装I2C工具
  8. pacman -S i2c-tools
  9. # 扫描I2C设备
  10. i2cdetect -y 1
复制代码

配置实时监控

在嵌入式设备上,实时监控对于了解系统状态非常重要:
  1. # 安装监控工具
  2. pacman -S htop iotop iftop
  3. # 安装Prometheus和Grafana进行高级监控
  4. pacman -S prometheus grafana
  5. # 配置Prometheus
  6. cat << EOF > /etc/prometheus/prometheus.yml
  7. global:
  8.   scrape_interval: 15s
  9. scrape_configs:
  10.   - job_name: 'prometheus'
  11.     static_configs:
  12.       - targets: ['localhost:9090']
  13.   - job_name: 'node'
  14.     static_configs:
  15.       - targets: ['localhost:9100']
  16. EOF
  17. # 启动并启用Prometheus和Grafana服务
  18. systemctl enable prometheus
  19. systemctl start prometheus
  20. systemctl enable grafana
  21. systemctl start grafana
复制代码

总结

通过本文的学习路径,你已经了解了Arch Linux ARM从系统安装到服务配置的全过程。掌握这些技能后,你可以在嵌入式设备上灵活应用Arch Linux ARM,实现各种功能。

要成为真正的Linux高手,还需要不断学习和实践。以下是一些建议:

1. 深入学习Linux内核和系统架构
2. 参与Arch Linux ARM社区,贡献自己的力量
3. 尝试在不同的嵌入式设备上部署Arch Linux ARM
4. 探索更多高级主题,如实时系统优化、安全加固等
5. 将Arch Linux ARM应用到实际项目中,积累经验

Arch Linux ARM是一个强大而灵活的嵌入式Linux发行版,通过不断学习和实践,你将能够充分发挥其潜力,成为Linux高手。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则