引言

ARM架构因其低功耗、高效能的特点,在嵌入式设备、移动设备和单板计算机等领域得到了广泛应用。Arch Linux作为一个简洁、轻量且高度可定制的Linux发行版,也越来越受到ARM设备用户的青睐。Arch Linux ARM项目为各种ARM设备提供了官方支持,让用户能够在这些设备上体验到Arch Linux的简洁和强大。

本指南将详细介绍如何在各种ARM设备上安装和配置Arch Linux,包括最常见的树莓派以及其他ARM设备。我们还将分享一些实践经验和性能优化技巧,帮助您充分利用ARM硬件的性能。

准备工作

在开始安装之前,您需要准备以下硬件和软件:

硬件要求

  1. ARM设备(如树莓派、ODROID、Cubieboard等)
  2. 电源适配器(确保提供足够的电流)
  3. microSD卡或eMMC模块(建议Class 10或UHS-I,容量至少8GB)
  4. 网络连接(以太网线或支持USB的Wi-Fi适配器)
  5. (可选)散热片或风扇,特别是对于高性能ARM设备
  6. (可选)外壳,以保护设备

软件要求

  1. 一台运行Linux、macOS或Windows的主机电脑
  2. microSD/eMMC读卡器
  3. 磁盘映像工具:
    • Linux: dd命令或Etcher
    • macOS: dd命令或Etcher
    • Windows: Win32DiskImagerEtcher
  4. SSH客户端(如OpenSSH、PuTTY等)
  5. (可选)串行控制台电缆,用于调试

在树莓派上安装Arch Linux

树莓派是最受欢迎的单板计算机之一,Arch Linux ARM项目为各种树莓派型号提供了官方支持。以下是安装步骤:

不同型号树莓派的安装差异

Arch Linux ARM为不同的树莓派型号提供了不同的镜像:

  • 树莓派1 (ARMv6)
  • 树莓派2 (ARMv7)
  • 树莓派3/4 (ARMv8/AArch64)

请根据您的树莓派型号选择正确的镜像。

下载和准备Arch Linux ARM镜像

  1. 访问Arch Linux ARM下载页面
  2. 找到适合您的树莓派型号的镜像
  3. 下载镜像文件(通常是.tar.gz格式)

烧录SD卡

在Linux上

  1. 插入microSD卡,并确定设备名称(例如/dev/sdb/dev/mmcblk0):

    lsblk 
  2. 卸载所有分区:

    sudo umount /dev/sdb* 
  3. 使用fdisk分区SD卡:

    sudo fdisk /dev/sdb 

    在fdisk中:

    • 输入o创建新的DOS分区表
    • 输入n创建新分区
    • 选择主分区(p),分区号1
    • 第一个扇区使用默认值
    • 最后一个扇区使用默认值
    • 输入t更改分区类型,然后输入c设置为W95 FAT32 (LBA)
    • 输入a设置可启动标志
    • 输入w写入更改并退出
  4. 格式化分区:

    sudo mkfs.vfat -F32 /dev/sdb1 
  5. 挂载分区:

    sudo mkdir -p /mnt/sdcard sudo mount /dev/sdb1 /mnt/sdcard 
  6. 解压并复制Arch Linux ARM文件系统:

    wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-armv7-latest.tar.gz bsdtar -xpf ArchLinuxARM-rpi-armv7-latest.tar.gz -C /mnt/sdcard sync 
  7. 卸载分区:

    sudo umount /mnt/sdcard 

在macOS上

  1. 插入microSD卡,并确定设备名称:

    diskutil list 
  2. 卸载SD卡:

    diskutil unmountDisk /dev/diskN 
  3. 使用dd命令将镜像写入SD卡:

    sudo dd if=ArchLinuxARM-rpi-armv7-latest.tar.gz of=/dev/rdiskN bs=1m 

在Windows上

  1. 下载并安装Win32DiskImager
  2. 插入microSD卡
  3. 启动Win32DiskImager
  4. 选择下载的Arch Linux ARM镜像文件
  5. 选择正确的设备驱动器号
  6. 点击”Write”按钮开始写入

首次启动和基本配置

  1. 将烧录好的microSD卡插入树莓派

  2. 连接网络(以太网或配置Wi-Fi)

  3. 连接电源启动树莓派

  4. 通过SSH连接到树莓派:

    ssh alarm@alarmpi 

    默认用户名是alarm,密码是alarm。root用户密码是root

  5. 初始化pacman密钥环:

    pacman-key --init pacman-key --populate archlinuxarm 
  6. 更新系统:

    sudo pacman -Syu 
  7. 设置时区:

    sudo timedatectl set-timezone Asia/Shanghai 
  8. 设置主机名:

    sudo hostnamectl set-hostname myarchpi 
  9. 编辑/etc/locale.gen,取消注释您需要的语言环境,然后生成:

    sudo nano /etc/locale.gen sudo locale-gen 
  10. 设置语言环境:

    echo "LANG=en_US.UTF-8" | sudo tee /etc/locale.conf 
  11. 更改root密码:

    sudo passwd root 
  12. 创建新用户(可选):

    sudo useradd -m -G wheel -s /bin/bash newuser sudo passwd newuser 
  13. 配置sudo(如果创建了新用户):

    sudo visudo 

    取消注释%wheel ALL=(ALL) ALL行。

  14. 重启系统:

    sudo reboot 

