活动公告

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

Arch Linux ARM开发环境搭建实战从系统安装到配置优化打造高效编程平台

SunJu_FaceMall

3万

主题

2860

科技点

3万

积分

白金月票

碾压王

积分
32872

塔罗立华奏

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

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

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

x
1. Arch Linux ARM简介与准备工作

1.1 Arch Linux ARM概述

Arch Linux ARM是Arch Linux的ARM架构移植版本,它继承了Arch Linux的核心理念:简洁、轻量、用户中心。Arch Linux ARM适用于各种ARM设备,如树莓派、ODROID、Cubieboard以及其他支持的ARM开发板。它提供了一个滚动更新的系统,使用pacman作为包管理器,让用户能够构建一个完全定制化的开发环境。

与传统的ARM发行版相比,Arch Linux ARM具有以下优势:

• 滚动更新,始终提供最新的软件包
• 简洁的基础系统,没有不必要的预装软件
• 强大的文档和社区支持
• 高度的可定制性

1.2 硬件准备

在开始安装之前,我们需要准备以下硬件:

1. ARM设备:可以是树莓派(任何型号)、ODROID、Cubieboard或其他支持的ARM设备。本文将以树莓派4B为例进行说明,但大多数步骤也适用于其他设备。
2. 电源适配器:确保使用高质量的电源适配器,能够为设备提供稳定的电力。例如,树莓派4B需要5V/3A的电源。
3. MicroSD卡:建议使用Class 10或UHS-I/UHS-3的MicroSD卡,容量至少16GB,推荐32GB或更大。
4. 读卡器:用于将系统镜像写入MicroSD卡。
5. 网络连接:有线网络或Wi-Fi连接。
6. 外设:HDMI显示器、USB键盘和鼠标(初始安装时需要)。

ARM设备:可以是树莓派(任何型号)、ODROID、Cubieboard或其他支持的ARM设备。本文将以树莓派4B为例进行说明,但大多数步骤也适用于其他设备。

电源适配器:确保使用高质量的电源适配器,能够为设备提供稳定的电力。例如,树莓派4B需要5V/3A的电源。

MicroSD卡:建议使用Class 10或UHS-I/UHS-3的MicroSD卡,容量至少16GB,推荐32GB或更大。

读卡器:用于将系统镜像写入MicroSD卡。

网络连接:有线网络或Wi-Fi连接。

外设:HDMI显示器、USB键盘和鼠标(初始安装时需要)。

1.3 软件准备

在另一台计算机上,我们需要准备以下软件:

1. 终端模拟器:Linux和macOS自带终端,Windows用户可以使用PowerShell或WSL。
2. 下载Arch Linux ARM镜像:访问Arch Linux ARM官方网站,根据你的设备型号下载对应的镜像。对于树莓派4B,我们需要下载ARMv8的aarch64版本。
3. 磁盘写入工具:Linux/macOS:使用dd命令Windows:可以使用Win32DiskImager或Rufus
4. Linux/macOS:使用dd命令
5. Windows:可以使用Win32DiskImager或Rufus
6. SSH客户端:用于远程连接到ARM设备。Linux/macOS自带SSH客户端,Windows用户可以使用PuTTY或Windows Terminal。

终端模拟器:Linux和macOS自带终端,Windows用户可以使用PowerShell或WSL。

下载Arch Linux ARM镜像:访问Arch Linux ARM官方网站,根据你的设备型号下载对应的镜像。对于树莓派4B,我们需要下载ARMv8的aarch64版本。

磁盘写入工具:

• Linux/macOS:使用dd命令
• Windows:可以使用Win32DiskImager或Rufus

SSH客户端:用于远程连接到ARM设备。Linux/macOS自带SSH客户端,Windows用户可以使用PuTTY或Windows Terminal。

1.4 网络环境准备

确保你的网络环境允许ARM设备访问互联网。如果使用Wi-Fi,请准备好网络名称(SSID)和密码。如果使用有线网络,请确保网线连接正常。

2. 系统安装步骤

2.1 下载系统镜像

首先,我们需要从Arch Linux ARM官方网站下载适合我们设备的系统镜像。以树莓派4B为例:
  1. # 在Linux或macOS上使用wget下载镜像
  2. wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz
  3. # 验证下载的镜像
  4. wget http://os.archlinuxarm.org/os/ArchLinuxARM-rpi-aarch64-latest.tar.gz.md5
  5. md5sum -c ArchLinuxARM-rpi-aarch64-latest.tar.gz.md5
复制代码

2.2 准备MicroSD卡

