在ARM架构上安装和配置Arch Linux的完整指南从树莓派到其他ARM设备的实践经验和性能优化技巧
引言
ARM架构因其低功耗、高效能的特点,在嵌入式设备、移动设备和单板计算机等领域得到了广泛应用。Arch Linux作为一个简洁、轻量且高度可定制的Linux发行版,也越来越受到ARM设备用户的青睐。Arch Linux ARM项目为各种ARM设备提供了官方支持,让用户能够在这些设备上体验到Arch Linux的简洁和强大。
本指南将详细介绍如何在各种ARM设备上安装和配置Arch Linux,包括最常见的树莓派以及其他ARM设备。我们还将分享一些实践经验和性能优化技巧,帮助您充分利用ARM硬件的性能。
准备工作
在开始安装之前,您需要准备以下硬件和软件:
硬件要求
- ARM设备(如树莓派、ODROID、Cubieboard等)
- 电源适配器(确保提供足够的电流)
- microSD卡或eMMC模块(建议Class 10或UHS-I,容量至少8GB)
- 网络连接(以太网线或支持USB的Wi-Fi适配器)
- (可选)散热片或风扇,特别是对于高性能ARM设备
- (可选)外壳,以保护设备
软件要求
- 一台运行Linux、macOS或Windows的主机电脑
- microSD/eMMC读卡器
- 磁盘映像工具:
- Linux:
dd
命令或Etcher
- macOS:
dd
命令或Etcher
- Windows:
Win32DiskImager
或Etcher
- Linux:
- SSH客户端(如OpenSSH、PuTTY等)
- (可选)串行控制台电缆,用于调试
在树莓派上安装Arch Linux
树莓派是最受欢迎的单板计算机之一,Arch Linux ARM项目为各种树莓派型号提供了官方支持。以下是安装步骤:
不同型号树莓派的安装差异
Arch Linux ARM为不同的树莓派型号提供了不同的镜像:
- 树莓派1 (ARMv6)
- 树莓派2 (ARMv7)
- 树莓派3/4 (ARMv8/AArch64)
请根据您的树莓派型号选择正确的镜像。
下载和准备Arch Linux ARM镜像
- 访问Arch Linux ARM下载页面
- 找到适合您的树莓派型号的镜像
- 下载镜像文件(通常是.tar.gz格式)
烧录SD卡
在Linux上
插入microSD卡,并确定设备名称(例如
/dev/sdb
或/dev/mmcblk0
):lsblk
卸载所有分区:
sudo umount /dev/sdb*
使用
fdisk
分区SD卡:sudo fdisk /dev/sdb
在fdisk中:
- 输入
o
创建新的DOS分区表 - 输入
n
创建新分区 - 选择主分区(
p
),分区号1 - 第一个扇区使用默认值
- 最后一个扇区使用默认值
- 输入
t
更改分区类型,然后输入c
设置为W95 FAT32 (LBA) - 输入
a
设置可启动标志 - 输入
w
写入更改并退出
- 输入
格式化分区:
sudo mkfs.vfat -F32 /dev/sdb1
挂载分区:
sudo mkdir -p /mnt/sdcard sudo mount /dev/sdb1 /mnt/sdcard
解压并复制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
卸载分区:
sudo umount /mnt/sdcard
在macOS上
插入microSD卡,并确定设备名称:
diskutil list
卸载SD卡:
diskutil unmountDisk /dev/diskN
使用
dd
命令将镜像写入SD卡:sudo dd if=ArchLinuxARM-rpi-armv7-latest.tar.gz of=/dev/rdiskN bs=1m
在Windows上
- 下载并安装Win32DiskImager
- 插入microSD卡
- 启动Win32DiskImager
- 选择下载的Arch Linux ARM镜像文件
- 选择正确的设备驱动器号
- 点击”Write”按钮开始写入
首次启动和基本配置
将烧录好的microSD卡插入树莓派
连接网络(以太网或配置Wi-Fi)
连接电源启动树莓派
通过SSH连接到树莓派:
ssh alarm@alarmpi
默认用户名是
alarm
,密码是alarm
。root用户密码是root
。初始化pacman密钥环:
pacman-key --init pacman-key --populate archlinuxarm
更新系统:
sudo pacman -Syu
设置时区:
sudo timedatectl set-timezone Asia/Shanghai
设置主机名:
sudo hostnamectl set-hostname myarchpi
编辑
/etc/locale.gen
,取消注释您需要的语言环境,然后生成:sudo nano /etc/locale.gen sudo locale-gen
设置语言环境:
echo "LANG=en_US.UTF-8" | sudo tee /etc/locale.conf
更改root密码:
sudo passwd root
创建新用户(可选):
sudo useradd -m -G wheel -s /bin/bash newuser sudo passwd newuser
配置sudo(如果创建了新用户):
sudo visudo
取消注释
%wheel ALL=(ALL) ALL
行。重启系统:
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设备可能有不同的安装步骤,但通常遵循以下模式:
- 下载适合您设备的Arch Linux ARM镜像
- 准备存储介质(SD卡、eMMC或USB存储)
- 烧录镜像到存储介质
- (可选)配置U-Boot
- 首次启动和基本配置
以ODROID-XU4为例:
下载ODROID-XU4的Arch Linux ARM镜像:
wget http://os.archlinuxarm.org/os/ArchLinuxARM-odroid-xu4-latest.tar.gz
准备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
将SD卡插入ODROID-XU4,连接电源和网络
通过SSH连接:
ssh alarm@odroid
进行基本配置(与树莓派类似)
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设备会自动检测和配置有线网络。如果没有,您可以手动配置:
查看网络接口:
ip link
启用接口:
sudo ip link set eth0 up
使用DHCP获取IP地址:
sudo dhcpcd eth0
或者设置静态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
要使网络配置永久化,编辑
/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
- 启用并启动网络服务:
sudo systemctl enable systemd-networkd sudo systemctl start systemd-networkd
无线网络
安装必要的软件包:
sudo pacman -S iw wpa_supplicant dialog
查看无线接口:
ip link
启用接口:
sudo ip link set wlan0 up
扫描可用的网络:
sudo iw dev wlan0 scan | grep SSID
配置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" }
启动并启用WPA_supplicant服务:
sudo systemctl enable wpa_supplicant@wlan0 sudo systemctl start wpa_supplicant@wlan0
使用DHCP获取IP地址:
sudo dhcpcd wlan0
用户和权限管理
创建新用户:
sudo useradd -m -G wheel -s /bin/bash newuser sudo passwd newuser
配置sudo:
sudo visudo
取消注释
%wheel ALL=(ALL) ALL
行。删除默认用户(可选):
sudo userdel -r alarm
管理用户组:
sudo groupadd newgroup sudo usermod -aG newgroup newuser
软件包管理
Arch Linux使用pacman作为其软件包管理器。以下是一些常用的pacman命令:
同步软件包数据库并更新系统:
sudo pacman -Syu
搜索软件包:
pacman -Ss package_name
安装软件包:
sudo pacman -S package_name
删除软件包:
sudo pacman -R package_name
删除软件包及其依赖项:
sudo pacman -Rs package_name
列出已安装的软件包:
pacman -Q
查找哪个文件属于哪个软件包:
pacman -Qo /path/to/file
清理软件包缓存:
sudo pacman -Scc
Arch User Repository (AUR)
Arch User Repository (AUR)是一个社区驱动的软件仓库,包含大量官方仓库中没有的软件包。要使用AUR,您需要一个AUR助手,如yay
:
安装必要的软件包:
sudo pacman -S git base-devel
克隆yay仓库:
git clone https://aur.archlinux.org/yay.git cd yay
构建并安装yay:
makepkg -si
使用yay安装AUR软件包:
yay -S aur_package_name
系统更新
保持系统更新是很重要的,特别是对于安全性:
更新系统:
sudo pacman -Syu
如果有内核更新,重启系统:
sudo reboot
查看已安装的软件包是否有孤立包:
sudo pacman -Qtd
删除孤立包:
sudo pacman -Rns $(pacman -Qtdq)
性能优化技巧
文件系统优化
选择合适的文件系统:
- 对于SD卡,考虑使用f2fs,这是一个专为闪存设备设计的文件系统:
sudo pacman -S f2fs-tools sudo mkfs.f2fs /dev/sdb1
- 对于SD卡,考虑使用f2fs,这是一个专为闪存设备设计的文件系统:
挂载选项优化: 编辑
/etc/fstab
,添加适合SD卡的挂载选项:UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,noatime,discard 0 1
noatime
:禁用访问时间更新,减少写入操作discard
:启用TRIM支持,有助于SSD和eMMC的性能和寿命
使用tmpfs挂载临时目录: 编辑
/etc/fstab
,添加:tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 tmpfs /var/log tmpfs defaults,noatime,mode=0755 0 0
这将减少对SD卡的写入操作,延长其寿命。
内存管理优化
创建交换文件(如果需要):
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
调整swappiness值(减少交换使用):
echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-sysctl.conf sudo sysctl -p
使用ZRAM(压缩内存作为交换设备):
sudo pacman -S zram-generator sudo systemctl enable zram-generator sudo systemctl start zram-generator
CPU调优
安装cpufrequtils:
sudo pacman -S cpufrequtils
设置CPU性能调节器:
echo 'governor="ondemand"' | sudo tee /etc/default/cpufrequtils sudo systemctl restart cpufrequtils
可用的调节器包括:
performance
:始终以最高频率运行powersave
:始终以最低频率运行ondemand
:根据负载动态调整频率conservative
:类似于ondemand,但调整更平缓
- 对于支持的设备,启用CPU频率缩放:
sudo pacman -S linux-armv7
启动时间优化
分析启动时间:
systemd-analyze systemd-analyze blame
禁用不必要的服务:
sudo systemctl disable service_name
使用并行启动: 编辑
/etc/systemd/system.conf
,取消注释并修改:DefaultDependencies=yes DefaultTimeoutStartSec=90s DefaultTimeoutStopSec=90s DefaultStandardOutput=journal DefaultStandardError=inherit
使用systemd-bootchart分析启动过程:
sudo pacman -S systemd-bootchart sudo nano /etc/systemd/bootchart.conf
修改配置以启用bootchart。
其他优化技巧
禁用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
使用journalctl控制日志大小: 编辑
/etc/systemd/journald.conf
:SystemMaxUse=50M RuntimeMaxUse=50M
定期清理日志:
sudo journalctl --vacuum-size=50M
考虑使用轻量级替代品:
- 替换bash为dash:
sudo pacman -S dash sudo ln -sfT dash /usr/bin/sh
- 使用轻量级窗口管理器(如LXDE、XFCE)代替GNOME或KDE
- 替换bash为dash:
常见问题和解决方案
SD卡/eMMC损坏
SD卡和eMMC模块可能会因为频繁的写入操作而损坏。以下是一些预防和解决方案:
监控磁盘健康:
sudo pacman -S smartmontools sudo smartctl -a /dev/mmcblk0
减少写入操作:
- 使用tmpfs挂载临时目录(如前所述)
- 禁用或减少日志记录
- 使用noatime挂载选项
定期备份系统:
sudo pacman -S rsync sudo rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /path/to/backup
过热问题
高性能ARM设备可能会遇到过热问题,导致性能下降或系统不稳定:
监控温度:
sudo pacman -S lm_sensors sudo sensors-detect sensors
安装散热解决方案:
- 添加散热片
- 安装风扇
- 使用带风扇的外壳
调整CPU频率限制:
sudo pacman -S cpupower sudo cpupower frequency-set -u 1200000
启动问题
如果系统无法启动,可以尝试以下步骤:
- 使用串行控制台连接查看启动信息
- 检查U-Boot配置
- 尝试恢复模式(如果设备支持)
- 重新烧录系统镜像
性能问题
如果系统运行缓慢,可以尝试以下优化:
检查系统资源使用情况:
htop iotop
识别并禁用资源密集型服务:
sudo systemctl stop resource-intensive-service sudo systemctl disable resource-intensive-service
考虑升级存储介质(如从SD卡升级到eMMC或USB SSD)
进阶配置和使用技巧
编译自定义内核
编译自定义内核可以优化系统性能并添加特定硬件支持:
安装必要的软件包:
sudo pacman -S base-devel git xmlto docbook-xsl
获取内核源代码:
git clone https://github.com/archlinuxarm/linux-armv7.git cd linux-armv7
配置内核:
make menuconfig
编译内核:
make -j$(nproc)
安装内核模块:
sudo make modules_install
安装内核:
sudo cp arch/arm/boot/zImage /boot/ sudo cp System.map /boot/ sudo cp .config /boot/config-$(make kernelversion)
设置容器和虚拟化
虽然ARM设备资源有限,但仍可以运行轻量级容器:
安装Docker:
sudo pacman -S docker sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker $USER
运行ARM兼容的容器:
docker run --rm -it arm32v7/alpine
设置媒体服务器
ARM设备非常适合作为轻量级媒体服务器:
安装Plex Media Server:
yay -S plex-media-server sudo systemctl enable plexmediaserver sudo systemctl start plexmediaserver
或者安装轻量级替代品,如MiniDLNA:
sudo pacman -S minidlna sudo systemctl enable minidlna sudo systemctl start minidlna
设置网络附加存储(NAS)
将ARM设备转换为NAS:
安装Samba:
sudo pacman -S samba
配置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
- 启动Samba服务:
sudo systemctl enable smb nmb sudo systemctl start smb nmb
设置GPIO和传感器
对于树莓派等支持GPIO的设备:
安装必要的软件包:
sudo pacman -S python python-pip pip install RPi.GPIO
创建一个简单的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有所帮助。祝您使用愉快!