在其他ARM设备上安装Arch Linux

除了树莓派,Arch Linux ARM还支持多种其他ARM设备。以下是安装步骤:

支持的设备列表

Arch Linux ARM支持多种ARM设备,包括但不限于:

  • ODROID系列(C1/C2/XU4/N2等)
  • Cubieboard系列
  • BeagleBone系列
  • Pine64系列
  • Rock64
  • ASUS Tinker Board

完整的支持列表请参考Arch Linux ARM官方网站。

设备特定的安装步骤

不同的ARM设备可能有不同的安装步骤,但通常遵循以下模式:

  1. 下载适合您设备的Arch Linux ARM镜像
  2. 准备存储介质(SD卡、eMMC或USB存储)
  3. 烧录镜像到存储介质
  4. (可选)配置U-Boot
  5. 首次启动和基本配置

以ODROID-XU4为例:

  1. 下载ODROID-XU4的Arch Linux ARM镜像:

    wget http://os.archlinuxarm.org/os/ArchLinuxARM-odroid-xu4-latest.tar.gz 
  2. 准备SD卡(与树莓派类似):

    sudo fdisk /dev/sdb # 创建分区表和分区 sudo mkfs.ext4 /dev/sdb1 sudo mkdir -p /mnt/sdcard sudo mount /dev/sdb1 /mnt/sdcard bsdtar -xpf ArchLinuxARM-odroid-xu4-latest.tar.gz -C /mnt/sdcard sync sudo umount /mnt/sdcard 
  3. 将SD卡插入ODROID-XU4,连接电源和网络

  4. 通过SSH连接:

    ssh alarm@odroid 
  5. 进行基本配置(与树莓派类似)

U-Boot配置

对于某些ARM设备,可能需要配置U-Boot(Universal Boot Loader)来正确启动系统。这通常涉及编辑U-Boot环境变量或配置文件。

例如,在ODROID-N2上,您可能需要编辑/boot/boot.ini文件来调整启动参数:

sudo nano /boot/boot.ini 

根据您的需求修改启动参数,例如:

setenv bootargs "root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx rootfstype=ext4 rw console=ttyAML0,115200n8 console=tty0 no_console_suspend fsck.repair=yes net.ifnames=0" 

保存文件并重启系统。

基本系统配置

网络设置

有线网络

大多数ARM设备会自动检测和配置有线网络。如果没有,您可以手动配置:

  1. 查看网络接口:

    ip link 
  2. 启用接口:

    sudo ip link set eth0 up 
  3. 使用DHCP获取IP地址:

    sudo dhcpcd eth0 
  4. 或者设置静态IP:

    sudo ip addr add 192.168.1.100/24 dev eth0 sudo ip route add default via 192.168.1.1 echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf 
  5. 要使网络配置永久化,编辑/etc/systemd/network/eth0.network: “`ini [Match] Name=eth0

[Network] DHCP=ipv4

 对于静态IP: ```ini [Match] Name=eth0 [Network] Address=192.168.1.100/24 Gateway=192.168.1.1 DNS=8.8.8.8 
  1. 启用并启动网络服务:
     sudo systemctl enable systemd-networkd sudo systemctl start systemd-networkd 

无线网络

  1. 安装必要的软件包:

    sudo pacman -S iw wpa_supplicant dialog 
  2. 查看无线接口:

    ip link 
  3. 启用接口:

    sudo ip link set wlan0 up 
  4. 扫描可用的网络:

    sudo iw dev wlan0 scan | grep SSID 
  5. 配置WPA_supplicant:

    sudo nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf 

添加以下内容:

 ctrl_interface=/run/wpa_supplicant update_config=1 network={ ssid="Your_Network_SSID" psk="Your_Password" } 
  1. 启动并启用WPA_supplicant服务:

    sudo systemctl enable wpa_supplicant@wlan0 sudo systemctl start wpa_supplicant@wlan0 
  2. 使用DHCP获取IP地址:

    sudo dhcpcd wlan0 

用户和权限管理

  1. 创建新用户:

    sudo useradd -m -G wheel -s /bin/bash newuser sudo passwd newuser 
  2. 配置sudo:

    sudo visudo 

    取消注释%wheel ALL=(ALL) ALL行。

  3. 删除默认用户(可选):

    sudo userdel -r alarm 
  4. 管理用户组:

    sudo groupadd newgroup sudo usermod -aG newgroup newuser 