在将镜像写入MicroSD卡之前,我们需要对卡进行分区和格式化。请确保卡上的数据已经备份,因为以下操作将清除卡上的所有数据。
  1. # 1. 确定MicroSD卡的设备名称
  2. lsblk
  3. # 假设MicroSD卡是/dev/sdb(请根据实际情况替换)
  4. # 2. 卸载所有分区
  5. sudo umount /dev/sdb*
  6. # 3. 删除所有分区
  7. sudo fdisk /dev/sdb <<EOF
  8. o
  9. w
  10. EOF
  11. # 4. 创建新的分区表
  12. sudo fdisk /dev/sdb <<EOF
  13. n
  14. p
  15. 1
  16. +100M
  17. t
  18. c
  19. n
  20. p
  21. 2
  22. w
  23. EOF
  24. # 5. 格式化分区
  25. sudo mkfs.vfat -F32 /dev/sdb1
  26. sudo mkfs.ext4 /dev/sdb2
  27. # 6. 挂载分区
  28. sudo mkdir -p /mnt/{boot,root}
  29. sudo mount /dev/sdb1 /mnt/boot
  30. sudo mount /dev/sdb2 /mnt/root
复制代码
  1. # 1. 确定MicroSD卡的设备名称
  2. diskutil list
  3. # 假设MicroSD卡是/dev/disk2(请根据实际情况替换)
  4. # 2. 卸载所有分区
  5. diskutil unmountDisk /dev/disk2
  6. # 3. 删除所有分区并创建新的分区表
  7. sudo fdisk -y /dev/disk2 <<EOF
  8. o
  9. w
  10. EOF
  11. # 4. 创建新的分区
  12. sudo fdisk -y /dev/disk2 <<EOF
  13. n
  14. p
  15. 1
  16. +100M
  17. t
  18. c
  19. n
  20. p
  21. 2
  22. w
  23. EOF
  24. # 5. 格式化分区
  25. sudo newfs_msdos -F 32 /dev/disk2s1
  26. sudo newfs_hfs /dev/disk2s2
  27. # 6. 挂载分区
  28. sudo mkdir -p /mnt/{boot,root}
  29. sudo mount -t msdos /dev/disk2s1 /mnt/boot
  30. sudo mount -t hfs /dev/disk2s2 /mnt/root
复制代码

在Windows上,可以使用Rufus或Win32DiskImager等工具来准备MicroSD卡:

1. 下载并安装Rufus(https://rufus.ie/)
2. 插入MicroSD卡
3. 打开Rufus,选择MicroSD卡作为设备
4. 分区方案选择GPT
5. 文件系统选择FAT32
6. 点击”开始”按钮,确认格式化

2.3 解压并安装系统镜像
  1. # 1. 解压系统镜像到root分区
  2. sudo bsdtar -xpf ArchLinuxARM-rpi-aarch64-latest.tar.gz -C /mnt/root
  3. # 2. 移动boot文件到boot分区
  4. sudo mv /mnt/root/boot/* /mnt/boot/
  5. # 3. 同步文件系统
  6. sync
  7. # 4. 卸载分区
  8. sudo umount /mnt/{boot,root}
复制代码

在Windows上,可以使用Win32DiskImager直接写入镜像:

1. 下载并安装Win32DiskImager(https://sourceforge.net/projects/win32diskimager/)
2. 插入MicroSD卡
3. 打开Win32DiskImager,选择下载的Arch Linux ARM镜像文件
4. 选择MicroSD卡作为设备
5. 点击”Write”按钮,等待写入完成

2.4 首次启动与初始配置

1. 将MicroSD卡插入ARM设备(如树莓派)
2. 连接显示器、键盘和鼠标
3. 连接网络(有线或Wi-Fi)
4. 连接电源,启动设备

系统启动后,使用默认凭据登录:

• 用户名:alarm
• 密码:alarm

然后切换到root用户:
  1. su
复制代码

默认root密码是:root

2.5 初始系统配置
  1. # 更新密钥环
  2. pacman-key --init
  3. pacman-key --populate archlinuxarm
  4. # 更新系统
  5. 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 myarm > /etc/hostname
  3. # 编辑hosts文件
  4. cat <<EOF > /etc/hosts
  5. 127.0.0.1   localhost
  6. ::1         localhost
  7. 127.0.1.1   myarm.localdomain myarm
  8. EOF
复制代码

对于有线网络,系统通常会自动配置。对于Wi-Fi,我们需要安装和配置相关工具:
  1. # 安装网络工具
  2. pacman -S netctl dialog wpa_supplicant
  3. # 扫描可用的Wi-Fi网络
  4. wifi-menu
  5. # 或者手动配置Wi-Fi
  6. cp /etc/netctl/examples/wireless-wpa /etc/netctl/
  7. nano /etc/netctl/wireless-wpa
  8. # 编辑配置文件,设置SSID和密码
  9. Description='A simple WPA encrypted wireless connection'
  10. Interface=wlan0
  11. Connection=wireless
  12. Security=wpa
  13. IP=dhcp
  14. ESSID='Your_Network_Name'
  15. Key='Your_Password'
  16. # 启用配置
  17. netctl enable wireless-wpa
  18. netctl start wireless-wpa
复制代码
  1. # 创建新用户(以developer为例)
  2. useradd -m -G wheel -s /bin/bash developer
  3. # 设置密码
  4. passwd developer
  5. # 配置sudo
  6. pacman -S sudo
  7. visudo
复制代码

在visudo中,取消以下行的注释:
  1. %wheel ALL=(ALL) ALL
复制代码
  1. # 启用SSH服务
  2. systemctl enable sshd
  3. systemctl start sshd
  4. # 检查SSH服务状态
  5. systemctl status sshd
复制代码

现在,你可以通过SSH从另一台计算机连接到ARM设备:
  1. ssh developer@<your-arm-device-ip>
复制代码

3. 基础系统配置

3.1 系统更新与维护

Arch Linux ARM是一个滚动更新的发行版,定期更新系统非常重要:
  1. # 更新系统
  2. sudo pacman -Syu
  3. # 清理包缓存
  4. sudo pacman -Scc
  5. # 查找孤立包
  6. sudo pacman -Qtdq
  7. # 删除孤立包(如果有)
  8. sudo pacman -Rns $(pacman -Qtdq)
复制代码

虽然不推荐完全自动更新,但可以设置通知提醒:
  1. # 安装pacman-contrib
  2. sudo pacman -S pacman-contrib
  3. # 创建一个检查更新的脚本
  4. cat <<EOF > /usr/local/bin/check-updates
  5. #!/bin/bash
  6. if [ $(checkupdates | wc -l) -gt 0 ]; then
  7.     echo "There are $(checkupdates | wc -l) updates available."
  8.     checkupdates
  9. else
  10.     echo "System is up to date."
  11. fi
  12. EOF
  13. # 使脚本可执行
  14. chmod +x /usr/local/bin/check-updates
  15. # 可以将此脚本添加到crontab中定期运行
  16. crontab -e
复制代码

在crontab中添加以下行以每天检查一次更新:
  1. 0 12 * * * /usr/local/bin/check-updates
复制代码

3.2 存储管理

如果MicroSD卡容量大于默认分区大小,我们需要扩展文件系统以使用全部可用空间:
  1. # 使用fdisk调整分区
  2. sudo fdisk /dev/mmcblk0 <<EOF
  3. d
  4. 2
  5. n
  6. p
  7. 2
  8. w
  9. EOF
  10. # 重启系统
  11. sudo reboot
  12. # 重启后,调整文件系统大小
  13. sudo resize2fs /dev/mmcblk0p2
复制代码

如果你有外部硬盘或USB存储设备,可以设置自动挂载:
  1. # 安装必要的工具
  2. sudo pacman -S ntfs-3g exfat-utils
  3. # 创建挂载点
  4. sudo mkdir /mnt/external
  5. # 查看设备UUID
  6. ls -l /dev/disk/by-uuid/
  7. # 编辑fstab文件
  8. sudo nano /etc/fstab
复制代码

在fstab中添加以下行(替换UUID为你的设备UUID):
  1. UUID=your-uuid-here /mnt/external ntfs-3g defaults,uid=1000,gid=1000 0 0
复制代码

3.3 系统安全配置
  1. # 安装ufw(简单防火墙)
  2. sudo pacman -S ufw
  3. # 启用ufw
  4. sudo ufw enable
  5. # 设置默认策略
  6. sudo ufw default deny incoming
  7. sudo ufw default allow outgoing
  8. # 允许SSH连接
  9. sudo ufw allow ssh
  10. # 查看防火墙状态
  11. sudo ufw status
复制代码

为了提高安全性,建议禁用root用户的SSH登录:
  1. # 编辑SSH配置文件
  2. sudo nano /etc/ssh/sshd_config
复制代码

找到以下行并修改为:
  1. PermitRootLogin no
复制代码

然后重启SSH服务:
  1. sudo systemctl restart sshd
复制代码
  1. # 安装屏幕锁定工具
  2. sudo pacman -S xautolock xscreensaver
  3. # 配置自动锁屏(5分钟无操作后锁定)
  4. xautolock -time 5 -locker "xscreensaver-command -lock" &
复制代码

4. 开发环境配置

4.1 基础开发工具安装
  1. # 安装基础开发工具
  2. sudo pacman -S base-devel
  3. # 安装版本控制工具
  4. sudo pacman -S git
  5. # 配置Git
  6. git config --global user.name "Your Name"
  7. git config --global user.email "your.email@example.com"
复制代码
  1. # 安装Vim
  2. sudo pacman -S vim
  3. # 安装Nano(简单易用的终端编辑器)
  4. sudo pacman -S nano
  5. # 安装VS Code(如果需要图形界面)
  6. sudo pacman -S code
复制代码

4.2 编程语言环境配置
  1. # 安装Python
  2. sudo pacman -S python python-pip
  3. # 安装虚拟环境工具
  4. sudo pip install virtualenv
  5. # 创建项目目录
  6. mkdir ~/python-projects
  7. cd ~/python-projects
  8. # 创建虚拟环境
  9. virtualenv myenv
  10. # 激活虚拟环境
  11. source myenv/bin/activate
  12. # 安装常用Python包
  13. pip install numpy pandas matplotlib requests flask django
  14. # 退出虚拟环境
  15. deactivate
复制代码
  1. # 安装GCC和G++
  2. sudo pacman -S gcc gcc-libs
  3. # 安装GDB调试器
  4. sudo pacman -S gdb
  5. # 安装CMake构建工具
  6. sudo pacman -S cmake
  7. # 安装Make
  8. sudo pacman -S make
  9. # 创建一个简单的C++示例
  10. cat <<EOF > hello.cpp
  11. #include <iostream>
  12. int main() {
  13.     std::cout << "Hello, ARM World!" << std::endl;
  14.     return 0;
  15. }
  16. EOF
  17. # 编译并运行
  18. g++ -o hello hello.cpp
  19. ./hello
复制代码
  1. # 安装OpenJDK
  2. sudo pacman -S jdk-openjdk
  3. # 验证Java安装
  4. java -version
  5. javac -version
  6. # 设置JAVA_HOME环境变量
  7. echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk' >> ~/.bashrc
  8. source ~/.bashrc
  9. # 创建一个简单的Java示例
  10. cat <<EOF > Hello.java
  11. public class Hello {
  12.     public static void main(String[] args) {
  13.         System.out.println("Hello, ARM World!");
  14.     }
  15. }
  16. EOF
  17. # 编译并运行
  18. javac Hello.java
  19. java Hello
复制代码
  1. # 安装Go
  2. sudo pacman -S go
  3. # 设置Go环境变量
  4. echo 'export GOPATH=$HOME/go' >> ~/.bashrc
  5. echo 'export PATH=$PATH:/usr/bin/go/bin:$GOPATH/bin' >> ~/.bashrc
  6. source ~/.bashrc
  7. # 创建一个简单的Go示例
  8. mkdir -p ~/go/src/hello
  9. cat <<EOF > ~/go/src/hello/hello.go
  10. package main
  11. import "fmt"
  12. func main() {
  13.     fmt.Println("Hello, ARM World!")
  14. }
  15. EOF
  16. # 构建并运行
  17. cd ~/go/src/hello
  18. go build
  19. ./hello
复制代码
  1. # 安装Node.js和npm
  2. sudo pacman -S nodejs npm
  3. # 验证安装
  4. node -v
  5. npm -v
  6. # 创建一个简单的Node.js示例
  7. cat <<EOF > hello.js
  8. console.log('Hello, ARM World!');
  9. EOF
  10. # 运行
  11. node hello.js
复制代码

4.3 Web开发环境
  1. # 安装Apache (LAMP)
  2. sudo pacman -S apache php php-apache
  3. # 安装Nginx (LEMP)
  4. sudo pacman -S nginx
  5. # 安装MariaDB (MySQL)
  6. sudo pacman -S mariadb
  7. # 初始化MariaDB
  8. sudo mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql
  9. # 启动并启用MariaDB
  10. sudo systemctl start mariadb
  11. sudo systemctl enable mariadb
  12. # 运行安全安装脚本
  13. sudo mysql_secure_installation
  14. # 安装PHP-FPM (用于Nginx)
  15. sudo pacman -S php-fpm
复制代码
  1. # 编辑Apache配置文件
  2. sudo nano /etc/httpd/conf/httpd.conf
  3. # 取消以下行的注释:
  4. LoadModule unique_id_module modules/mod_unique_id.so
  5. LoadModule mpm_event_module modules/mod_mpm_event.so
  6. # 添加PHP处理
  7. LoadModule php_module modules/libphp.so
  8. AddHandler php-script .php
  9. Include conf/extra/php_module.conf
  10. # 启动并启用Apache
  11. sudo systemctl start httpd
  12. sudo systemctl enable httpd
  13. # 创建PHP测试文件
  14. echo "<?php phpinfo(); ?>" | sudo tee /srv/http/phpinfo.php
复制代码
  1. # 创建Nginx配置文件
  2. sudo nano /etc/nginx/nginx.conf
复制代码

添加以下配置:
  1. worker_processes  1;
  2. events {
  3.     worker_connections  1024;
  4. }
  5. http {
  6.     include       mime.types;
  7.     default_type  application/octet-stream;
  8.     sendfile        on;
  9.     keepalive_timeout  65;
  10.     server {
  11.         listen       80;
  12.         server_name  localhost;
  13.         location / {
  14.             root   /usr/share/nginx/html;
  15.             index  index.html index.htm;
  16.         }
  17.         location ~ \.php$ {
  18.             root           /usr/share/nginx/html;
  19.             fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
  20.             fastcgi_index  index.php;
  21.             fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
  22.             include        fastcgi_params;
  23.         }
  24.     }
  25. }
复制代码
  1. # 启动并启用Nginx和PHP-FPM
  2. sudo systemctl start nginx
  3. sudo systemctl enable nginx
  4. sudo systemctl start php-fpm
  5. sudo systemctl enable php-fpm
  6. # 创建PHP测试文件
  7. echo "<?php phpinfo(); ?>" | sudo tee /usr/share/nginx/html/phpinfo.php
复制代码

4.4 数据库环境
  1. # 安装PostgreSQL
  2. sudo pacman -S postgresql
  3. # 初始化数据库集群
  4. sudo -u postgres initdb -D /var/lib/postgres/data
  5. # 启动并启用PostgreSQL
  6. sudo systemctl start postgresql
  7. sudo systemctl enable postgresql
  8. # 设置PostgreSQL用户密码
  9. sudo -u postgres psql -c "ALTER USER postgres PASSWORD 'your_password';"
  10. # 创建新数据库和用户
  11. sudo -u postgres createuser --interactive
  12. sudo -u postgres createdb mydb
复制代码
  1. # 安装MongoDB
  2. sudo pacman -S mongodb
  3. # 创建数据目录
  4. sudo mkdir -p /var/lib/mongodb
  5. sudo chown mongodb:mongodb /var/lib/mongodb
  6. # 启动并启用MongoDB
  7. sudo systemctl start mongodb
  8. sudo systemctl enable mongodb
  9. # 连接到MongoDB
  10. mongo
复制代码

4.5 Docker环境
  1. # 安装Docker
  2. sudo pacman -S docker
  3. # 启动并启用Docker服务
  4. sudo systemctl start docker
  5. sudo systemctl enable docker
  6. # 将当前用户添加到docker组
  7. sudo usermod -aG docker $USER
  8. # 重新登录以使组更改生效
  9. # 或者使用以下命令
  10. newgrp docker
  11. # 验证Docker安装
  12. docker run hello-world
复制代码
  1. # 安装Docker Compose
  2. sudo pacman -S docker-compose
  3. # 验证安装
  4. docker-compose --version
复制代码
  1. # 创建项目目录
  2. mkdir ~/docker-projects
  3. cd ~/docker-projects
  4. # 创建Dockerfile
  5. cat <<EOF > Dockerfile
  6. FROM arm64v8/alpine:latest
  7. RUN apk add --no-cache python3 py3-pip
  8. COPY . /app
  9. WORKDIR /app
  10. RUN pip install --no-cache-dir flask
  11. CMD ["python3", "app.py"]
  12. EOF
  13. # 创建Flask应用
  14. cat <<EOF > app.py
  15. from flask import Flask
  16. app = Flask(__name__)
  17. @app.route('/')
  18. def hello():
  19.     return "Hello, ARM Docker World!"
  20. if __name__ == '__main__':
  21.     app.run(host='0.0.0.0', port=5000)
  22. EOF
  23. # 构建Docker镜像
  24. docker build -t arm-flask-app .
  25. # 运行容器
  26. docker run -d -p 5000:5000 --name flask-app arm-flask-app
复制代码

5. 系统优化和性能调优

5.1 系统性能监控
  1. # 安装htop(交互式进程查看器)
  2. sudo pacman -S htop
  3. # 安装iotop(I/O监控)
  4. sudo pacman -S iotop
  5. # 安装iftop(网络流量监控)
  6. sudo pacman -S iftop
  7. # 安装sysstat(系统性能统计工具)
  8. sudo pacman -S sysstat
  9. # 启用sysstat数据收集
  10. sudo systemctl enable sysstat
  11. sudo systemctl start sysstat
复制代码
  1. # 使用htop监控系统进程
  2. htop
  3. # 使用iotop监控I/O使用情况
  4. sudo iotop
  5. # 使用iftop监控网络流量
  6. sudo iftop
  7. # 查看CPU使用情况
  8. mpstat 1 5
  9. # 查看内存使用情况
  10. free -h
  11. # 查看磁盘使用情况
  12. df -h
  13. # 查看系统启动时间
  14. systemd-analyze
复制代码

5.2 CPU优化
  1. # 安装cpufrequtils
  2. sudo pacman -S cpufrequtils
  3. # 查看CPU频率信息
  4. cpufreq-info
  5. # 设置CPU调频策略为performance(高性能)
  6. sudo cpufreq-set -g performance
  7. # 或者设置为ondemand(按需调整)
  8. sudo cpufreq-set -g ondemand
  9. # 查看当前CPU频率
  10. watch -n 1 cat /proc/cpuinfo | grep "MHz"
复制代码
  1. # 安装cpulimit
  2. sudo pacman -S cpulimit
  3. # 限制某个进程的CPU使用率为50%
  4. cpulimit -l 50 -p <pid>
复制代码

5.3 内存优化
  1. # 创建交换文件(2GB)
  2. sudo fallocate -l 2G /swapfile
  3. # 设置正确的权限
  4. sudo chmod 600 /swapfile
  5. # 格式化为交换空间
  6. sudo mkswap /swapfile
  7. # 启用交换空间
  8. sudo swapon /swapfile
  9. # 永久启用交换空间
  10. echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
  11. # 调整交换空间使用倾向(值越小,越倾向于使用物理内存)
  12. echo 'vm.swappiness=10' | sudo tee -a /etc/sysctl.d/99-sysctl.conf
  13. sudo sysctl -p
复制代码
  1. # 清理页面缓存
  2. sudo sysctl vm.drop_caches=1
  3. # 清理目录项和inode
  4. sudo sysctl vm.drop_caches=2
  5. # 清理页面缓存、目录项和inode
  6. sudo sysctl vm.drop_caches=3
复制代码

5.4 存储优化
  1. # 检查文件系统
  2. sudo fsck -t ext4 /dev/mmcblk0p2
  3. # 调整文件系统参数(减少文件访问时间更新)
  4. sudo tune2fs -o noatime /dev/mmcblk0p2
  5. # 检查磁盘I/O性能
  6. sudo hdparm -Tt /dev/mmcblk0
复制代码
  1. # 创建tmpfs挂载点
  2. sudo mkdir /tmpfs
  3. # 挂载tmpfs(使用512MB内存)
  4. sudo mount -t tmpfs -o size=512m tmpfs /tmpfs
  5. # 永久挂载tmpfs
  6. echo 'tmpfs /tmpfs tmpfs defaults,size=512m 0 0' | sudo tee -a /etc/fstab
  7. # 将临时目录移动到tmpfs
  8. sudo ln -s /tmpfs/tmp /tmp
  9. sudo ln -s /tmpfs/var/tmp /var/tmp
复制代码

5.5 网络优化
  1. # 查看网络接口信息
  2. ip a
  3. # 查看网络统计信息
  4. netstat -s
  5. # 调整TCP参数
  6. echo 'net.core.rmem_max = 16777216' | sudo tee -a /etc/sysctl.d/99-network.conf
  7. echo 'net.core.wmem_max = 16777216' | sudo tee -a /etc/sysctl.d/99-network.conf
  8. echo 'net.ipv4.tcp_rmem = 4096 87380 16777216' | sudo tee -a /etc/sysctl.d/99-network.conf
  9. echo 'net.ipv4.tcp_wmem = 4096 65536 16777216' | sudo tee -a /etc/sysctl.d/99-network.conf
  10. echo 'net.core.netdev_max_backlog = 5000' | sudo tee -a /etc/sysctl.d/99-network.conf
  11. echo 'net.ipv4.tcp_congestion_control = bbr' | sudo tee -a /etc/sysctl.d/99-network.conf
  12. # 应用配置
  13. sudo sysctl -p
复制代码
  1. # 安装网络优化工具
  2. sudo pacman -S ethtool
  3. # 查看网络接口设置
  4. sudo ethtool eth0
  5. # 优化网络接口(以eth0为例)
  6. sudo ethtool -G eth0 rx 4096 tx 4096
  7. sudo ethtool -K eth0 gso on
  8. sudo ethtool -K eth0 tso on
  9. sudo ethtool -K eth0 ufo on
  10. sudo ethtool -K eth0 gro on
复制代码

5.6 系统服务优化
  1. # 查看已启用的服务
  2. systemctl list-unit-files --state=enabled
  3. # 禁用不必要的服务
  4. sudo systemctl disable bluetooth.service
  5. sudo systemctl disable cups.service
  6. sudo systemctl disable avahi-daemon.service
复制代码
  1. # 分析引导时间
  2. systemd-analyze time
  3. # 查看引导过程中的详细信息
  4. systemd-analyze blame
  5. # 使用并行服务启动
  6. sudo sed -i 's/#DefaultTimeoutStartSec=90s/DefaultTimeoutStartSec=10s/' /etc/systemd/system.conf
  7. sudo sed -i 's/#DefaultTimeoutStopSec=90s/DefaultTimeoutStopSec=10s/' /etc/systemd/system.conf
复制代码

6. 常见问题和解决方案

6.1 系统启动问题

问题:插入电源后,设备没有任何反应或无法完成启动。

解决方案:

1. 检查电源适配器是否正常工作,确保它能够提供足够的电流。
2. 检查MicroSD卡是否正确插入,尝试重新插拔。
3. 检查MicroSD卡是否有损坏,尝试在另一台计算机上读取。
4. 重新写入系统镜像到MicroSD卡。
5. 如果使用HDMI显示器,检查HDMI线缆和显示器设置。

问题:系统启动过程中在某个阶段卡住,无法进入登录界面。

解决方案:

1. 重启设备,观察卡住的位置,记录错误信息。
2. 尝试进入紧急模式或恢复模式:# 在启动时按住Shift键或ESC键进入GRUB菜单
# 选择Advanced options,然后选择recovery mode
3. 检查系统日志:journalctl -xb
4. 如果是文件系统错误,尝试修复:fsck /dev/mmcblk0p2
5. 如果是软件包问题,尝试回滚到之前的版本:pacman -U /var/cache/pacman/pkg/package-old-version.pkg.tar.xz

重启设备,观察卡住的位置,记录错误信息。

尝试进入紧急模式或恢复模式:
  1. # 在启动时按住Shift键或ESC键进入GRUB菜单
  2. # 选择Advanced options,然后选择recovery mode
复制代码

检查系统日志:
  1. journalctl -xb
复制代码

如果是文件系统错误,尝试修复:
  1. fsck /dev/mmcblk0p2
复制代码

如果是软件包问题,尝试回滚到之前的版本:
  1. pacman -U /var/cache/pacman/pkg/package-old-version.pkg.tar.xz
复制代码

6.2 网络连接问题

问题:系统无法连接到Wi-Fi网络。

解决方案:

1. 检查Wi-Fi适配器是否被识别:ip a
2. 确保Wi-Fi适配器已启用:rfkill list
rfkill unblock wifi
3. 重新配置Wi-Fi连接:wifi-menu
4. 如果使用netctl,检查配置文件:cat /etc/netctl/wireless-wpa
5. 检查系统日志以获取更多信息:journalctl -u netctl
  1. ip a
复制代码
  1. rfkill list
  2. rfkill unblock wifi
复制代码
  1. wifi-menu
复制代码
  1. cat /etc/netctl/wireless-wpa
复制代码
  1. journalctl -u netctl
复制代码

问题:网络连接频繁断开或速度很慢。

解决方案:

1. 检查信号强度:iwconfig wlan0
2. 更改Wi-Fi信道,避免干扰:# 编辑网络配置文件
nano /etc/netctl/wireless-wpa添加以下行:Channel=6
3. 更新固件:pacman -S linux-firmware
4. 调整电源管理设置:iw dev wlan0 set power_save off

检查信号强度:iwconfig wlan0
  1. iwconfig wlan0
复制代码

更改Wi-Fi信道,避免干扰:
  1. # 编辑网络配置文件
  2. nano /etc/netctl/wireless-wpa
复制代码

添加以下行:
  1. Channel=6
复制代码

更新固件:
  1. pacman -S linux-firmware
复制代码

调整电源管理设置:
  1. iw dev wlan0 set power_save off
复制代码

6.3 存储问题

问题:系统报告文件系统错误或无法读取MicroSD卡。

解决方案:

1. 检查MicroSD卡的健康状态:dmesg | grep mmcblk0
2. 尝试修复文件系统:fsck /dev/mmcblk0p2
3. 如果无法修复,备份重要数据并重新格式化MicroSD卡。
4. 考虑使用更高质量的MicroSD卡,或者使用USB SSD作为系统盘。
  1. dmesg | grep mmcblk0
复制代码
  1. fsck /dev/mmcblk0p2
复制代码

问题:系统提示磁盘空间不足,导致无法正常工作。

解决方案:

1. 检查磁盘使用情况:df -h
du -sh /* | sort -h
2. 清理包缓存:sudo pacman -Scc
3. 删除不必要的软件包:sudo pacman -Qtdq | sudo pacman -Rns -
4. 清理日志文件:sudo journalctl --vacuum-size=100M
5. 扩展文件系统(如果MicroSD卡有未分配空间):sudo growpart /dev/mmcblk0 2
sudo resize2fs /dev/mmcblk0p2
  1. df -h
  2. du -sh /* | sort -h
复制代码
  1. sudo pacman -Scc
复制代码
  1. sudo pacman -Qtdq | sudo pacman -Rns -
复制代码
  1. sudo journalctl --vacuum-size=100M
复制代码
  1. sudo growpart /dev/mmcblk0 2
  2. sudo resize2fs /dev/mmcblk0p2
复制代码

6.4 性能问题

问题:系统响应缓慢,应用程序运行卡顿。

解决方案:

1. 检查系统资源使用情况:htop
iotop
free -h
2. 检查CPU温度:vcgencmd measure_temp
3. 确保系统有足够的交换空间:swapon --show
free -h
4. 调整CPU频率:sudo cpufreq-set -g performance
5. 优化启动服务:systemctl list-unit-files --state=enabled
sudo systemctl disable unnecessary-service
  1. htop
  2. iotop
  3. free -h
复制代码
  1. vcgencmd measure_temp
复制代码
  1. swapon --show
  2. free -h
复制代码
  1. sudo cpufreq-set -g performance
复制代码
  1. systemctl list-unit-files --state=enabled
  2. sudo systemctl disable unnecessary-service
复制代码

问题:系统负载持续过高,导致响应缓慢。

解决方案:

1. 识别高负载的进程:top
ps aux --sort=-%cpu | head
2. 检查系统日志:journalctl -f
3. 如果是特定应用程序导致的问题,尝试重新配置或替换该应用程序。
4. 增加交换空间:sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
5. 考虑升级硬件或使用更轻量级的应用程序。
  1. top
  2. ps aux --sort=-%cpu | head
复制代码
  1. journalctl -f
复制代码
  1. sudo fallocate -l 2G /swapfile
  2. sudo chmod 600 /swapfile
  3. sudo mkswap /swapfile
  4. sudo swapon /swapfile
复制代码

6.5 开发环境问题

问题:在编译软件时遇到错误。

解决方案:

1. 确保安装了所有必要的依赖:sudo pacman -S base-devel
2. 检查错误日志,确定具体的错误原因。
3. 更新系统:sudo pacman -Syu
4. 如果是AUR包问题,尝试查看PKGBUILD文件并解决依赖问题。
5. 搜索错误信息,查找特定问题的解决方案。
  1. sudo pacman -S base-devel
复制代码
  1. sudo pacman -Syu
复制代码

问题:在开发过程中遇到权限相关的错误。

解决方案:

1. 检查文件和目录的权限:ls -la
2. 修改文件或目录的所有权:sudo chown -R $USER:$USER /path/to/directory
3. 修改文件或目录的权限:chmod 755 /path/to/directory
4. 如果是Docker相关问题,将用户添加到docker组:sudo usermod -aG docker $USER
newgrp docker
  1. ls -la
复制代码
  1. sudo chown -R $USER:$USER /path/to/directory
复制代码
  1. chmod 755 /path/to/directory
复制代码
  1. sudo usermod -aG docker $USER
  2. newgrp docker
复制代码

7. 总结与最佳实践

7.1 系统维护最佳实践

1. 定期更新系统:Arch Linux ARM是一个滚动更新的发行版,定期更新系统可以确保你获得最新的安全补丁和功能改进。
  1. sudo pacman -Syu
复制代码

1. 监控系统资源:定期检查系统资源使用情况,以便及时发现和解决潜在问题。
  1. htop
  2.    df -h
  3.    journalctl -f
复制代码

1. 备份重要数据:定期备份重要数据和配置文件,以防系统故障或数据丢失。
  1. # 使用rsync备份
  2.    rsync -aAXv / --exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} /path/to/backup
复制代码

1. 清理系统垃圾:定期清理不必要的文件和软件包,释放磁盘空间。
  1. sudo pacman -Scc
  2.    sudo journalctl --vacuum-size=100M
复制代码

7.2 开发环境最佳实践

1. 使用版本控制:使用Git等版本控制系统管理你的代码,确保代码的安全和可追溯性。
  1. git init
  2.    git add .
  3.    git commit -m "Initial commit"
复制代码

1. 使用虚拟环境:为不同的项目创建独立的虚拟环境,避免依赖冲突。
  1. # Python虚拟环境
  2.    python -m venv myenv
  3.    source myenv/bin/activate
复制代码

1. 自动化测试:实现自动化测试,确保代码质量和稳定性。
  1. # Python单元测试示例
  2.    pip install pytest
  3.    pytest
复制代码

1. 容器化应用:使用Docker等容器技术,确保应用环境的一致性。
  1. # Dockerfile示例
  2.    FROM arm64v8/python:3.9
  3.    WORKDIR /app
  4.    COPY . .
  5.    RUN pip install -r requirements.txt
  6.    CMD ["python", "app.py"]
复制代码

7.3 性能优化最佳实践

1. 监控系统性能:使用系统监控工具持续跟踪系统性能,及时发现瓶颈。
  1. # 安装监控工具
  2.    sudo pacman -S htop iotop iftop sysstat
  3.    # 使用监控工具
  4.    htop
  5.    iotop
  6.    iftop
复制代码

1. 优化系统配置:根据系统负载和使用场景,调整系统配置以获得最佳性能。
  1. # 优化CPU频率
  2.    sudo cpufreq-set -g performance
  3.    # 优化网络设置
  4.    echo 'net.core.rmem_max = 16777216' | sudo tee -a /etc/sysctl.d/99-network.conf
  5.    sudo sysctl -p
复制代码

1. 使用轻量级替代方案:考虑使用轻量级的软件替代方案,减少系统资源消耗。
  1. # 使用轻量级桌面环境
  2.    sudo pacman -S lxde
复制代码

1. 合理分配资源:根据应用需求,合理分配系统资源,避免资源浪费。
  1. # 限制Docker容器资源使用
  2.    docker run --cpus=1.5 --memory=1g myapp
复制代码

7.4 安全最佳实践

1. 定期更新系统:保持系统和软件包的最新状态,修复已知的安全漏洞。
  1. sudo pacman -Syu
复制代码

1. 使用防火墙:配置并启用防火墙,限制不必要的网络访问。
  1. sudo pacman -S ufw
  2.    sudo ufw enable
  3.    sudo ufw allow ssh
复制代码

1. 禁用不必要的服务:禁用不必要的服务,减少系统的攻击面。
  1. sudo systemctl disable bluetooth.service
  2.    sudo systemctl disable avahi-daemon.service
复制代码

1. 使用强密码和SSH密钥:使用强密码和SSH密钥认证,提高系统安全性。
  1. # 生成SSH密钥
  2.    ssh-keygen -t rsa -b 4096
  3.    # 复制公钥到远程服务器
  4.    ssh-copy-id user@remote-server
复制代码

通过遵循这些最佳实践,你可以确保你的Arch Linux ARM开发环境保持高效、安全和稳定,为你提供一个理想的编程平台。
「七転び八起き(ななころびやおき)」
回复

使用道具 举报

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

本版积分规则