软件包管理

Arch Linux使用pacman作为其软件包管理器。以下是一些常用的pacman命令:

  1. 同步软件包数据库并更新系统:

    sudo pacman -Syu 
  2. 搜索软件包:

    pacman -Ss package_name 
  3. 安装软件包:

    sudo pacman -S package_name 
  4. 删除软件包:

    sudo pacman -R package_name 
  5. 删除软件包及其依赖项:

    sudo pacman -Rs package_name 
  6. 列出已安装的软件包:

    pacman -Q 
  7. 查找哪个文件属于哪个软件包:

    pacman -Qo /path/to/file 
  8. 清理软件包缓存:

    sudo pacman -Scc 

Arch User Repository (AUR)

Arch User Repository (AUR)是一个社区驱动的软件仓库,包含大量官方仓库中没有的软件包。要使用AUR,您需要一个AUR助手,如yay

  1. 安装必要的软件包:

    sudo pacman -S git base-devel 
  2. 克隆yay仓库:

    git clone https://aur.archlinux.org/yay.git cd yay 
  3. 构建并安装yay:

    makepkg -si 
  4. 使用yay安装AUR软件包:

    yay -S aur_package_name 

系统更新

保持系统更新是很重要的,特别是对于安全性:

  1. 更新系统:

    sudo pacman -Syu 
  2. 如果有内核更新,重启系统:

    sudo reboot 
  3. 查看已安装的软件包是否有孤立包:

    sudo pacman -Qtd 
  4. 删除孤立包:

    sudo pacman -Rns $(pacman -Qtdq) 

性能优化技巧

文件系统优化

  1. 选择合适的文件系统:

    • 对于SD卡,考虑使用f2fs,这是一个专为闪存设备设计的文件系统:
       sudo pacman -S f2fs-tools sudo mkfs.f2fs /dev/sdb1 
  2. 挂载选项优化: 编辑/etc/fstab,添加适合SD卡的挂载选项:

    UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,noatime,discard 0 1 
    • noatime:禁用访问时间更新,减少写入操作
    • discard:启用TRIM支持,有助于SSD和eMMC的性能和寿命
  3. 使用tmpfs挂载临时目录: 编辑/etc/fstab,添加:

    tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0 

    这将减少对SD卡的写入操作,延长其寿命。

内存管理优化

  1. 创建交换文件(如果需要):

    sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab 
  2. 调整swappiness值(减少交换使用):

    echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-sysctl.conf sudo sysctl -p 
  3. 使用ZRAM(压缩内存作为交换设备):

    sudo pacman -S zram-generator sudo systemctl enable zram-generator sudo systemctl start zram-generator 

CPU调优

  1. 安装cpufrequtils:

    sudo pacman -S cpufrequtils 
  2. 设置CPU性能调节器:

    echo 'governor="ondemand"' | sudo tee /etc/default/cpufrequtils sudo systemctl restart cpufrequtils 

可用的调节器包括:

  • performance:始终以最高频率运行
  • powersave:始终以最低频率运行
  • ondemand:根据负载动态调整频率
  • conservative:类似于ondemand,但调整更平缓
  1. 对于支持的设备,启用CPU频率缩放:
     sudo pacman -S linux-armv7 

启动时间优化

  1. 分析启动时间:

    systemd-analyze systemd-analyze blame 
  2. 禁用不必要的服务:

    sudo systemctl disable service_name 
  3. 使用并行启动: 编辑/etc/systemd/system.conf,取消注释并修改:

    DefaultDependencies=yes DefaultTimeoutStartSec=90s DefaultTimeoutStopSec=90s DefaultStandardOutput=journal DefaultStandardError=inherit 
  4. 使用systemd-bootchart分析启动过程:

    sudo pacman -S systemd-bootchart sudo nano /etc/systemd/bootchart.conf 

    修改配置以启用bootchart。

其他优化技巧

  1. 禁用IPv6(如果不使用): 编辑/etc/sysctl.d/40-ipv6.conf

    net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.eth0.disable_ipv6 = 1 net.ipv6.conf.wlan0.disable_ipv6 = 1 
  2. 使用journalctl控制日志大小: 编辑/etc/systemd/journald.conf

    SystemMaxUse=50M RuntimeMaxUse=50M 
  3. 定期清理日志:

    sudo journalctl --vacuum-size=50M 
  4. 考虑使用轻量级替代品:

    • 替换bash为dash:
       sudo pacman -S dash sudo ln -sfT dash /usr/bin/sh 
    • 使用轻量级窗口管理器(如LXDE、XFCE)代替GNOME或KDE

常见问题和解决方案

SD卡/eMMC损坏

SD卡和eMMC模块可能会因为频繁的写入操作而损坏。以下是一些预防和解决方案:

  1. 监控磁盘健康:

    sudo pacman -S smartmontools sudo smartctl -a /dev/mmcblk0 
  2. 减少写入操作:

    • 使用tmpfs挂载临时目录(如前所述)
    • 禁用或减少日志记录
    • 使用noatime挂载选项
  3. 定期备份系统:

    sudo pacman -S rsync sudo rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /path/to/backup 

过热问题

高性能ARM设备可能会遇到过热问题,导致性能下降或系统不稳定:

  1. 监控温度:

    sudo pacman -S lm_sensors sudo sensors-detect sensors 
  2. 安装散热解决方案:

    • 添加散热片
    • 安装风扇
    • 使用带风扇的外壳
  3. 调整CPU频率限制:

    sudo pacman -S cpupower sudo cpupower frequency-set -u 1200000 

启动问题

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

  1. 使用串行控制台连接查看启动信息
  2. 检查U-Boot配置
  3. 尝试恢复模式(如果设备支持)
  4. 重新烧录系统镜像

性能问题

如果系统运行缓慢,可以尝试以下优化:

  1. 检查系统资源使用情况:

    htop iotop 
  2. 识别并禁用资源密集型服务:

    sudo systemctl stop resource-intensive-service sudo systemctl disable resource-intensive-service 
  3. 考虑升级存储介质(如从SD卡升级到eMMC或USB SSD)

进阶配置和使用技巧

编译自定义内核

编译自定义内核可以优化系统性能并添加特定硬件支持:

  1. 安装必要的软件包:

    sudo pacman -S base-devel git xmlto docbook-xsl 
  2. 获取内核源代码:

    git clone https://github.com/archlinuxarm/linux-armv7.git cd linux-armv7 
  3. 配置内核:

    make menuconfig 
  4. 编译内核:

    make -j$(nproc) 
  5. 安装内核模块:

    sudo make modules_install 
  6. 安装内核:

    sudo cp arch/arm/boot/zImage /boot/ sudo cp System.map /boot/ sudo cp .config /boot/config-$(make kernelversion) 

设置容器和虚拟化

虽然ARM设备资源有限,但仍可以运行轻量级容器:

  1. 安装Docker:

    sudo pacman -S docker sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker $USER 
  2. 运行ARM兼容的容器:

    docker run --rm -it arm32v7/alpine 

设置媒体服务器

ARM设备非常适合作为轻量级媒体服务器:

  1. 安装Plex Media Server:

    yay -S plex-media-server sudo systemctl enable plexmediaserver sudo systemctl start plexmediaserver 
  2. 或者安装轻量级替代品,如MiniDLNA:

    sudo pacman -S minidlna sudo systemctl enable minidlna sudo systemctl start minidlna 

设置网络附加存储(NAS)

将ARM设备转换为NAS:

  1. 安装Samba:

    sudo pacman -S samba 
  2. 配置Samba:

    sudo cp /etc/samba/smb.conf.default /etc/samba/smb.conf sudo nano /etc/samba/smb.conf 

添加共享配置:

 [share] path = /path/to/share browseable = yes writable = yes guest ok = yes read only = no 
  1. 启动Samba服务:
     sudo systemctl enable smb nmb sudo systemctl start smb nmb 

设置GPIO和传感器

对于树莓派等支持GPIO的设备:

  1. 安装必要的软件包:

    sudo pacman -S python python-pip pip install RPi.GPIO 
  2. 创建一个简单的GPIO控制脚本: “`python import RPi.GPIO as GPIO import time

GPIO.setmode(GPIO.BCM) GPIO.setup(18, GPIO.OUT)

try:

 while True: GPIO.output(18, True) time.sleep(1) GPIO.output(18, False) time.sleep(1) 

except KeyboardInterrupt:

 GPIO.cleanup() 
 3. 运行脚本: ```bash python gpio_blink.py 

总结

在ARM架构上安装和配置Arch Linux可能比在传统的x86架构上更具挑战性,但通过本指南提供的详细步骤和优化技巧,您应该能够在各种ARM设备上成功运行Arch Linux,并充分发挥其性能。

从树莓派到其他ARM设备,Arch Linux提供了一个轻量级、高度可定制的操作系统,适合各种应用场景,从简单的家庭服务器到复杂的嵌入式项目。通过适当的优化和配置,即使资源有限的ARM设备也能提供出色的性能和稳定性。

记住,ARM设备的硬件限制可能需要一些妥协和创造性解决方案,但这也是使用Arch Linux的乐趣所在——您可以根据自己的需求和硬件能力完全定制系统。

希望本指南对您在ARM设备上使用Arch Linux有所帮助。祝您使用愉快!