基于 ArchLinuxStudio/ArchLinuxTutorial、nakanomikuorg/arch-guide 及 Arch Wiki CN 综合整理
本文档旨在提供从零开始安装、配置和使用 Arch Linux 的完整指南,涵盖新手入门到进阶使用全流程。
在安装 Arch Linux 的过程中,需要使用到 vim 编辑器,基本操作如下:
vim 1.txt # 创建并编辑名为 1.txt 的文件
进入 vim 后,处于命令模式,输入 a 进入编辑模式,编辑完成后按 Esc 回到命令模式。
:wq # 保存退出
:q! # 不保存强制退出
dd # 删除一行
2dd # 删除两行
gg # 回到文本第一行
shift+g # 转到文本最后一行
/xxx # 在文中搜索内容 'xxx',按 n 转到下一个
?xxx # 反向搜索
需要完整教程请在终端执行 vimtutor。
安装 Arch Linux 前,请确认:
从 archlinux.org/download 下载最新 ISO,推荐使用磁力链接下载。
国内镜像站:
下载后务必验证文件完整性,防止下载损坏或被篡改:
方法一:PGP 签名验证(推荐)
# 下载 ISO 和对应的签名文件(.sig)
# 从 archlinux.org/download 的 Checksums 部分获取
# 导入 Arch Linux 开发者 PGP 公钥
gpg --keyserver keyserver.ubuntu.com --recv-keys 开发者密钥ID
# 验证签名
gpg --verify archlinux-YYYY.MM.DD-x86_64.iso.sig archlinux-YYYY.MM.DD-x86_64.iso
# 输出显示 "Good signature" 表示验证通过
方法二:SHA-256 校验(无 GPG 时备用)
# 下载对应的 SHA256 文件
# 计算本地文件的哈希值
sha256sum archlinux-YYYY.MM.DD-x86_64.iso
# 与官网提供的 SHA-256 值逐字符对比
PGP 验证比 SHA-256 更安全——SHA-256 仅防传输损坏,PGP 还能防镜像站被篡改后提供伪造的校验值。
准备一个 2G 以上的 U 盘。
Linux 下使用 dd 命令:
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync
推荐使用 Ventoy(跨平台): Ventoy 无需反复格式化 U 盘,拷贝 ISO 即可启动。支持多系统镜像。
# Arch Linux 安装
sudo pacman -S ventoy-bin
sudo ventoy -i -g /dev/sdx # 安装 Ventoy 到 U 盘
# 然后将 ISO 文件拷贝到 U 盘即可
Windows 下推荐: Ventoy、Rufus、balenaEtcher
Secure Boot 说明:
- 关闭 Secure Boot 是最稳妥的做法,绝大多数用户无需开启
- 如需保持开启,可以使用
sbctl(推荐)或shim方案在安装完成后配置- 某些双显卡笔记本必须在 BIOS 中关闭 Secure Boot 才能正常加载 NVIDIA 驱动
reflector 会自动选择镜像源,但结果可能不准确:
systemctl stop reflector.service
2025 年后的镜像已默认禁用 reflector,无需手动操作。
检查是否为 UEFI 模式:
ls /sys/firmware/efi/efivars
若输出一堆 efi 变量,则说明已在 UEFI 模式。若提示目录不存在,则可能为 Legacy BIOS 模式。
确认 UEFI 位宽(64 位 vs 32 位):
cat /sys/firmware/efi/fw_platform_size
64 → 64 位 UEFI(绝大多数现代设备)32 → 32 位 UEFI(罕见,多见于老旧平板如 Dell Venue 8 Pro,需使用 archboot 或特殊 ISO)2025 年后的 Arch ISO 已逐步淘汰对 32 位 UEFI 的支持,旧设备请参考 Arch Wiki 的 Unified Extensible Firmware Interface 页面。
无线网络(iwctl):
iwctl
device list # 列出设备名
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出网络
station wlan0 connect YOUR-WIFI-NAME # 连接
exit
有线网络: 插入网线即可(DHCP)。
故障排查:
ip link # 列出网络接口
ip link set wlan0 up # 激活网卡
rfkill unblock wifi # 解锁无线网卡
ping www.gnu.org
timedatectl set-ntp true
timedatectl status
分区表选择:
BIOS boot 分区)推荐分区方案(UEFI+GPT):
| 挂载点 | 大小 | 类型 | 说明 |
|---|---|---|---|
/efi(或 /boot) |
1G | EFI System | ESP(EFI System Partition),建议 ≥ 512 MiB |
/ |
100G+ | Linux filesystem | 根分区 |
/home |
剩余全部 | Linux filesystem | 用户数据 |
swap |
内存×60% | Linux swap | 可选(详见 Swap 替代方案) |
EFI 分区大小:Arch Wiki 推荐 至少 300 MiB,双系统或多内核建议 1 GiB。过小会导致内核更新时空间不足。
方法一:使用 cfdisk(交互式,推荐新手)
lsblk # 查看磁盘布局
cfdisk /dev/sdx # 选择 GPT 标签类型
在 cfdisk 图形界面中:
New → 输入大小 → 选择类型为 EFI System(EFI 分区)New → 输入大小 → Linux filesystem(根分区)New → 剩余全部 → Linux filesystem(home 分区)Write → 输入 yes 确认 → Quit方法二:使用 parted(命令行)
parted /dev/sdx
(parted) mktable gpt # 创建 GPT 分区表
(parted) mkpart ESP fat32 1MiB 1025MiB # EFI 分区
(parted) set 1 esp on # 设为 EFI 启动分区
(parted) mkpart root ext4 1025MiB 100G # 根分区
(parted) mkpart home ext4 100G 100% # home 分区
(parted) quit
验证分区对齐(确保 4K 扇区硬盘性能):
fdisk -l /dev/sdx # 检查 Start 列值是否能被 4096 整除
双系统特别说明:若与 Windows 共存,请勿格式化原有的 EFI 分区。Arch 会共用该分区中的文件夹。请确保 EFI 分区 ≥ 512 MiB(Windows 默认只有 100 MiB,可能不够用,可考虑在 Windows 中用 DiskGenius 扩容)。
mkfs.ext4 /dev/root_partition # 根分区(ext4)
mkfs.ext4 /dev/home_partition # home 分区(ext4)
mkfs.fat -F32 /dev/efi_partition # EFI 分区(必须 FAT32)
mkswap /dev/swap_partition # swap 分区(可选,启用后 swapon)
EFI 分区必须格式化为 FAT32(使用
mkfs.fat -F32)。如果之前安装过 Windows,原有的 EFI 分区无需重新格式化。
Btrfs 文件系统(推荐新手直接选用):
Btrfs 支持子卷快照、透明压缩、校验和等高级功能,以下为安装时的创建步骤:
mkfs.btrfs -L myArch /dev/root_partition
mount -t btrfs -o compress=zstd /dev/root_partition /mnt
btrfs subvolume create /mnt/@ # 根目录子卷
btrfs subvolume create /mnt/@home # home 子卷
umount /mnt
选择建议:
- 新手/桌面用户 → 推荐 Btrfs:快照回滚方便,分区空间利用率高(共享空闲空间)
- 服务器/高负载场景 → ext4:更成熟稳定,极端故障恢复工具更完善
- 两者日常使用无明显性能差异
传统 ext4 方式:
mount /dev/root_partition /mnt
mkdir -p /mnt/efi /mnt/home
mount /dev/efi_partition /mnt/efi
mount /dev/home_partition /mnt/home
swapon /dev/swap_partition # 启用 swap
Btrfs 方式:
mount -t btrfs -o subvol=/@,compress=zstd /dev/root_partition /mnt
mkdir /mnt/home /mnt/boot
mount -t btrfs -o subvol=/@home,compress=zstd /dev/root_partition /mnt/home
mount /dev/efi_partition /mnt/boot
swapon /dev/swap_partition
Btrfs 建议按以下结构划分子卷,便于快照管理:
| 子卷 | 挂载点 | 说明 |
|---|---|---|
@ |
/ |
根文件系统(需要快照的路径) |
@home |
/home |
用户数据 |
@cache |
/var/cache |
包缓存(排除在快照外节省空间) |
@log |
/var/log |
日志(排除在快照外) |
@tmp |
/tmp |
临时文件 |
完整创建示例:
# 创建子卷
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@cache
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@tmp
umount /mnt
# 挂载子卷(带优化参数)
mount -t btrfs -o subvol=/@,compress=zstd:3,noatime,ssd,space_cache=v2 /dev/root_partition /mnt
mkdir -p /mnt/{home,boot,.snapshots}
mount -t btrfs -o subvol=/@home,compress=zstd:3,noatime,ssd /dev/root_partition /mnt/home
mount -t btrfs -o subvol=/@cache,compress=zstd:3,noatime,ssd /dev/root_partition /mnt/var/cache
mount -t btrfs -o subvol=/@log,compress=zstd:1,noatime,ssd /dev/root_partition /mnt/var/log
mount -t btrfs -o subvol=/@tmp,noatime,ssd,nodev,nosuid,noexec /dev/root_partition /mnt/tmp
mount /dev/efi_partition /mnt/boot
参数说明:
noatime(禁用访问时间更新)、ssd(SSD 优化)、compress=zstd:3(zstd 压缩级别 3)、space_cache=v2(改进的空间缓存)
vim /etc/pacman.d/mirrorlist
将国内镜像源放在最前面:
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
安全提示:镜像源会记录你的 IP 和软件包列表。如需隐私保护,建议使用非威权国家的镜像源。
基础系统包(必须):
pacstrap -K /mnt base base-devel linux linux-firmware linux-headers
base:最小基础系统base-devel:编译工具链(gcc, make 等,AUR 需要)linux:内核(可换成 linux-lts 长期支持版)linux-firmware:硬件固件linux-headers:内核头文件(DKMS 模块需要)核心工具包(推荐):
pacstrap /mnt vim sudo bash-completion networkmanager
dhcpcd 和 iwd,改用 NetworkManager(桌面环境更方便)iwd 可后续按需安装Btrfs 用户额外安装:
pacstrap /mnt btrfs-progs
可选内核替代方案:
| 内核 | 适用场景 |
|------|----------|
| linux | 通用,功能最全 |
| linux-lts | 稳定优先,兼容性好,推荐服务器 |
| linux-zen | 桌面优化,响应性更好 |
| linux-hardened | 安全加固,有额外性能开销 |
多内核可同时安装,GRUB 启动时选择。建议至少安装
linux+linux-lts作为备用。
genfstab -U /mnt >> /mnt/etc/fstab
cat /mnt/etc/fstab # 复查
arch-chroot /mnt
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
vim /etc/locale.gen
# 去掉 en_US.UTF-8 和 zh_CN.UTF-8 行的注释
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
不要在系统级别设置中文 locale,会导致 tty 乱码。中文在桌面环境的登录管理器中选择即可。
echo 'myarch' > /etc/hostname # 替换为你的主机名
vim /etc/hosts
添加内容:
127.0.0.1 localhost
::1 localhost
127.0.1.1 myarch
passwd root
pacman -S intel-ucode # Intel CPU
pacman -S amd-ucode # AMD CPU
GRUB 功能最全面,支持 UEFI + Legacy BIOS、双系统检测、主题美化:
pacman -S grub efibootmgr os-prober # os-prober 用于检测双系统
安装到 EFI:
# 先确认 EFI 分区挂载位置
lsblk /dev/efi_partition # 确认分区
# ext4 用户(EFI 挂载在 /efi):
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
# Btrfs 用户(EFI 挂载在 /boot):
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
--efi-directory必须指向 EFI 分区的挂载点,不是/boot/efi这种子目录。
编辑 GRUB 配置 /etc/default/grub:
vim /etc/default/grub
常用配置调整:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 nowatchdog" # 去掉 quiet 可以看到详细启动日志
# loglevel=3(仅警告以上),nowatchdog(禁用看门狗,加速开关机)
# 或 loglevel=5(信息级别),方便排查启动问题
# 双系统用户添加:
GRUB_DISABLE_OS_PROBER=false
生成 GRUB 配置:
grub-mkconfig -o /boot/grub/grub.cfg
如果只用 Arch Linux 单系统,systemd-boot 是更简洁的选择:
# 确认 EFI 分区挂载在 /boot
bootctl install
创建引导条目 /boot/loader/entries/arch.conf:
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img # Intel CPU;AMD 使用 /amd-ucode.img
initrd /initramfs-linux.img
options root=PARTUUID=分区UUID rw
编辑 /boot/loader/loader.conf:
default arch.conf
timeout 4
console-mode max
editor yes
直接将内核作为 EFI 可执行文件启动(需要 UEFI 支持),通过 efibootmgr 注册:
efibootmgr --create --disk /dev/sdX --part 1 --label "Arch Linux" \
--loader /vmlinuz-linux --unicode 'root=PARTUUID=... rw initrd=\initramfs-linux.img'
适合不希望看到引导菜单、开机直达系统的用户。按 F12 等快捷键可进入主板启动菜单选择其他系统。
UKI 将内核、initramfs、微码、内核参数合并为单一 EFI 可执行文件,直接由 UEFI 固件加载。优势:
使用 mkinitcpio 生成 UKI:
编辑 /etc/mkinitcpio.conf,确保包含微码 hook:
HOOKS=(base systemd autodetect microcode modconf kms block filesystems keyboard fsck)
创建 UKI 输出目录并编辑 /etc/mkinitcpio.d/linux.preset:
sudo mkdir -p /efi/EFI/Linux
在 preset 文件末尾添加:
# /etc/mkinitcpio.d/linux.preset
default_uki="/efi/EFI/Linux/arch-linux.efi"
fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi"
生成 UKI:
sudo mkinitcpio -P
注册到 UEFI 启动菜单:
sudo efibootmgr --create --disk /dev/sdX --part 1 --label "Arch Linux UKI" \
--loader /EFI/Linux/arch-linux.efi
使用 systemd-boot 自动发现 UKI:
systemd-boot 会自动扫描 /efi/EFI/Linux/ 中的 UKI 文件,无需额外配置条目。
使用 sbctl 签名 UKI(配合 Secure Boot):
sudo sbctl sign --save /efi/EFI/Linux/arch-linux.efi
注意:使用 UKI 后,内核参数不再通过引导加载程序配置,而是嵌入在
/etc/kernel/cmdline文件中(或通过 preset 中的# UKI_CMDLINE=指定)。修改内核参数后需要重新运行sudo mkinitcpio -P。引导程序选择建议:
- 双系统 + 需要主题美化 → GRUB
- 单系统 + 追求简洁启动速度 → systemd-boot(默认已集成在 systemd 中,无需额外包)
- 单系统 + 追求安全/极简 → UKI(无需引导加载程序,最快启动,支持 Secure Boot)
- 临时测试/多内核切换需求 → GRUB(菜单选择最方便)
initramfs(initial RAM filesystem) 是内核启动早期阶段使用的微型文件系统,包含加载根文件系统所需的驱动和工具。
mkinitcpio 是 Arch Linux 的 initramfs 生成工具,通过钩子(hooks)机制决定哪些功能被包含:
| 关键 Hook | 功能 | 需要启用的情况 |
|---|---|---|
base |
基础工具(默认) | 所有情况 |
udev |
设备检测(默认) | 所有情况 |
autodetect |
仅包含本机所需模块(加速启动) | 所有情况 |
microcode |
加载 CPU 微码(替代 initrd 行单独指定) | 所有情况(推荐,用于 UKI) |
modconf |
加载 modprobe.d 配置 | 所有情况 |
kms |
提前初始化显卡,避免分辨率切换闪烁 | 所有桌面用户 |
block |
块设备驱动 | 所有情况 |
lvm2 |
加载 LVM 卷 | 使用 LVM |
encrypt |
解密 LUKS 根分区 | 全盘加密 |
keyboard |
USB 键盘支持(输入密码用) | LUKS 加密需要 |
resume |
从休眠恢复 | 需要休眠(hibernate)功能 |
filesystems |
挂载根文件系统 | 所有情况 |
fsck |
文件系统检查 | 所有情况 |
systemd |
使用 systemd 作为 init(替代 base+udev) | UKI 用户推荐 |
推荐 HOOKS 配置:
标准桌面用户(无加密):
HOOKS=(base udev autodetect microcode kms modconf block filesystems keyboard fsck)
LUKS 加密用户:
HOOKS=(base udev autodetect microcode modconf block encrypt filesystems keyboard fsck)
UKI + LUKS 加密用户:
HOOKS=(systemd autodetect microcode modconf block sd-encrypt filesystems keyboard fsck)
查看当前配置:
cat /etc/mkinitcpio.conf | grep HOOKS
修改配置后重新生成:
mkinitcpio -P # 重新生成所有内核的 initramfs
mkinitcpio -p linux # 仅重新生成 linux 内核的 initramfs
注意:自定义
HOOKS后忘记运行mkinitcpio -P是导致重启后无法解密/挂载根分区的最常见原因之一。
如果未在 BIOS 中关闭 Secure Boot,可以通过 sbctl 自行签名引导文件。
安装与设置 sbctl:
# 重启进入新系统后
sudo pacman -S sbctl
# 检查 Secure Boot 状态
sbctl status
# Setup Mode: Enabled → 可以配置(BIOS 中 Secure Boot 设为 Setup Mode)
# Secure Boot: Disabled → 需要先在 BIOS 中启用
# 创建签名密钥
sudo sbctl create-keys
# 注册密钥到 UEFI(需要 Setup Mode)
# 重启后在 BIOS 中导入 /usr/share/secureboot/keys/db/db.pem
# 或使用 sbctl 自动注册(部分主板支持):
sudo sbctl enroll-keys --microsoft
# --microsoft 同时导入 Microsoft 证书以兼容 Windows 双系统
签名引导文件:
# 签名所有需要签名的文件
sudo sbctl sign --save /boot/vmlinuz-linux # 内核
sudo sbctl sign --save /boot/*.img # initramfs
sudo sbctl sign --save /efi/EFI/GRUB/grubx64.efi # GRUB(如使用)
sudo sbctl sign --save /efi/EFI/systemd/systemd-bootx64.efi # systemd-boot
sudo sbctl sign --save /efi/EFI/Linux/arch-linux.efi # UKI(如使用)
# 查看已签名文件
sbctl list-files
# 验证 Secure Boot 已生效
sbctl status
# Setup Mode: Disabled ✓
# Secure Boot: Enabled ✓
自动签名钩子(Pacman Hook):
创建 /etc/pacman.d/hooks/999-sbctl.hook:
[Trigger]
Type = Path
Target = usr/lib/modules/*/vmlinuz
Target = usr/lib/initcpio/*
Target = boot/*-ucode.img
Operation = Install
Operation = Upgrade
[Action]
Description = Signing Kernel and initramfs for Secure Boot...
When = PostTransaction
Exec = /usr/bin/sbctl sign-all
注意:NVIDIA 闭源驱动模块需要额外签名(参见 mkinitcpio 的 NVIDIA 章节)。VirtualBox 等 DKMS 模块也需手动签名。
exit # 退出 chroot 环境
umount -R /mnt # 卸载所有挂载
reboot # 重启
重启前拔掉 U 盘。
重启后,用
root账户登录。首次启动可能提示timed out waiting for device——这是正常的,稍等即可。
启动网络服务:
systemctl enable --now NetworkManager
验证网络:
ping archlinux.org
如果安装时没有安装 NetworkManager,可以用
systemctl enable --now dhcpcd替代。后续安装桌面环境时会自动切换。
Chroot 后按以下顺序完成:
| 步骤 | 内容 | 命令 |
|---|---|---|
| 1 | 时区 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
| 2 | Locale | 编辑 locale.gen → locale-gen → 写入 locale.conf |
| 3 | 主机名 | 编辑 hostname 和 hosts |
| 4 | Root 密码 | passwd |
| 5 | 微码 | pacman -S intel-ucode / amd-ucode |
| 6 | 引导程序 | GRUB / systemd-boot |
| 7 | initramfs(可选) | 修改 mkinitcpio.conf 后运行 mkinitcpio -P |
| 8 | 创建普通用户 | useradd -m -G wheel user && passwd user |
| 9 | sudo 权限 | EDITOR=vim visudo → 取消 %wheel 行注释 |
| 10 | 退出并重启 | exit → umount -R /mnt → reboot |
# 查看子卷列表
sudo btrfs subvolume list /
sudo btrfs subvolume list /home
# 创建/删除子卷
sudo btrfs subvolume create /home/@snapshots
sudo btrfs subvolume delete /path/to/subvolume
# 创建只读快照
sudo btrfs subvolume snapshot -r /home /home/@snapshot-$(date +%Y%m%d)
# 定期 Scrub(检查数据一致性,建议每月一次)
sudo btrfs scrub start /
sudo btrfs scrub status /
# 启用定时 scrub
sudo systemctl enable --now btrfs-scrub@-.timer
# 平衡(Balancing,空间回收后执行)
sudo btrfs balance start -dusage=50 /
sudo btrfs balance status /
# 查看压缩率
sudo compsize /
sudo compsize /home
# 启用 Quota(为子卷设置配额)
sudo btrfs quota enable /
sudo btrfs qgroup limit 50G /home # 限制 home 最大 50G
# 转换 ext4 到 Btrfs(不丢数据)
# 从 Live USB 启动后:
# sudo btrfs-convert /dev/sdX
LVM 可在多个磁盘间灵活分配空间、动态调整大小。
安装时设置 LVM:
# 1. 创建物理卷(PV)
pvcreate /dev/sda2 /dev/sdb1 # 可以使用多个磁盘
# 2. 创建卷组(VG)
vgcreate myvg /dev/sda2 /dev/sdb1
# 3. 创建逻辑卷(LV)
lvcreate -L 50G myvg -n root # 根分区 50G
lvcreate -L 200G myvg -n home # home 分区 200G
lvcreate -L 8G myvg -n swap # swap 8G
# 4. 格式化并挂载
mkfs.ext4 /dev/myvg/root
mkfs.ext4 /dev/myvg/home
mkswap /dev/myvg/swap
mount /dev/myvg/root /mnt
mkdir /mnt/home
mount /dev/myvg/home /mnt/home
swapon /dev/myvg/swap
# 5. Chroot 后安装 LVM 钩子
pacman -S lvm2 # 安装 LVM 工具
# 编辑 /etc/mkinitcpio.conf:
# 在 HOOKS 中 block 后添加 lvm2:
# HOOKS=(base udev autodetect modconf block lvm2 filesystems keyboard fsck)
mkinitcpio -P
LVM 日常管理:
# 扩展逻辑卷(在线扩容)
lvextend -L +10G /dev/myvg/root # 增加 10G
resize2fs /dev/myvg/root # ext4 在线扩容
# Btrfs 无须 resize2fs,自动识别
# 缩减逻辑卷
lvreduce -L -5G /dev/myvg/home
resize2fs /dev/myvg/home
# 查看 LVM 状态
pvdisplay
vgdisplay
lvdisplay
# 添加新磁盘到卷组
pvcreate /dev/sdc1
vgextend myvg /dev/sdc1
方案一:LUKS 加密根分区(最常用)
# 分区阶段创建加密分区
# 使用 cfdisk 创建普通 Linux 分区后:
cryptsetup luksFormat /dev/root_partition
cryptsetup open /dev/root_partition cryptroot
# 在解密设备上创建文件系统
mkfs.btrfs /dev/mapper/cryptroot
mount -t btrfs -o compress=zstd /dev/mapper/cryptroot /mnt
# 创建 EFI 分区(不加密)
mkfs.vfat /dev/efi_partition
mkdir /mnt/boot
mount /dev/efi_partition /mnt/boot
Chroot 后配置:
# 编辑 /etc/mkinitcpio.conf
# HOOKS 中添加 encrypt:
# HOOKS=(base udev autodecrypt modconf block encrypt filesystems keyboard fsck)
# 编辑 /etc/default/grub
GRUB_CMDLINE_LINUX="cryptdevice=UUID=磁盘UUID:cryptroot root=/dev/mapper/cryptroot"
# 重建引导
grub-mkconfig -o /boot/grub/grub.cfg
mkinitcpio -P
方案二:LUKS + LVM(加密+灵活分区)
# 创建加密的 LVM 物理卷
cryptsetup luksFormat /dev/sda2
cryptsetup open /dev/sda2 cryptlvm
pvcreate /dev/mapper/cryptlvm
vgcreate myvg /dev/mapper/cryptlvm
lvcreate -L 50G myvg -n root
lvcreate -L 200G myvg -n home
# ... 后续步骤同 LVM 方案
密钥文件自动解锁(二阶段解锁):
# 创建密钥文件
dd if=/dev/urandom of=/etc/cryptkey bs=512 count=8
chmod 600 /etc/cryptkey
cryptsetup luksAddKey /dev/root_partition /etc/cryptkey
# 编辑 /etc/crypttab:
# cryptroot UUID=磁盘UUID /etc/cryptkey luks
建议:内存 ≥ 8GB 时,推荐 Zram(压缩内存)替代 swap 分区。休眠(hibernate)需要 swap 空间 ≥ 内存大小。
对比总结:
| 方案 | 原理 | 适用场景 | 优点 | 缺点 |
|---|---|---|---|---|
| Swap 分区 | 磁盘交换 | 任何情况 | 简单稳定 | 浪费磁盘空间,速度慢 |
| Zram | 内存压缩 | 内存充足 | 速度快,无磁盘 IO | 不能休眠,占用内存 |
| Zswap | 内核压缩缓存 | 任何情况 | 与 swap 文件配合 | 配置稍复杂 |
| Swap 文件 | 文件交换 | ext4/Btrfs | 灵活调整大小 | Btrfs 配置稍复杂 |
Zram(内存压缩,推荐桌面/笔记本):
# 安装 zram-generator(自动创建压缩 swap,无需独立分区)
pacman -S zram-generator
# 配置文件 /etc/systemd/zram-generator.conf(默认即可)
# [zram0]
# zram-size = ram / 2 # 默认为内存的 50%
启用后重启或:
systemctl start systemd-zram-setup@zram0
swapon --show # 验证 zram 已启用
Zram 将一部分内存压缩后作为 swap 使用,压缩率通常 2-3:1。8G 内存设置 4G zram 实际约占用 1.3-2G 物理内存。
Zswap(内核级压缩缓存):
# 通过内核参数启用(配合传统 swap 文件/分区使用)
# 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 中添加:
zswap.enabled=1 zswap.compressor=zstd zswap.max_pool_percent=20
Swap 文件(Btrfs:需额外步骤):
# Btrfs 必须先禁用写时复制(CoW)
truncate -s 0 /swapfile
chattr +C /swapfile # 禁用 CoW
btrfs property set /swapfile compression none
fallocate -l 4G /swapfile # 或 dd if=/dev/zero of=/swapfile bs=1M count=4096
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
# 添加至 /etc/fstab:
# /swapfile none swap defaults 0 0
pacman -Syyu
useradd -m -G wheel -s /bin/bash yourusername
passwd yourusername
EDITOR=vim visudo
# 取消注释:%wheel ALL=(ALL:ALL) ALL
编辑 /etc/pacman.conf:
[multilib] 节的注释添加:
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
更新并安装 keyring:
pacman -Syyu
pacman -S archlinuxcn-keyring yay
Arch Linux 支持多种桌面环境(Desktop Environment, DE),以下为常见 DE 的对比:
| 桌面环境 | 工具包 | 特点 | 资源占用 | 推荐人群 |
|---|---|---|---|---|
| KDE Plasma | Qt | 功能丰富、高度可定制、现代化 | 中等 | 喜欢定制、功能全面的用户 |
| GNOME | GTK | 简洁现代、设计统一、工作流高效 | 较高 | 喜欢简洁、macOS 风格的用户 |
| XFCE | GTK | 轻量、传统布局、稳定 | 较低 | 旧硬件、喜欢传统桌面 |
| Cinnamon | GTK | Win 风格、易用、功能完整 | 中等 | Win 迁移用户 |
| Budgie | GTK | 简洁美观、Solus 项目 | 中等 | 追求美观的用户 |
| Deepin | Qt/GTK | 极美、适合 Linux 新手 | 较高 | 颜值追求者 |
| LXQt | Qt | 极轻量、模块化 | 极低 | 非常旧的硬件 |
| i3 / Hyprland | 无(WM) | 平铺窗口、键盘驱动、极高效率 | 极低 | 键盘流、高级用户 |
建议:新手推荐 KDE Plasma(功能全、社区大、问题易搜)或 GNOME(设计简洁、开箱即用)。旧机器推荐 XFCE。喜欢折腾且追求效率可尝试 Hyprland(Wayland 平铺)。
# 安装 KDE Plasma 完整组
sudo pacman -S plasma-meta konsole dolphin
# 安装 SDDM 显示管理器(KDE 默认)
sudo systemctl enable sddm
# 可选:安装 Plasma 额外组件
sudo pacman -S plasma-nm # 网络管理器小程序
sudo pacman -S plasma-pa # 音频小程序
sudo pacman -S kscreen # 显示设置
sudo pacman -S kdegraphics-thumbnailers # 文件缩略图
sudo pacman -S ffmpegthumbs # 视频缩略图
# 可选:安装 KDE 应用套件
sudo pacman -S kde-applications # 完整 KDE 应用(较大)
# 或按需安装:
sudo pacman -S gwenview # 图片查看器
sudo pacman -S okular # 文档查看器
sudo pacman -S ark # 压缩文件管理
Wayland 支持:KDE Plasma 已默认使用 Wayland 会话。登录时在 SDDM 选择 "Plasma (Wayland)"。如需强制启用:
sudo pacman -S plasma-wayland-session
GNOME(简洁现代风格):
sudo pacman -S gnome gnome-tweaks
sudo systemctl enable gdm
# 登录管理器选择 GDM,会话选 "GNOME"
# 注意:GNOME 默认使用 Xorg,可在 GDM 登录界面选择 "GNOME on Wayland"
XFCE(轻量传统风格):
sudo pacman -S xfce4 xfce4-goodies lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm
Cinnamon(Windows 风格):
sudo pacman -S cinnamon lightdm lightdm-gtk-greeter
sudo systemctl enable lightdm
i3 WM(平铺窗口管理器):
sudo pacman -S i3-wm i3status i3lock dmenu
# 搭配显示管理器或使用 ~/.xinitrc
Hyprland(现代化 Wayland 平铺合成器):
sudo pacman -S hyprland waybar wofi dunst
# 参见 Hyprland Wiki 配置
sudo systemctl disable iwd
sudo systemctl stop iwd
sudo systemctl enable --now NetworkManager
# 声音固件
sudo pacman -S sof-firmware alsa-firmware alsa-ucm-conf
# NTFS 支持
sudo pacman -S ntfs-3g
# 中文字体
sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra
# 浏览器
sudo pacman -S firefox chromium
# 压缩工具
sudo pacman -S ark p7zip unrar unarchiver lzop lrzip
# 软件中心
sudo pacman -S packagekit-qt6 packagekit appstream-qt appstream
# 图片查看器
sudo pacman -S gwenview
# 工具
sudo pacman -S git wget kate
sudo vim /etc/resolv.conf
添加:
nameserver 8.8.8.8
nameserver 2001:4860:4860::8888
防止被覆盖:
sudo chattr +i /etc/resolv.conf
系统设置 → 区域设置 → 语言,添加中文,注销重登即可。
Arch Linux 下推荐使用 Fcitx5 输入法框架(尤其是 KDE Plasma 用户),GTK 环境(GNOME)也可使用 IBus。
安装 Fcitx5:
sudo pacman -S fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-material-color
安装 IBus(GNOME 用户可选):
sudo pacman -S ibus ibus-libpinyin
设置环境变量(新建 ~/.config/environment.d/im.conf):
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx
GLFW_IM_MODULE=ibus
Fcitx5 配置:
fcitx5-configtool 图形化配置fcitx5-pinyin-zhwiki 后,在输入法配置中启用云拼音Fcitx5 主题:
yay -S fcitx5-skin-material fcitx5-skin-nord常见快捷键: | 操作 | 默认快捷键 | |------|-----------| | 切换输入法 | Ctrl + Space | | 中英文切换 | Shift(可配置)| | 翻页 | - / + 或 [ / ] | | 切换简体/繁体 | Ctrl + Shift + F |
sudo pacman -S bluez bluez-utils bluez-obex
sudo systemctl enable --now bluetooth
# 安装 CUPS 打印服务
sudo pacman -S cups cups-pdf
# 安装打印机驱动(根据打印机型号选择)
sudo pacman -S hplip # HP 打印机
sudo pacman -S gutenprint # 通用打印机驱动
sudo pacman -S epson-inkjet-printer-escpr # Epson
# 启用 CUPS 服务
sudo systemctl enable --now cups
# 访问 Web 管理界面
# http://localhost:631
# 或使用系统设置 → 打印机 添加打印机
如果打印机无法自动识别,可安装
sudo pacman -S cups-filters。
显示管理器(Display Manager)提供图形化登录界面。
| 显示管理器 | 推荐 DE | 特点 |
|---|---|---|
| SDDM | KDE Plasma(默认) | Qt 界面,可定制主题 |
| GDM | GNOME(默认) | GTK 界面,简洁 |
| LightDM | XFCE / Cinnamon | 轻量,多 Greeter |
如需切换显示管理器:
sudo systemctl disable sddm
sudo systemctl enable gdm # 切换到 GDM
注意:同一时间只能启用一个显示管理器。切换前先 disable 当前的。
sudo pacman -S timeshift
sudo systemctl enable --now cronie.service
打开 Timeshift,按向导配置即可。推荐使用 Btrfs 模式(更快、更省空间)。
KMS 让内核在启动早期就初始化显卡,可避免启动过程中的分辨率切换闪烁,并加速 Plymouth 开机动画。
在 /etc/mkinitcpio.conf 的 HOOKS 中,将 kms 放在 autodetect 之后:
HOOKS=(base udev autodetect microcode kms modconf block filesystems keyboard fsck)
或通过 /etc/modprobe.d/ 加载对应驱动模块:
| 显卡 | 模块 | 配置 |
|---|---|---|
| Intel | i915 |
options i915 enable_guc=3(GuC 固件加速) |
| AMD | amdgpu |
默认即可 |
| NVIDIA | nvidia_drm |
options nvidia_drm modeset=1 fbdev=1 |
NVIDIA 用户特别注意:
# /etc/modprobe.d/nvidia.conf
options nvidia_drm modeset=1 fbdev=1
# 内核参数(/etc/default/grub):
# GRUB_CMDLINE_LINUX_DEFAULT="... nvidia_drm.modeset=1"
# 在 /etc/mkinitcpio.conf 的 MODULES 中添加:
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
添加模块后重新生成 initramfs:
sudo mkinitcpio -P
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel
Intel HD 4000 及以上才支持 Vulkan。不建议安装
xf86-video-intel。
先查架构(techpowerup.com),GCN3+ 架构使用 AMDGPU 驱动:
sudo pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon
老显卡(GCN2.0 及以下)使用 ATI 开源驱动。
较新型号:
sudo pacman -S nvidia nvidia-settings lib32-nvidia-utils
老卡(GeForce 630-920):
yay -S nvidia-470xx-dkms nvidia-settings lib32-nvidia-470xx-utils linux-headers
更老(GeForce 400-630):
yay -S nvidia-390xx-dkms nvidia-settings lib32-nvidia-390xx-utils linux-headers
yay -S optimus-manager optimus-manager-qt
sudo systemctl enable optimus-manager
提供三种模式:仅独显、仅核显、hybrid 动态切换。
# 使用独显运行特定程序
sudo pacman -S nvidia-prime
prime-run some_program
安装与 AMD 核显相同。使用 DRI_PRIME=1 切换独显:
DRI_PRIME=1 glmark2 # 测试独显性能
DRI_PRIME=1 steam steam://rungameid/570 # 用独显运行 Dota 2
Wayland 是新一代显示协议,逐步替代 X11。KDE Plasma 已默认使用 Wayland。
Wayland 的优势:
NVIDIA 显卡在 Wayland 下:
nvidia-dkms 驱动(非 dkms 版本也可)nvidia-utils ≥ 545 版本以获得较好的 Wayland 支持设置环境变量以解决 Electron 应用问题:
# ~/.config/environment.d/wayland.conf
KWIN_DRM_NO_AMS=1 # 禁用 KDE 的原子模式设置(NVIDIA 兼容)
ELECTRON_OZONE_PLATFORM_HINT=wayland # Electron 应用使用 Wayland
在登录管理器(SDDM)选择 "Plasma (Wayland)" 会话
Wayland 中可能失效的功能:
flameshot 并配置)pipewire 和 xdg-desktop-portal)Wayland 工具:
# 查看当前显示协议
echo $XDG_SESSION_TYPE
# 截屏
sudo pacman -S grim slurp
grim -g "$(slurp)" screenshot.png # 区域截图
# 屏幕录制
sudo pacman -S wf-recorder
wf-recorder -f record.mp4 # 录屏
Arch Linux 音频系统主要有三个层次:
推荐使用 PipeWire,因其低延迟、支持专业音频(JACK 兼容)、屏幕录制整合更好。
# 安装 PipeWire 核心组件
sudo pacman -S pipewire pipewire-alsa pipewire-pulse pipewire-jack
# 安装会话管理(必需)
sudo pacman -S wireplumber
# 安装图形化音量控制
sudo pacman -S pavucontrol qt6-pipewire
# 如果之前使用了 PulseAudio,先停用
systemctl --user disable --now pulseaudio.service pulseaudio.socket
# 启用 WirePlumber(PipeWire 会话管理器)
systemctl --user enable --now wireplumber
# 重启或重新登录后生效
PipeWire 默认会自动启动,无需手动 enable pipewire.service。 验证是否正常运行:
> pactl info | grep "Server Name" # 应显示 "PipeWire" > pw-cli info | grep "version" # 显示 PipeWire 版本 > ``` ### 4. 音量控制bash
CLI 控制(推荐,适合脚本)
pactl set-sink-volume @DEFAULT_SINK@ -10% # 减少 10% pactl set-sink-volume @DEFAULT_SINK@ +10% # 增加 10% pactl set-sink-mute @DEFAULT_SINK@ toggle # 静音切换 pactl list sinks short # 列出输出设备
pactl set-default-sink alsa_output.pci-0000_00_1f.3.analog-stereo
pavucontrol # PulseAudio 音量控制(兼容 PipeWire)
### 5. 蓝牙音频(LDAC/aptX)
bash
sudo pacman -S bluez bluez-utils bluez-obex
sudo systemctl enable --now bluetooth
sudo pacman -S pipewire-aptx # aptX/AAC 支持 yay -S pipewire-codec-aptx # AUR 版(如有必要)
配置 WirePlumber 蓝牙音频质量(`/etc/wireplumber/bluetooth.lua.d/51-bluez-config.lua` 或 `~/.config/wireplumber/bluetooth.lua.d/51-bluez-config.lua`):
lua bluez_monitor.properties = { -- 选择蓝牙音频编解码器 ["bluez5.codecs"] = "[ldac, aptx, aac, sbc]",
-- LDAC 质量(0=自适应(最佳), 1=330k, 2=660k, 3=990k) ["bluez5.ldac.quality"] = 1, }
重启 WirePlumber:
bash systemctl --user restart wireplumber
### 6. 专业音频(JACK 支持)
PipeWire 原生兼容 JACK 应用:
bash
sudo pacman -S jack2 jack2-dbus
pw-jack your_audio_app
sudo pacman -S qpwgraph # PipeWire 版的路由矩阵
### 7. 音频故障排除
bash
pw-cli list-objects | grep -i node
pactl list cards
journalctl --user -xu pipewire journalctl --user -xu wireplumber
cat /proc/asound/cards aplay -l
speaker-test -t wav -c 2
options snd slots=snd_hda_intel,snd_usb_audio
### 8. 高质量音频配置(可选)
bash
sudo vim /etc/modprobe.d/alsa-base.conf options snd-hda-intel model=auto enable=yes
sudo pacman -S pulseeffects # PulseEffects(完整版) yay -S easyeffects # 新版均衡器(推荐)
---
## 六、魔法上网
> 本节涉及突破网络审查的内容,在需要访问被封锁的互联网资源时使用。**请遵守当地法律法规。**
### 节点准备
节点链接形如:
ss://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx vmess://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
可通过自建服务器或购买机场服务获取。
### 安装 v2ray 和 v2rayA
bash
sudo pacman -S v2ray
yay -S v2raya-bin sudo systemctl enable --now v2raya
打开浏览器访问 `http://localhost:2017` 即可使用 Web 界面管理。
### 代理初步设置
**终端代理:**
bash export https_proxy=http://127.0.0.1:8889 export http_proxy=http://127.0.0.1:8889 export all_proxy=http://127.0.0.1:8889
**proxychains-ng:**
bash sudo pacman -S proxychains-ng sudo vim /etc/proxychains.conf
proxychains4 command # 对单个命令使用代理
### 为什么不建议分流代理?
分流代理(国内直连、国外代理)容易泄露隐私。例如:
- 国外网站嵌入百度统计,可关联真实 IP 与代理 IP
- 恶意邮件嵌入国内资源图片,可获取真实 IP
建议使用全局代理(见下一章)。
---
## 七、透明代理(全局代理)
透明代理使**系统所有流量**都通过代理,应用感知不到代理存在。
### 使用 v2rayA 全局代理
v2rayA 的设置页面可直接开启全局代理,最简单的方式,推荐新手使用。
### 使用 Qv2ray + cgproxy
bash
yay -S cgproxy
**配置步骤:**
1. 在 Qv2ray 首选项 → 入站设置 → 启用任意门
- 监听地址:`127.0.0.1`
- 嗅探:Full
- Destination Override:三项均勾选
- 模式:tproxy
2. 配置 `/etc/cgproxy/config.json`:
- `cgroup_proxy` 中添加 `"/"`
- `port` 改为 Qv2ray 透明代理端口
- `program_noproxy` 中添加 `"v2ray"`, `"qv2ray"`
3. 给 v2ray 添加特权(UDP 需要):
bash sudo setcap "cap_net_admin,cap_net_bind_service=ep" /usr/bin/v2ray
4. 启动服务:
bash sudo systemctl enable --now cgproxy.service
---
## 八、Linux 日常操作与基础知识
### 文件系统基础
- **Linux 无盘符概念**,最上层为根目录 `/`(不像 Windows 有 C:/, D:/)
- **绝对路径**:`/home/user/Download`
- **相对路径**:`./Download`(当前目录)、`../Desktop`(上级目录)
- **`~`** 表示当前用户的家目录(`/home/用户名`)
**Linux 文件系统层次标准(FHS)简介:**
| 目录 | 用途 |
|------|------|
| `/bin` → `/usr/bin` | 基本命令(软链接) |
| `/etc` | 系统配置文件 |
| `/home` | 用户家目录 |
| `/usr` | 用户程序和数据 |
| `/var` | 可变数据(日志、缓存、数据库) |
| `/tmp` | 临时文件(重启清空) |
| `/boot` | 内核和引导文件 |
| `/opt` | 可选第三方软件 |
| `/mnt` | 临时挂载点 |
| `/proc` | 进程和内核虚拟文件系统 |
| `/dev` | 设备文件 |
### 文件权限与属性
**查看权限:**
bash ls -l file.txt
权限由 10 个字符组成:
- 第 1 位:文件类型(`-`普通文件,`d`目录,`l`软链接,`b`块设备,`c`字符设备)
- 第 2-4 位:所有者权限(owner)
- 第 5-7 位:组权限(group)
- 第 8-10 位:其他人权限(other)
r = 4 (读) w = 2 (写) x = 1 (执行) -rw-r--r-- → 644 = owner 读写, group/other 只读 -rwxr-xr-x → 755 = owner 读写执行, group/other 读执行
**修改权限(chmod):**
bash chmod 755 script.sh # 数字法 chmod u+x script.sh # 字符法:给所有者增加执行 chmod g-w file.txt # 去掉组的写权限 chmod o+r file.txt # 给其他人加读权限 chmod -R 755 directory/ # 递归修改目录
**修改所有者(chown):**
bash sudo chown user:group file.txt # 修改所有者和组 sudo chown user file.txt # 仅修改所有者 sudo chown :group file.txt # 仅修改组 sudo chown -R user:group directory/ # 递归修改
**特殊权限:**
bash chmod u+s file # SUID(以所有者身份执行,如 /usr/bin/passwd) chmod g+s dir # SGID(子文件继承组) chmod +t dir # Sticky Bit(只有自己可删自己的文件,如 /tmp)
**默认权限与 umask:**
bash umask # 查看当前 umask(常见:022) umask 077 # 设置更严格的默认权限
### 进程管理
bash
ps aux # 所有进程(BSD 风格) ps -ef # 所有进程(标准风格) ps aux --sort=-%mem # 按内存占用排序 ps aux | grep firefox # 查找指定进程
top # 实时进程监视(按 q 退出) htop # 增强版(需安装:sudo pacman -S htop)
kill PID # 正常终止(SIGTERM = 15) kill -9 PID # 强制杀死(SIGKILL = 9,慎用) kill -15 PID # 优雅终止(SIGTERM) killall firefox # 杀死所有同名进程 pkill pattern # 按模式杀进程
command & # 后台运行 nohup command & # 后台运行(退出终端不终止) Ctrl + Z # 挂起当前程序 bg # 后台继续运行 fg # 前台运行 jobs # 查看后台任务
nice -n 10 command # 以较低优先级运行 renice -n 5 -p PID # 调整已运行进程的优先级
### 用户和组管理
bash
useradd -m -G wheel -s /bin/bash newuser # 创建用户(-m 创建家目录,-G 附加组) passwd newuser # 设置密码 usermod -aG docker newuser # 将用户添加到 docker 组 userdel -r newuser # 删除用户(及家目录)
whoami # 当前用户名 id # 用户 ID 和组 ID who # 已登录用户 w # 登录用户及活动
groups # 查看当前用户所属组 groupadd newgroup # 创建组 groupdel newgroup # 删除组 gpasswd -a user group # 将用户添加到组 gpasswd -d user group # 将用户移出组
su - username # 切换用户(- 加载环境变量) sudo -i # 切换到 root sudo -u user command # 以指定用户身份执行命令
### Shell 基础(Bash/Zsh)
Arch Linux 默认为 Bash。推荐安装 Zsh 获得更好的体验:
bash sudo pacman -S zsh zsh-completions zsh-syntax-highlighting chsh -s /usr/bin/zsh # 切换默认 shell(注销重登生效)
**配置文件:**
- **Bash**:`~/.bashrc`(交互式 shell 配置),`~/.bash_profile`(登录 shell)
- **Zsh**:`~/.zshrc`
**常用别名配置(添加到 ~/.bashrc 或 ~/.zshrc):**
bash alias ll='ls -lah' alias la='ls -A' alias l='ls -CF' alias ..='cd ..' alias ...='cd ../..' alias cls='clear' alias grep='grep --color=auto' alias rm='rm -I' # 删除前确认
**PATH 环境变量:**
bash export PATH="$HOME/.local/bin:$PATH" # 添加到 ~/.bashrc echo $PATH # 查看当前 PATH which commandname # 查看命令所在路径
**环境变量:**
bash echo $HOME # 家目录 echo $USER # 当前用户名 echo $SHELL # 当前 shell echo $LANG # 系统语言 env # 列出所有环境变量 export VAR=value # 设置环境变量
> 对配置文件修改后,执行 `source ~/.bashrc` 或重开终端即可生效。
### 软链接与硬链接
bash
ln -s /path/to/target link_name # 创建软链接
ln target link_name # 创建硬链接
ls -li file # -i 显示 inode 编号 stat file # 更详细的文件信息
> **实际应用**:软链接常用于管理配置文件版本、管理 dotfiles、创建快捷方式。例如 `~/.config/nvim` → `~/dotfiles/nvim`。
### 文本处理基础
bash
grep "pattern" file.txt # 查找匹配行 grep -i "pattern" file.txt # 忽略大小写 grep -r "pattern" /path/to/dir/ # 递归搜索目录 grep -n "pattern" file.txt # 显示行号 grep -v "pattern" file.txt # 反向匹配(不含 pattern 的行) grep -c "pattern" file.txt # 统计匹配行数 grep "pattern" file1 file2 # 搜索多个文件 command | grep "pattern" # 管道过滤
sed 's/old/new/' file.txt # 替换每行第一个匹配 sed 's/old/new/g' file.txt # 替换全部匹配 sed 's/old/new/2' file.txt # 替换每行第二个匹配 sed -i 's/old/new/g' file.txt # 直接修改文件(原地编辑) sed -i.bak 's/old/new/g' file.txt # 原地编辑并备份原文件 sed '/pattern/d' file.txt # 删除匹配行
awk '{print $1}' file.txt # 打印第一列 awk -F: '{print $1, $3}' /etc/passwd # 以:分割,打印第1、3列 awk '/error/ {print NR, $0}' log.txt # 查找含 error 的行并显示行号
sort file.txt # 排序 uniq # 去重(需先排序) wc -l file.txt # 统计行数 head -n 20 file.txt # 查看前 20 行 tail -n 20 file.txt # 查看后 20 行 tail -f file.txt # 实时跟踪文件追加内容 tee output.txt # 同时输出到屏幕和文件 diff file1 file2 # 比较文件差异
### 文件系统挂载与管理
bash
lsblk # 列出块设备(简略) lsblk -f # 列出块设备(含文件系统) sudo fdisk -l # 查看磁盘分区表 blkid # 查看分区 UUID 和类型
sudo mount /dev/sdX1 /mnt # 挂载分区到 /mnt sudo mount -o "uid=1000,gid=1000" /dev/sdX1 /mnt # 指定所有者 sudo umount /mnt # 卸载 sudo umount -l /mnt # 强制卸载(延迟)
mount | grep /dev findmnt # 树形显示挂载点
### 常用终端命令(基础)
bash ls /path # 查看目录内容 pwd # 当前路径 cd /path # 切换目录 cp source dest # 复制 cp -r source dest # 复制目录 rm file # 删除 mv old new # 移动/重命名 mkdir dir # 创建目录 cat file # 查看文件内容 sudo command # 以 root 执行
### Pacman 包管理
bash sudo pacman -S pkg # 安装 sudo pacman -Syu # 更新系统 sudo pacman -R pkg # 删除 sudo pacman -Rs pkg # 删除及其依赖 sudo pacman -Rns pkg # 删除、依赖及配置 sudo pacman -Sc # 清理缓存 sudo pacman -Ss keyword # 搜索 pacman -F command # 查询命令属于哪个包
### systemd-networkd 与 systemd-resolved
如果不需要 NetworkManager 的 GUI 网络管理,systemd-networkd 提供轻量级替代方案:
**systemd-networkd 基础配置:**
有线网络 `/etc/systemd/network/20-wired.network`:
ini [Match] Name=en*
[Network] DHCP=yes
无线网络 `/etc/systemd/network/25-wireless.network`:
ini [Match] Name=wl*
[Network] DHCP=yes
**配合 iwd 管理 WiFi:**
bash sudo pacman -S iwd
[General] EnableNetworkConfiguration=true
sudo systemctl enable --now iwd systemd-networkd systemd-resolved
**启用 systemd-networkd:**
bash
sudo systemctl disable --now NetworkManager sudo systemctl enable --now systemd-networkd systemd-resolved
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
networkctl status networkctl list
**systemd-resolved DNS over TLS:**
bash
[Resolve] DNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net DNSOverTLS=yes DNSSEC=yes Cache=yes
sudo systemctl restart systemd-resolved resolvectl status # 验证 DoT
### systemd 服务与系统管理
**服务管理:**
bash systemctl start name # 启动 systemctl stop name # 停止 systemctl enable name # 开机启动 systemctl disable name # 取消开机启动 systemctl status name # 查看状态 systemctl enable --now name # 开机启动并立即启动 systemctl restart name # 重启 systemctl reload name # 重载配置(不中断服务) systemctl mask name # 完全禁用(无法手动启动) systemctl unmask name # 恢复
**查看服务状态:**
bash systemctl list-units --type=service # 列出所有服务 systemctl list-units --failed # 列出失败的服务 systemctl list-dependencies name # 查看依赖树 systemctl show name # 查看完整属性
**systemd 定时器(替代 cron):**
bash
[Unit] Description=My weekly task
[Timer] OnCalendar=weekly Persistent=true
[Install] WantedBy=timers.target
[Unit] Description=My weekly task script
[Service] Type=oneshot ExecStart=/usr/local/bin/mytask.sh
sudo systemctl enable --now mytask.timer
systemctl list-timers --all
**日志管理(journalctl):**
bash journalctl -b # 本次启动日志 journalctl -b -1 # 上次启动日志 journalctl -u service # 指定服务日志 journalctl -k # 内核日志 journalctl -p 3 -b # 错误级别(0-7),本次启动 journalctl -f # 实时跟踪 journalctl --since "1 hour ago" # 最近1小时 journalctl --until "2024-01-01" # 截止日期
**系统分析:**
bash
systemd-analyze # 总启动时间 systemd-analyze blame # 各服务启动耗时(降序) systemd-analyze critical-chain # 关键启动链 systemd-analyze plot > boot.svg # 生成启动图
systemd-analyze verify /etc/systemd/system/myservice.service
systemctl --version
**Target(运行级别):**
bash
systemctl get-default
sudo systemctl set-default multi-user.target # CLI 模式 sudo systemctl set-default graphical.target # 图形模式
sudo systemctl isolate multi-user.target sudo systemctl isolate graphical.target
**自定义服务单元:**
ini
[Unit] Description=My Application After=network.target Wants=network-online.target
[Service] Type=simple User=myuser WorkingDirectory=/opt/myapp ExecStart=/usr/bin/myapp --config /etc/myapp/config.conf Restart=on-failure RestartSec=5 LimitNOFILE=65536
[Install] WantedBy=multi-user.target
启用自定义服务:
bash sudo systemctl daemon-reload # 重载所有单元文件 sudo systemctl enable --now myapp.service sudo journalctl -u myapp -f # 查看日志
### sudoedit 编辑配置文件
最佳实践——使用普通用户权限编辑系统文件:
bash EDITOR=vim sudoedit /path/to/config
### Pacman 进阶用法
bash
pacman -Qi package_name
pacman -Ql package_name
pacman -Qo /path/to/file
pacman -Qe
pacman -Qdt
pacman -Qs keyword
pactree package_name
sudo pacman -Dk
### AUR 使用指南
Yay 常用命令:
bash yay -S package # 安装(AUR 和官方源都可) yay -Syu # 升级所有包 yay -Ss keyword # 搜索(含 AUR) yay -Qi package # 查看信息 yay -Rns package # 彻底卸载 yay -Yc # 清理不需要的依赖
AUR 安全建议:
- 安装前查看 PKGBUILD 文件:`yay -G package && cat package/PKGBUILD`
- 关注 AUR 包的评价和投票数
- 优先选择 `-bin` 版本(预编译)以节省构建时间
- 对于频繁更新的 AUR 包可考虑 `paru`(Rust 版替代)
**Paru(yay 替代品):**
bash
sudo pacman -S --needed base-devel git git clone https://aur.archlinux.org/paru.git cd paru && makepkg -si
paru -S package # 安装 paru -Syu # 更新 paru -Ss keyword # 搜索 paru -Rns package # 卸载 paru -c # 清理孤立依赖
### systemd 用户服务
用户级 systemd 服务(无需 root)适合管理桌面应用的后台进程:
bash
~/.config/systemd/user/ # 自定义用户服务 /usr/lib/systemd/user/ # 包安装的用户服务
systemctl --user start service_name systemctl --user enable service_name systemctl --user enable --now service_name systemctl --user status service_name systemctl --user list-unit-files
[Unit] Description=My Background App After=graphical-session.target
[Service] Type=simple ExecStart=/usr/bin/myapp --daemon Restart=on-failure
[Install] WantedBy=default.target
systemctl --user daemon-reload systemctl --user enable --now myapp.service
**常用桌面用户服务:**
bash
systemctl --user enable --now wireplumber
systemctl --user enable --now syncthing
systemctl --user enable --now docker
systemctl --user enable --now emacs
### Pacman Hooks(自动触发操作)
Pacman 支持在安装/升级/删除包前后自动执行操作。自定义 hooks 位于 `/etc/pacman.d/hooks/`。
**常用 pacman hooks 示例:**
**1. 自动清理包缓存:**
ini
[Trigger] Operation = Upgrade Operation = Install Operation = Remove Type = Package Target = *
[Action] Description = Cleaning pacman cache... When = PostTransaction Exec = /usr/bin/paccache -rk 2
**2. 内核更新后自动重建 initramfs(系统默认已有):**
ini
[Trigger] Type = Path Target = usr/lib/modules/*/vmlinuz
[Action] Description = Updating linux initcpios... When = PostTransaction Exec = /usr/bin/mkinitcpio -p linux
**3. 更新后自动更新 GRUB 配置:**
ini
[Trigger] Operation = Upgrade Type = Package Target = linux Target = linux-lts Target = linux-zen
[Action] Description = Updating GRUB config... When = PostTransaction Exec = /usr/bin/grub-mkconfig -o /boot/grub/grub.cfg
**4. 更新后自动重建 AUR 包的 DKMS 模块:**
某些 DKMS 模块在内核更新后需要重建(如 `nvidia-dkms` 的 hook 已自动处理)。
**管理 hooks:**
bash
ls /etc/pacman.d/hooks/ ls /usr/share/libalpm/hooks/
> **注意**:不要创建会互相冲突的 hooks(如多个 hook 同时重建 initramfs)。测试新 hook 前建议创建 Btrfs/Timeshift 快照。
### Flatpak(沙盒化应用管理)
Flatpak 提供与系统隔离的应用运行环境,适合获取最新版本应用或运行专有软件:
bash
sudo pacman -S flatpak
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
**基本使用:**
bash
flatpak search firefox
flatpak install flathub org.mozilla.firefox
flatpak run org.mozilla.firefox
flatpak list
flatpak update
flatpak uninstall org.mozilla.firefox
flatpak uninstall --unused
**Flatpak vs Pacman vs AUR 对比:**
| 特性 | Pacman | AUR | Flatpak |
|------|--------|-----|---------|
| 沙盒隔离 | 无 | 无 | 有(Bubblewrap) |
| 更新速度 | 依赖发行版 | 依赖维护者 | 上游直接发布 |
| 安全性 | 高(官方签名) | 需审查 PKGBUILD | 中(沙盒+权限管理) |
| 磁盘占用 | 最小 | 小 | 较大(独立运行时) |
| 桌面集成 | 完美 | 完美 | 良好(需配置主题) |
| 适用场景 | 系统核心组件 | 社区维护包 | 专有软件/最新版本 |
**Flatpak 权限管理(Flatseal):**
bash
flatpak install flathub com.github.tchx84.Flatseal
**Flatpak 主题整合(让 Flatpak 应用使用系统主题):**
bash
flatpak install flathub org.gtk.Gtk3theme.Breeze
flatpak list | grep theme
> **选择建议**:系统工具和开发工具用 Pacman/AUR,专有软件(Discord、Slack、Spotify)和需要最新版本的应用优先考虑 Flatpak。
### systemd Journal 管理
bash
journalctl -b
journalctl -b -1
journalctl -u NetworkManager
journalctl -p 3 -b
journalctl -k
journalctl -f
sudo journalctl --vacuum-size=500M
### Arch Build System (ABS) 与 Clean Chroot 构建
对于需要从源码编译的 AUR 包,使用干净 chroot 可确保构建环境一致、隔离依赖污染:
bash
sudo pacman -S devtools
mkdir -p ~/.cache/chroot/root mkarchroot ~/.cache/chroot/root base-devel
extra-x86_64-build -- -r ~/.cache/chroot/root
sudo arch-nspawn ~/.cache/chroot/root pacman -Syu
**查看包构建信息:**
bash
yay -G package_name cd package_name cat PKGBUILD
makepkg -si
namcap *.pkg.tar.zst # 检查包质量
### 文件解压缩
除了 `tar` 命令,KDE 下的 `ark` 可以配合 Dolphin 文件管理器右键解压。但解压 Windows 下创建的压缩包(含中文文件名)可能会乱码。使用 **Unarchiver** 可以避免此问题:
bash sudo pacman -S unarchiver unar xxx.zip # 解压,自动处理编码问题
常用压缩/解压命令速查:
bash
tar -czvf archive.tar.gz ./folder # 打包压缩 tar -xzvf archive.tar.gz # 解压
zip -r archive.zip ./folder # 压缩为 zip unzip archive.zip # 解压 zip
7z a archive.7z ./folder # 压缩 7z x archive.7z # 解压
unrar x archive.rar # 解压 rar
### 磁盘空间信息
**df 命令:**
bash df -h # 人类可读格式查看文件系统占用 df -i # 查看 inode 使用情况 du -sh /path/to/dir # 查看某目录总大小 du -sh /* 2>/dev/null | sort -rh | head -15 # 根目录下最大 15 个目录
**Filelight(图形化磁盘分析):**
bash sudo pacman -S filelight
打开 Filelight 即可直观看到磁盘空间占用,点击区块可深入分析子目录。类似 Windows 下的 WizTree。
**命令行替代(ncdu):**
bash sudo pacman -S ncdu ncdu / # 交互式磁盘分析,方向键导航,d 删除
### 磁盘空间清理
**清理 pacman 缓存(推荐保留最近 3 个版本):**
bash sudo pacman -S pacman-contrib paccache -rk3 # 仅保留最近 3 个版本 paccache -ruk0 # 删除所有未安装包的缓存
**自动清理缓存(pacman hook):**
创建 `/etc/pacman.d/hooks/clean_package_cache.hook`:
ini [Trigger] Operation = Upgrade Operation = Install Operation = Remove Type = Package Target = *
[Action] Description = Cleaning pacman cache... When = PostTransaction Exec = /usr/bin/paccache -rk 2
**清理 yay/paru 构建缓存:**
bash rm -rf ~/.cache/yay rm -rf ~/.cache/paru
**清理 systemd journal:**
bash journalctl --disk-usage # 查看日志占用 sudo journalctl --vacuum-time=30days # 保留 30 天 sudo journalctl --vacuum-size=200M # 保留 200MB
**查找大文件:**
bash find /home -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh | head -20
### 硬件信息检测
**磁盘健康检测(Smartmontools):**
bash sudo pacman -S smartmontools sudo smartctl -A /dev/sda # SATA 硬盘 sudo smartctl -A /dev/nvme0n1 # NVMe 硬盘 sudo smartctl -d sat -A /dev/sdb # USB 外接硬盘
关注 `Reallocated_Sector_Ct`(重分配扇区数)和 `Power_On_Hours`(通电时间)。
**CPU 信息:**
bash
lscpu # CPU 架构/频率/缓存 cat /proc/cpuinfo | grep "model name" # CPU 型号
sudo pacman -S cpu-x # archlinuxcn 源 yay -S cpu-x # AUR
**GPU 信息:**
bash
lspci -k | grep -A 3 -E "VGA|3D" glxinfo | grep "OpenGL" # 需要 mesa-utils
yay -S gpu-viewer
**完整硬件信息(Dmidecode):**
bash sudo pacman -S dmidecode sudo dmidecode # 全部信息(BIOS、内存频率等) sudo dmidecode -t memory # 仅内存信息 sudo dmidecode -t bios # 仅 BIOS 信息
**其他实用检测工具:**
bash
sudo pacman -S hdparm sudo hdparm -Tt /dev/sda
lsusb -t
lspci -tv
sudo pacman -S hwdetect hwdetect --show-modules # 列出当前硬件所需的内核模块
### Timeshift 快照恢复
Timeshift 不仅是备份工具,更是系统"后悔药"。以下是不同场景的恢复方式:
**场景一:能进入桌面环境**
直接打开 Timeshift GUI,选择快照 → 根据提示还原即可。
**场景二:无法进入桌面但能进入 tty**
按 `Ctrl + Alt + F2~F6` 进入 tty 终端,执行:
bash sudo timeshift --list # 列出所有快照 sudo timeshift --restore --snapshot '20XX-XX-XX_XX-XX-XX' --skip-grub
**场景三:系统完全无法启动(通过 Live USB 恢复)**
bash
sudo pacman -Sy timeshift sudo timeshift --restore --snapshot-device /dev/sdXY # 指定快照所在分区
**Btrfs 快照恢复后 /home 无法挂载:**
Timeshift 恢复 Btrfs 快照后,子卷 ID 可能变更。若系统启动失败,进入 emergency shell 后修改 fstab:
bash vim /etc/fstab
sudo btrfs sub list -u /
**定时快照不生效:**
确保 cronie 服务已启用:
bash sudo systemctl enable --now cronie.service
### rsync 文件同步与备份
`rsync` 已取代 `scp`,支持增量传输、压缩、保留权限等特性:
bash
rsync foo.txt user@server:/home/user/ rsync -avz ./folder/ user@server:/home/user/folder/ # 目录同步(归档+压缩)
rsync -avP --delete /home/user/Documents/ /mnt/backup/Documents/
---
## 九、系统维护与安全
### 1. 系统更新最佳实践
**更新前:**
1. 查看 [Arch Linux News](https://archlinux.org/news/) 是否有重大变更
2. 检查 pacman 提示的 `.pacnew` 文件
3. 如果是重大更新(内核、显卡驱动),建议先创建快照
**更新命令:**
bash
sudo pacman -Syu
yay -Syu
sudo pacman -S package_name
**检查系统服务状态:**
bash
systemctl --failed
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain
### 2. 处理 .pacnew 和 .pacsave 文件
更新后,Pacman 会在配置文件有冲突时生成 `.pacnew`(新配置)或 `.pacsave`(备份):
bash
sudo find /etc -name "*.pacnew"
sudo find /etc -name "*.pacsave"
sudo pacman -S meld sudo meld /etc/xxx /etc/xxx.pacnew
sudo pacman -S pacman-contrib sudo pacdiff
### 3. 镜像源管理与 Reflector
bash
sudo pacman -S reflector
sudo reflector --latest 10 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
sudo systemctl enable --now reflector.timer
reflector --country China --latest 10 --protocol https --sort rate --save /etc/pacman.d/mirrorlist
### 4. 备份策略
**Timeshift(推荐新手,支持 Btrfs 快照):**
bash sudo pacman -S timeshift sudo systemctl enable --now cronie
**手动 Btrfs 快照:**
bash
sudo btrfs subvolume snapshot /home /home/.snapshots/$(date +%Y%m%d_%H%M%S)
sudo btrfs subvolume set-default /mnt/@snapshot
**Snapper(Btrfs 快照管理,自动化定时快照):**
bash
sudo pacman -S snapper
sudo snapper -c root create-config /
sudo snapper list-configs
sudo snapper -c root create -d "更新前快照" sudo snapper -c root create -t pre -p # pre 快照(用于操作前后对比)
sudo snapper -c root create -t post --pre-number N # post 快照
sudo snapper -c root list
sudo snapper -c root status N..M sudo snapper -c root diff N..M
sudo snapper -c root delete N
sudo snapper -c root undochange N..0
sudo systemctl enable --now snapper-timeline.timer sudo systemctl enable --now snapper-cleanup.timer
> **Snapper vs Timeshift:** Snapper 比 Timeshift 更灵活(支持 pre/post 快照、差异对比、命令行操作),但配置稍复杂。Timeshift 界面友好,适合新手。
**重要数据备份:**
bash
rsync -avz --delete /home/user /backup/drive
tar cz folder | gpg -c > backup.tar.gz.gpg
sudo crontab -e
### 5. 安全加固
**防火墙(UFW):**
bash sudo pacman -S ufw sudo ufw default deny # 默认拒绝所有入站 sudo ufw allow from 192.168.1.0/24 # 信任局域网 sudo ufw allow ssh # 开放 SSH sudo ufw limit ssh # SSH 限速防爆破 sudo ufw enable sudo systemctl enable --now ufw sudo ufw status verbose
**Fail2ban(SSH 防爆破):**
bash sudo pacman -S fail2ban sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd
**系统安全审计:**
bash
sudo ss -tulpn
sudo lsof -i -P -n | grep LISTEN
sudo find /usr -type f -perm -4000 > /tmp/suid_before
sudo pacman -S aide sudo aideinit
**SSH 密钥配置(免密码登录):**
bash
ssh-keygen -t ed25519 -C "your_email@example.com"
ed25519 比 RSA 更安全更快,兼容所有现代 SSH 服务器ssh-copy-id -i ~/.ssh/id_ed25519.pub user@server_ip # 方式一
cat ~/.ssh/id_ed25519.pub | ssh user@server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
ssh user@server_ip
Host myserver
HostName server.example.com
Port 2222
User myuser
IdentityFile ~/.ssh/id_ed25519
ServerAliveInterval 60
**使用 SSH 代理(ssh-agent):**
bash
eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519
yay -S keychain
eval $(keychain --eval --quiet ~/.ssh/id_ed25519)
**SSH 安全配置(`/etc/ssh/sshd_config`):**
conf Port 2222 # 更换默认端口(降低扫描风险) PermitRootLogin no # 禁止 root 登录 PasswordAuthentication no # 禁用密码认证(使用密钥) PubkeyAuthentication yes AllowUsers yourusername # 限制可登录用户 MaxAuthTries 3 # 最大认证尝试次数 ClientAliveInterval 300 # 客户端超时断连
重启 SSH 服务:
bash sudo systemctl restart sshd
**WireGuard VPN(轻量级 VPN):**
bash
sudo pacman -S wireguard-tools
wg genkey | sudo tee /etc/wireguard/private.key sudo chmod 600 /etc/wireguard/private.key sudo cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
[Interface] Address = 10.0.0.2/24 # 客户端 IP(与服务器同网段) PrivateKey = <客户端私钥> DNS = 10.0.0.1 # 使用 VPN 的 DNS
[Peer] PublicKey = <服务器公钥> Endpoint = your-server.com:51820 AllowedIPs = 0.0.0.0/0, ::/0 # 所有流量走 VPN(全隧道)
PersistentKeepalive = 25
sudo systemctl enable --now wg-quick@wg0
sudo wg show
**DNS 隐私与安全:**
bash
sudo pacman -S systemd-resolved sudo systemctl enable --now systemd-resolved
sudo vim /etc/systemd/resolved.conf [Resolve] DNS=1.1.1.1#cloudflare-dns.com 9.9.9.9#dns.quad9.net DNSOverTLS=yes DNSSEC=yes Cache=yes
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf
sudo pacman -S stubby sudo systemctl enable --now stubby
sudo pacman -S dnscrypt-proxy # 另一个选择:DNSCrypt
**网络连接检查与诊断:**
bash
ip route
resolvectl status # systemd-resolved 状态
dig +short txt qnamemintest.internet.nl # 测试 DNSSEC
sudo nmap -sS localhost
### 6. AppArmor(强制访问控制)
AppArmor 通过为每个应用程序定义安全配置文件,限制其可访问的文件、网络、capabilities 等资源。比 SELinux 更易配置,已被 Ubuntu/openSUSE 默认使用。
**安装与启用:**
bash
sudo pacman -S apparmor
sudo grub-mkconfig -o /boot/grub/grub.cfg
sudo systemctl enable --now apparmor
**查看 AppArmor 状态:**
bash
sudo aa-status
sudo ps auxZ | grep -v unconfined
sudo journalctl -k | grep -i apparmor
**安装预配置的 AppArmor 配置文件:**
bash
sudo pacman -S apparmor-profiles
yay -S apparmor-profiles-git
**为自定义应用创建配置文件:**
bash
sudo aa-genprof /usr/bin/myapp
sudo aa-enforce /etc/apparmor.d/usr.bin.myapp
sudo aa-complain /etc/apparmor.d/usr.bin.myapp
> **建议**:桌面用户优先启用 AppArmor + 防火墙(UFW)。AppArmor 对浏览器(Firefox)等面向网络的应用程序有现成配置文件,能有效限制漏洞利用的波及范围。
### 7. 内核管理
**查看当前内核信息:**
bash
uname -r
ls /boot/vmlinuz-*
pacman -Ss linux linux-lts linux-zen linux-hardened
zcat /proc/config.gz | grep CONFIG_XXX
**Arch Linux 官方内核选择:**
| 内核包 | 特点 | 推荐场景 |
|--------|------|----------|
| `linux` | 最新稳定内核,附带少量补丁 | 大多数用户的默认选择 |
| `linux-lts` | 长期支持版(数年维护一个主版本) | 追求稳定性、NVIDIA 驱动兼容性问题、服务器 |
| `linux-zen` | 针对桌面交互优化,使用 MuQSS/BBR 等 | 桌面用户追求更低延迟和响应速度 |
| `linux-hardened` | 安全加固版,启用更多内核防御机制 | 对安全性有较高要求的场景 |
> **建议:** 安装 `linux-lts` 作为备用内核。若主内核更新后出现兼容性问题,可从引导菜单选择 LTS 内核启动。
**安装与管理多内核:**
bash
sudo pacman -S linux-lts linux-lts-headers
sudo pacman -R linux linux-headers
sudo grub-mkconfig -o /boot/grub/grub.cfg # GRUB 用户
**内核模块管理:**
bash
lsmod
modinfo module_name
sudo modprobe module_name # 加载 sudo modprobe -r module_name # 卸载
echo "module_name" | sudo tee /etc/modules-load.d/my-modules.conf
echo "blacklist module_name" | sudo tee /etc/modprobe.d/blacklist.conf
echo "options module_name param=value" | sudo tee /etc/modprobe.d/module-options.conf
常用模块参数示例(`/etc/modprobe.d/`):
conf
options snd_hda_intel power_save=0
options nvme apst=0
**内核参数配置(kernel command line):**
内核参数在系统引导时传递给内核,用于控制各种行为:
bash
cat /proc/cmdline
常用内核参数及说明:
| 参数 | 作用 |
|------|------|
| `quiet` | 减少启动时内核信息输出 |
| `nowatchdog` | 关闭硬件看门狗(略微提升性能) |
| `mitigations=off` | 关闭 CPU 漏洞缓解措施(提升性能,降低安全性) |
| `iommu=pt` | 开启 IOMMU 直通模式(VM 显卡直通所需) |
| `acpi_osi=!Windows 2012` | 解决特定笔记本 ACPI 兼容性问题 |
| `noibrs` / `noibpb` | 旧 CPU 上关闭 Spectre v2 缓解(提升性能) |
| `pcie_aspm=off` | 关闭 ASPM 省电(解决某些 NVMe/PCIe 设备问题) |
| `acpi_backlight=native` | 切换背光控制方式(解决亮度调节无效) |
配置内核参数的方法取决于引导加载程序类型:
**systemd-boot 用户:**
conf
options root=UUID=xxxxxxxx rw quiet nowatchdog mitigations=off
**GRUB 用户:**
bash
GRUB_CMDLINE_LINUX_DEFAULT="quiet nowatchdog"
sudo grub-mkconfig -o /boot/grub/grub.cfg
**mkinitcpio 重新生成 initramfs:**
bash
sudo mkinitcpio -P
sudo mkinitcpio -k linux-lts -g /boot/initramfs-linux-lts.img
lsinitcpio /boot/initramfs-linux.img
> **注意:** 内核包更新时,pacman hook 会自动重新生成 initramfs,一般无需手动操作。但在修改 `/etc/mkinitcpio.conf`(如添加 encrypt/lvm2 hook)或安装新内核后,需要手动运行上述命令。
### 8. 日志管理
systemd-journald 是 Arch Linux 的默认日志系统,取代了传统的 syslog。
**基本日志查看:**
bash
journalctl -xe
journalctl -b
journalctl -b -1
journalctl --list-boots
**高级过滤:**
bash
journalctl -u sshd journalctl -u NetworkManager.service journalctl -u sshd -u nginx # 多服务
journalctl --since "2024-01-01" --until "2024-01-02" journalctl --since "1 hour ago" journalctl --since "yesterday" --until "now"
journalctl -p 3 -b # 本次启动的错误及以上
journalctl -k journalctl -k -p 3 # 内核错误
journalctl -f journalctl -u sshd -f # 跟踪特定服务
journalctl /usr/bin/sshd
journalctl _PID=1234
journalctl /usr/bin/pacman # pacman 操作记录
**journald 持久化配置:**
默认 journald 将日志保存在内存(`/run/log/journal`),重启后丢失。配置持久化可保留历史日志用于排查:
bash
sudo mkdir -p /var/log/journal
sudo systemctl restart systemd-journald
更精细的配置在 `/etc/systemd/journald.conf`:
ini [Journal] Storage=persistent # 持久化存储(auto 会在 /var/log/journal 存在时自动持久化) Compress=yes # 压缩旧日志节省空间 SystemMaxUse=500M # 日志最大总空间 SystemMaxFileSize=100M # 单个日志文件最大 MaxRetentionSec=2week # 最长保留时间(超过则清理) RuntimeMaxUse=100M # /run 中日志最大空间 ForwardToSyslog=no # 不转发传统 syslog
配置后重启服务:
bash sudo systemctl restart systemd-journald
**日志维护:**
bash
journalctl --disk-usage
sudo journalctl --vacuum-time=30days # 保留最近30天 sudo journalctl --vacuum-size=200M # 保留200MB sudo journalctl --vacuum-files=5 # 保留最后5个日志文件
sudo journalctl --rotate
### 9. 定期维护清单
| 频率 | 任务 | 命令/说明 |
|------|------|-----------|
| 每日 | 系统更新 | `sudo pacman -Syu` |
| 每日 | 检查失败服务 | `systemctl --failed` |
| 每周 | 阅读 Arch Linux 新闻 | <https://archlinux.org/news/>(重大更新前务必查看) |
| 每周 | 检查 AUR 包更新 | AUR 助手(如 `yay -Syu --devel`) |
| 每月 | 检查 .pacnew 文件并合并 | `sudo pacdiff`(需安装 pacman-contrib) |
| 每月 | 清理孤立依赖 | `sudo pacman -Rns $(pacman -Qtdq)` |
| 每月 | 清理软件包缓存 | `sudo paccache -rk2`(保留最近2个版本) |
| 每月 | 清理日志 | `sudo journalctl --vacuum-size=200M` |
| 每月 | 检查系统服务耗时 | `systemd-analyze blame \| head -10` |
| 每季 | SSD Trim | `sudo fstrim -av`(已启用 `fstrim.timer` 则自动) |
| 每季 | 检查磁盘健康 | `sudo smartctl -A /dev/sda`(需安装 `smartmontools`) |
| 每季 | 检查大型文件/目录 | `du -sh /* 2>/dev/null \| sort -rh \| head -15` |
| 每季 | 文件系统检查 | 下次重启时:`sudo touch /forcefsck` |
| 半年 | 刷新 pacman 密钥 | `sudo pacman-key --refresh-keys` |
| 半年 | 更新 CPU 微码 | `sudo pacman -S intel-ucode` 或 `amd-ucode`(如已安装则自动更新) |
| 半年 | 检查开放端口与监听服务 | `sudo ss -tulpn` |
| 按需 | 更新镜像列表 | `sudo reflector --latest 10 --protocol https --sort rate --save /etc/pacman.d/mirrorlist` |
| 按需 | 检查系统完整性 | `sudo aide --check`(需安装 aide 并先运行 `sudo aideinit`) |
| 按需 | 健康检查综合命令 | `systemctl --failed && journalctl -p 3 -b -q --no-pager && df -h && free -h` |
| 按需 | 清理 AUR 构建缓存 | `rm -rf ~/.cache/yay && rm -rf ~/.cache/paru` |
| 按需 | 检查 pacman hook 日志 | `journalctl -u pacman-init.service` |
| 按需 | 搜索卸载包残留配置 | `sudo find /etc -name "*.pacsave" -o -name "*.pacorig"` |
| 按需 | 查看可安全删除的依赖 | `pacman -Qdtq`(确认后 `sudo pacman -Rns $(pacman -Qdtq)`) |
| 按需 | 按安装日期查看包 | `grep -E 'installed (linux|firefox)' /var/log/pacman.log` |
---
## 十、系统美化
> 建议:美化不应浪费过多时间,花最少的时间完成性价比最高的美化。
### 主题
系统设置 → 外观 → 全局主题 → 获取新全局主题,搜索使用 **Layan** 主题。
### 图标
bash
sudo pacman -S papirus-icon-theme # Papirus(最流行,支持多种颜色) yay -S tela-icon-theme # Tela 扁平风 yay -S whitesur-icon-theme # WhiteSur macOS 风格 yay -S nordzy-icon-theme # Nord 配色
**KDE 设置:** 系统设置 → 外观 → 图标 → 获取新图标主题
**手动安装:** 解压到 `~/.local/share/icons/`(用户)或 `/usr/share/icons/`(系统)
### 光标主题
bash
sudo pacman -S breeze-cursors # KDE 默认 yay -S capitaine-cursors # 流行光标 yay -S bibata-cursor-theme # Bibata 系列(多种样式) yay -S whitesur-cursor-theme # WhiteSur
**KDE 设置:** 系统设置 → 外观 → 光标
**全局配置:** 创建 `/usr/share/icons/default/index.theme`:
ini [Icon Theme] Inherits=Bibata-Modern-Classic
或通过 GTK 设置 `~/.config/gtk-3.0/settings.ini`:
ini [Settings] gtk-cursor-theme-name=Bibata-Modern-Classic
### SDDM 登录界面
**KDE 内置:** 系统设置 → 开机和关机 → 登录屏幕(SDDM) → 获取新登录屏幕,搜索 **Layan**。
**手动安装 SDDM 主题:**
bash yay -S sddm-theme-sugar-candy-git # 高度可定制(颜色、背景、字体) yay -S sddm-chili-theme # Chili 简洁风 yay -S sddm-nordic-theme # Nordic 风格
安装后编辑 `/etc/sddm.conf`(或 `/etc/sddm.conf.d/kde_settings.conf`):
ini [Theme] Current=sugar-candy
[Users] MaximumUid=60000 HideShells=/sbin/nologin,/bin/false
**SDDM 背景图设置:**
ini [Theme]
### 终端样式
**Konsole 配色:** konsole → 设置 → 编辑当前方案 → 外观,选择 `Red-Black`。
也可从 [KDE Store](https://store.kde.org/) 下载更多配色方案。
#### Shell 提示符美化
**Starship(推荐,跨 Shell)**:
bash sudo pacman -S starship
mkdir -p ~/.config cat > ~/.config/starship.toml << 'EOF' format = "$all" [git_branch] symbol = "🌱 " [package] symbol = "📦 " [rust] symbol = "🦀 " [nodejs] symbol = "⬢ " EOF
**Oh My Zsh + Powerlevel10k(Zsh 专属):**
bash sudo pacman -S zsh zsh-completions sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \ ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
#### LS_COLORS 增强
bash
sudo pacman -S vivid echo 'export LS_COLORS="$(vivid generate dracula)"' >> ~/.bashrc
### Picom 合成器(X11 窗口特效)
如果你使用 X11 窗口管理器(如 i3、openbox),Picom 提供透明、阴影、模糊等特效:
bash sudo pacman -S picom
**基础配置(`~/.config/picom/picom.conf`):**
ini
shadow = true; shadow-radius = 7; shadow-opacity = 0.5;
opacity-rule = [ "90:class_g = 'Alacritty'", "80:class_g = 'Firefox'" ];
blur-backend = "kawase"; blur-method = "kawase"; blur-strength = 10;
**启用:**
bash picom --config ~/.config/picom/picom.conf &
### 壁纸管理
**KDE Plasma:** 右键桌面 → 配置桌面 → 壁纸,支持图片、幻灯片、动态壁纸。
bash
yay -S plasma6-wallpapers-wallpaper-engine-git
sudo pacman -S variety
sudo pacman -S nitrogen nitrogen --set-zoom-fill --random ~/wallpapers/
### Kvantum 主题
bash sudo pacman -S kvantum
下载 Layan Kvantum 主题,配置后系统设置中的应用风格选择 kvantum。
### 统一 Qt 和 GTK 应用程序外观
KDE 下 GTK 应用可能不协调。以下方法可统一外观:
**方法一:安装 KDE GTK 集成(推荐)**
bash sudo pacman -S breeze-gtk kcm-gtk-config
**方法二:使用 Kvantum 统一(效果最佳)**
Kvantum 同时支持 Qt 和 GTK 的主题渲染:
bash
sudo pacman -S kvantum # Kvantum 主题引擎(Qt6)
sudo pacman -S kvantum-qt5
**方法三:QGtkStyle(Qt 应用使用 GTK 主题)**
bash sudo pacman -S qgtkstyle
### GRUB 主题
1. 下载喜欢的主题(如 [grub2-themes](https://github.com/vinceliuice/grub2-themes))
2. `sudo cp -r theme-dir /usr/share/grub/themes/your-theme`
3. 编辑 `/etc/default/grub`:
bash GRUB_THEME="/usr/share/grub/themes/your-theme/theme.txt" GRUB_GFXMODE=1920x1080,auto # 推荐设置分辨率
4. 生成配置:
bash sudo grub-mkconfig -o /boot/grub/grub.cfg
**热门 GRUB 主题:**
bash yay -S grub2-themes-archlinux # Arch Linux 风格主题 yay -S grub-theme-vimix # Vimix 扁平风 yay -S grub2-theme-whitesur # WhiteSur 风格
### Plymouth 开机动画
Plymouth 提供图形化的开机启动动画,替代默认文字滚动:
bash sudo pacman -S plymouth
**配置 mkinitcpio:**
编辑 `/etc/mkinitcpio.conf`,在 `HOOKS` 中 `base udev` 后添加 `plymouth`:
bash HOOKS=(base udev plymouth autodetect ...)
**选择主题:**
bash
ls /usr/share/plymouth/themes/
sudo plymouth-set-default-theme -R spinner
**内核参数(GRUB):**
在 `GRUB_CMDLINE_LINUX_DEFAULT` 中添加 `quiet splash`:
bash GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
**重新生成:**
bash sudo mkinitcpio -P sudo grub-mkconfig -o /boot/grub/grub.cfg
> NVIDIA 闭源驱动用户可能需要添加 `nvidia_drm.modeset=1` 内核参数。
### 字体配置与 Fontconfig
**查看系统字体:**
bash
fc-list | less
fc-list | grep -i "noto"
fc-match "sans-serif"
**安装更多字体:**
bash
sudo pacman -S ttf-dejavu ttf-liberation ttf-droid ttf-ubuntu-font-family
sudo pacman -S noto-fonts-cjk # Noto 中日韩(约 100MB) sudo pacman -S adobe-source-han-sans-cn-fonts # 思源黑体 sudo pacman -S adobe-source-han-serif-cn-fonts # 思源宋体
sudo pacman -S ttf-fira-code # Fira Code(支持连字) sudo pacman -S ttf-jetbrains-mono # JetBrains Mono sudo pacman -S ttf-hack-nerd # Hack Nerd Font
sudo pacman -S noto-fonts-emoji # Noto Emoji
yay -S ttf-mac-fonts # Mac 风格 yay -S ttf-ms-win11-auto # Windows 字体(自动下载) yay -S ttf-sarasa-gothic # 更纱黑体(混合等宽+中文)
**Nerd Fonts(终端开发者专用):**
为编程字体添加 Powerline 和图标字符,配合 starship/powerlevel10k 使用:
bash
yay -S nerd-fonts-fira-code # FiraCode Nerd Font yay -S nerd-fonts-jetbrains-mono # JetBrains Mono Nerd Font yay -S nerd-fonts-hack # Hack Nerd Font yay -S nerd-fonts-complete # 完整包(较大,约 1GB)
**Fontconfig 配置(改善中文字体渲染):**
创建 `~/.config/fontconfig/fonts.conf`:
xml <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<edit name="antialias" mode="assign"><bool>true</bool></edit>
<edit name="hinting" mode="assign"><bool>true</bool></edit>
<edit name="hintstyle" mode="assign"><const>hintslight</const></edit>
<edit name="rgba" mode="assign"><const>rgb</const></edit>
<edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
<family>sans-serif</family>
<prefer>
<family>Noto Sans CJK SC</family>
<family>Source Han Sans SC</family>
</prefer>
bash
fc-cache -fv
### HiDPI 高分屏设置
**KDE Plasma 全局缩放:**
系统设置 → 显示和监视器 → 显示配置 → 缩放
推荐:
4K 27寸 → 200%
**命令行设置缩放:**
bash
kwriteconfig6 --file ~/.config/kdeglobals --group KScreenscaling --key EnabledByDefault true
kscreen-doctor output.eDP-1.scale.1.5
**Electron/Chromium 应用:**
bash
ELECTRON_OZONE_PLATFORM_HINT=wayland
GDK_DPI_SCALE=1.25
QT_ENABLE_HIGHDPI_SCALING=1
GOOGLE_CHROME_DEFAULT_DISPLAY_SCALE=125
**X11 下独立缩放(如使用 X11 而非 Wayland):**
bash
xrdb -merge ~/.Xresources Xft.dpi: 144
xrandr --dpi 144
### 多显示器配置
**查看显示器信息:**
bash
xrandr --listmonitors xrandr --query
kscreen-doctor -o
**配置多显示器布局:**
bash
xrandr --output eDP-1 --primary --mode 1920x1080 --rate 60
--output HDMI-1 --mode 2560x1440 --rate 144 --right-of eDP-1
**保存显示器配置:**
bash
kscreen-doctor config.save ~/.config/kscreen-local.conf kscreen-doctor config.restore ~/.config/kscreen-local.conf
sudo pacman -S arandr
---
## 十一、性能优化与功耗控制
> 性能优化应根据实际硬件和使用场景进行。先诊断瓶颈再优化,避免为了优化而优化。
> 常用诊断命令:`htop`(CPU/内存)、`free -h`(内存)、`iostat -x 1`(磁盘 I/O)、`systemd-analyze blame`(启动耗时)
### 1. CPU 频率调度(Governor)
查看当前调度器与可用模式:
bash cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
常见调度器:
| 调度模式 | 说明 |
|---------|------|
| `performance` | 最高频率运行,性能最强 |
| `powersave` | 最低频率运行,最省电 |
| `schedutil` | 内核调度器动态调节(推荐,现代 CPU 默认) |
| `ondemand` | 按需调节(传统方案) |
临时切换所有核心:
bash echo performance | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
持久化配置(使用 systemd 服务):
bash sudo tee /etc/systemd/system/cpufreq.service << 'EOF' [Unit] Description=CPU Frequency Governor
[Service] Type=oneshot ExecStart=/usr/bin/sh -c 'echo schedutil > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor'
[Install] WantedBy=multi-user.target EOF sudo systemctl enable cpufreq
### 2. Intel CPU 降压(Haswell 及更新)
bash yay -S intel-undervolt
sudo systemctl enable --now intel-undervolt
参数含义:0=核心电压,1=核显电压,2=缓存电压。
建议从 -50mV 开始尝试,每次增加 -10mV。
### 3. 降低功率墙(TDP 限制)
查看是否可调:
bash grep . /sys/class/powercap/intel-rapl/intel-rapl:0/*
调整短时/长时功率限制(笔记本降功耗降温度):
bash sudo pacman -S powertop sudo powertop --auto-tune # 自动优化
### 4. 编译优化(Makepkg 配置)
优化 AUR 包和自定义软件包的编译过程,减少编译时间、提升二进制性能:
**编辑 `/etc/makepkg.conf`:**
bash
MAKEFLAGS="-j$(nproc)"
CFLAGS="-march=native -O2 -pipe -fno-plt" CXXFLAGS="-march=native -O2 -pipe -fno-plt"
**各参数说明:**
| 参数 | 说明 |
|------|------|
| `-j$(nproc)` | 使用全部 CPU 核心并行编译 |
| `-march=native` | 针对本机 CPU 指令集优化(不可移植) |
| `-O2` | 标准优化级别(平衡速度和体积) |
| `-pipe` | 使用管道而非临时文件加速编译 |
| `-fno-plt` | 减少 PLT 开销,提升动态链接性能 |
**在 tmpfs 中编译(减少磁盘 I/O):**
bash
BUILDDIR=/tmp/makepkg
创建 tmpfs 挂载:
bash mkdir -p /tmp/makepkg
sudo mount -t tmpfs -o size=8G tmpfs /tmp/makepkg
**使用 ccache 编译缓存:**
bash sudo pacman -S ccache
### 5. I/O 调度器优化
查看当前 I/O 调度器:
bash cat /sys/block/sda/queue/scheduler
**NVMe 固态**推荐 `none`(即 mq-deadline):
bash echo none | sudo tee /sys/block/nvme0n1/queue/scheduler
**机械硬盘**推荐 `bfq`(更好的交互响应):
bash echo bfq | sudo tee /block/sda/queue/scheduler
持久化配置(通过 udev 规则):
bash sudo tee /etc/udev/rules.d/60-iosched.rules << 'EOF'
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/rotational}=="1", ATTR{queue/scheduler}="bfq" EOF
### 6. SSD 固态硬盘优化
**启用 TRIM:**
bash
sudo lsblk --discard
sudo systemctl enable --now fstrim.timer
sudo systemctl status fstrim.timer
sudo fstrim -av
**挂载优化(/etc/fstab):**
推荐 Btrfs 挂载选项:
noatime,compress=zstd:3,ssd,space_cache=v2,autodefrag
推荐 ext4 挂载选项:
noatime,discard=async,commit=120
**减少磁盘写入:**
bash
sudo vim /etc/fstab
### 7. Zram / Zswap(内存压缩)
**Zram**(推荐,在 RAM 中创建压缩的交换设备):
bash sudo pacman -S zram-generator
创建配置文件 `/etc/systemd/zram-generator.conf`:
ini [zram0] zram-size = ram / 2 # 用一半内存作为压缩交换 compression-algorithm = zstd # 推荐 zstd,速度和压缩比平衡
启用服务:
bash sudo systemctl daemon-reload sudo systemctl start systemd-zram-setup@zram0
swapon --show
**Zswap**(内核级,拦截页面压缩后放入内存缓存):
在 GRUB 的 `GRUB_CMDLINE_LINUX_DEFAULT` 中添加:
zswap.enabled=1 zswap.compressor=zstd zswap.max_pool_percent=20
### 8. Swap 文件管理
**创建 swap 文件(Btrfs 需先禁用 CoW):**
bash
touch /swapfile chattr +C /swapfile # 禁用 CoW chmod 600 /swapfile dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress # 4GB mkswap /swapfile swapon /swapfile
**添加到 /etc/fstab:**
/swapfile none swap defaults 0 0
查看 swap 使用情况:
bash swapon --show free -h
### 9. 内核参数优化
在 `/etc/sysctl.d/99-performance.conf` 中添加:
conf
vm.swappiness=10
vm.vfs_cache_pressure=50
net.core.rmem_max = 16777216 net.core.wmem_max = 16777216
kernel.numa_balancing=0 # 单路 CPU 可关闭 NUMA 平衡
### 10. 系统响应性优化
#### ananicy(自动优先级调整)
bash
yay -S ananicy-cpp sudo systemctl enable --now ananicy
#### irqbalance(中断负载均衡)
将硬件中断分散到多个 CPU 核心,提升多核响应性:
bash sudo systemctl enable --now irqbalance
#### earlyoom(预防内存耗尽)
在系统内存即将耗尽时主动终止占用最多的进程,避免系统卡死:
bash yay -S earlyoom sudo systemctl enable --now earlyoom
sudo systemctl status earlyoom
**替代方案:**
- `systemd-oomd`:systemd 内置的 OOM 管理(`sudo systemctl enable --now systemd-oomd`)
- `nohang`:Python 实现,可配置性更强(`yay -S nohang`)
#### ionice(手动调整 I/O 优先级)
bash
sudo ionice -c 3 -p $(pgrep backup-process)
#### preload(预测启动,需足够内存)
bash yay -S preload sudo systemctl enable --now preload
### 11. TLP 笔记本电源管理
TLP 提供笔记本电池优化,自动管理各种硬件状态:
bash
sudo pacman -S tlp tlp-rdw
sudo systemctl enable --now tlp
sudo tlp-stat -s sudo tlp-stat -b # 电池信息 sudo tlp-stat -p # 处理器 sudo tlp-stat -d # 磁盘
**TLP 配置(`/etc/tlp.conf`):**
conf
START_CHARGE_THRESH_BAT0=75 # 开始充电阈值 STOP_CHARGE_THRESH_BAT0=80 # 停止充电阈值
CPU_SCALING_GOVERNOR_ON_AC=performance # 插电使用性能调度 CPU_SCALING_GOVERNOR_ON_BAT=powersave # 电池使用省电调度
DISK_SPINDOWN_TIMEOUT_ON_AC=0 # 插电不休眠 DISK_SPINDOWN_TIMEOUT_ON_BAT=30 # 电池30分钟休眠
USB_AUTOSUSPEND=1 # 开启 USB 自动挂起
WIFI_PWR_ON_AC=off WIFI_PWR_ON_BAT=on
SATA_LINKPWR_ON_AC=med_power_with_dipm SATA_LINKPWR_ON_BAT=min_power
**TLP 与其他工具的关系:**
- TLP 会自动覆盖 systemd 的电源管理设置
- 不要与 `laptop-mode-tools` 同时使用
- 可与 `powertop` 配合:先用 `sudo powertop --auto-tune` 再启用 TLP
### 12. kernel 参数引导优化
编辑 `/etc/default/grub`,在 `GRUB_CMDLINE_LINUX_DEFAULT` 中添加:
nowatchdog mitigations=off # 关闭看门狗与 CPU 安全缓解(权衡安全性)
> **注意**:`mitigations=off` 会禁用 Meltdown/Spectre 等 CPU 漏洞缓解措施,提升性能但降低安全性。仅在个人桌面且了解风险的情况下使用。
生成配置:
bash sudo grub-mkconfig -o /boot/grub/grub.cfg
### 13. 网络性能优化
#### 启用 BBR 拥塞控制算法
BBR(Bottleneck Bandwidth and Round-trip)由 Google 开发,比传统 CUBIC 算法延迟更低、吞吐量更高:
bash
sudo tee /etc/sysctl.d/99-network.conf << 'EOF'
net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr
net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216
net.ipv4.tcp_fastopen=3
net.netfilter.nf_conntrack_max=262144 EOF
sudo sysctl -p /etc/sysctl.d/99-network.conf
**验证 BBR 是否启用:**
bash sysctl net.ipv4.tcp_congestion_control
/sbin/tc -d qdisc show dev wlan0
### 14. 系统启动时间优化
#### 分析启动耗时
bash
systemd-analyze
systemd-analyze blame
systemd-analyze critical-chain
systemd-analyze plot > boot.svg
#### 优化方法
bash
sudo systemctl disable bluetooth.service # 不需要蓝牙时 sudo systemctl disable NetworkManager-wait-online # 不需要等待网络就绪 sudo systemctl disable pkgfile-update.timer # 关闭 pkgfile 更新
sudo tee -a /etc/systemd/system.conf << 'EOF' DefaultTimeoutStopSec=10s DefaultTimeoutStartSec=10s EOF
---
## 十二、常见问题排除与解决
### 关机卡住 1 分 30 秒
bash sudo vim /etc/systemd/system.conf
sudo systemctl daemon-reload
### 磁盘容量不足
bash sudo pacman -Sc # 清理包缓存 sudo pacman -Rns $(pacman -Qtdq) # 删除孤立包
### 软件降级
bash yay -S downgrade downgrade package_name
### 无法锁定数据库
bash sudo rm /var/lib/pacman/db.lck
### 手动开关混成器
bash qdbus org.kde.KWin /Compositor suspend # 禁用 qdbus org.kde.KWin /Compositor resume # 开启
### 静态 IP 设置
bash sudo systemctl stop dhcpcd NetworkManager sudo systemctl disable dhcpcd NetworkManager sudo systemctl enable --now systemd-networkd
创建 `/etc/systemd/network/10-static-eth0.network`:
conf [Match] Name=eth0
[Network] Address=YOUR_IPV4/MASK Gateway=YOUR_GATEWAY DNS=8.8.8.8
### 声卡/音频问题排查
**无声音输出:**
bash
aplay -l
cat /proc/asound/cards
systemctl --user status pipewire pipewire-pulse
systemctl --user status pulseaudio
speaker-test -t wav -c 2 # 测试扬声器 aplay /usr/share/sounds/alsa/Front_Center.wav
alsamixer # ALSA 混音器(MM=静音) pavucontrol # PulseAudio GUI 音量控制(需安装 pavucontrol)
sudo modprobe -r snd_hda_intel && sudo modprobe snd_hda_intel
**常见 PipeWire 修复:**
bash
systemctl --user restart pipewire pipewire-pulse
systemctl --user status pulseaudio # 如果 PulseAudio 在运行,禁用之 systemctl --user --now disable pulseaudio
sudo pacman -S wireplumber systemctl --user --now enable wireplumber
**麦克风不工作:**
bash
arecord -l
arecord -d 5 -f cd test.wav && aplay test.wav
> 提示:如果声音问题出现在更新后,可能是 `sof-firmware` 或 `alsa-firmware` 需要更新:`sudo pacman -S sof-firmware alsa-firmware`
### 蓝牙连接问题
**检查蓝牙状态:**
bash
sudo systemctl status bluetooth
sudo systemctl enable --now bluetooth
bluetoothctl list bluetoothctl devices
hciconfig -a
**配对与连接:**
bash bluetoothctl
power on # 开启蓝牙 agent on # 启用配对代理 scan on # 扫描设备(记录目标 MAC 地址) pair XX:XX:XX:XX:XX:XX # 配对 connect XX:XX:XX:XX:XX:XX # 连接 trust XX:XX:XX:XX:XX:XX # 信任设备(自动连接) exit
**常见问题:**
- 蓝牙适配器未识别 → 检查内核模块:`lsmod | grep bt`(btusb、bluetooth)
- 连接后断开 → 安装 `pulseaudio-bluetooth` 或 `pipewire-pulse`(音频设备需要)
- 耳机无声音 → `pavucontrol` 中将播放设备设为蓝牙耳机
- 蓝牙鼠标延迟 → 检查干扰,避免 USB 3.0 接口靠近蓝牙天线
- 使用 systemd-networkd 时蓝牙 tethering 可能需额外配置
### 黑屏/花屏问题排查
**安装/启动后黑屏(最常见 - 显卡驱动问题):**
bash
nomodeset
nomodeset i915.modeset=0 # Intel 集显禁用 modesetting nomodeset nouveau.modeset=0 # NVIDIA 开源驱动 nomodeset radeon.modeset=0 # AMD 旧卡
**桌面环境启动后黑屏/花屏:**
bash
mv ~/.config ~/.config.bak
cat ~/.local/share/xorg/Xorg.0.log | grep -iE 'fail|error|ww'
**系统启动到 dmesg 就卡住:**
bash
acpi=off
acpi_osi=Linux
pci=noacpi
nowatchdog
### 系统更新后崩溃/回滚
**部分回滚特定软件包:**
bash
pacman -Qi package_name
sudo pacman -U /var/cache/pacman/pkg/package_name-old_version.pkg.tar.zst
yay -S downgrade sudo downgrade package_name # 从本地缓存和 Arch Rollback Machine 选择版本
**完全回滚系统(谨慎操作):**
bash
tac /var/log/pacman.log | head -50
ls -lt /var/cache/pacman/pkg/ | head
mount /dev/root_partition /mnt mount /dev/efi_partition /mnt/boot snapper -c root mount-config /mnt/.snapshots # Snapper 回滚
**内核崩溃切换到 LTS 内核:**
bash
sudo pacman -S linux-lts linux-lts-headers
sudo grub-mkconfig -o /boot/grub/grub.cfg
**修复 pacman 事务中断:**
bash
sudo pacman -Syu --overwrite='*'
sudo rm /var/lib/pacman/db.lck sudo pacman -Syy sudo pacman -S archlinux-keyring sudo pacman -Syu
### 系统无法启动(进入紧急模式)
bash
systemd.unit=emergency.target
journalctl -xb -p 3 # 只看错误级别
cat /etc/fstab
mount -a
exit
### 内核 Panic / Kernel Oops
bash
journalctl -k -p 3 # 内核日志,仅错误级别
sudo pacman -S linux-lts linux-lts-headers
### fsck 文件系统检查
bash
sudo touch /forcefsck
sudo fsck /dev/sdX # 注意:需要分区未挂载
### Pacman 数据库损坏恢复
bash
sudo rm /var/lib/pacman/db.lck # 先解锁 sudo pacman -Syy # 刷新数据库
sudo mv /var/lib/pacman/local /var/lib/pacman/local.bak sudo pacman -Syyu
sudo rm -r /etc/pacman.d/gnupg/ sudo pacman-key --init sudo pacman-key --populate archlinux sudo pacman-key --populate archlinuxcn # 如果使用 archlinuxcn 源 sudo pacman -S archlinux-keyring
### 用户密码重置(无需 Live USB)
bash
mount -o remount,rw /sysroot chroot /sysroot passwd yourusername
### 网络连接问题排查
**NetworkManager 管理网络:**
bash
nmcli device status nmcli connection show
sudo systemctl restart NetworkManager
nmcli device wifi list
nmcli device wifi connect "SSID" password "password"
**DHCP 获取不到 IP:**
bash
sudo systemctl status dhcpcd NetworkManager
sudo dhcpcd -k # 释放 sudo dhcpcd # 重新获取
ip route show default ping -c 3 8.8.8.8 # 测试外网连通性 ping -c 3 google.com # 测试 DNS 解析
**DNS 解析问题:**
bash
dig archlinux.org nslookup archlinux.org
sudo systemctl status systemd-resolved
sudo systemctl restart systemd-resolved
ls -la /etc/resolv.conf # 应是指向 /run/systemd/resolve/stub-resolv.conf 的链接
sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
nmcli connection modify "连接名" ipv4.dns "8.8.8.8 1.1.1.1"
**无线网卡不识别:**
bash
lspci -k | grep -iA 3 network # PCIe 无线网卡 lsusb | grep -i wireless # USB 无线网卡
lsmod | grep -E 'iwl|ath|rtw|brcm'
sudo pacman -S linux-firmware # 通用固件包
sudo pacman -S iwlwifi-* # 或从 AUR 安装对应型号固件
yay -S broadcom-wl # 或 b43-firmware
**SSH 连接问题:**
bash
sudo systemctl enable --now sshd
ss -tlnp | grep :22
sudo ufw status sudo firewall-cmd --list-all
ssh -vvv user@host # 详细日志输出
### 系统时间不同步
bash
timedatectl status
sudo timedatectl set-timezone Asia/Shanghai
sudo timedatectl set-ntp true
sudo systemctl status systemd-timesyncd
sudo systemctl restart systemd-timesyncd
timedatectl timesync-status
sudo pacman -S chrony sudo systemctl enable --now chronyd
sudo chronyc -a makestep # chrony sudo systemd-timesyncd --adjust # systemd-timesyncd
sudo hwclock --systohc # 将系统时间写入硬件时钟
### 磁盘空间不足深度清理
bash
sudo du -sh /* 2>/dev/null | sort -rh | head -15
sudo paccache -rk2
sudo paccache -ruk0
sudo journalctl --vacuum-size=100M
sudo journalctl --vacuum-time=2weeks
find /home -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh | head -20
rm -rf ~/.cache/yay rm -rf ~/.cache/paru
### 引导修复(GRUB)
bash
mount /dev/root_partition /mnt mount /dev/efi_partition /mnt/boot # 或 /mnt/efi arch-chroot /mnt grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --recheck grub-mkconfig -o /boot/grub/grub.cfg exit umount -R /mnt reboot
### X11 /Wayland 显示问题
bash
cat ~/.local/share/xorg/Xorg.0.log
journalctl --user -xe | grep -i wayland
mv ~/.config ~/.config.bak
### Pacman 常见问题
**GPG 密钥错误("signature is unknown trust"):**
bash sudo pacman -S archlinux-keyring # 先更新密钥环 sudo pacman-key --refresh-keys sudo pacman -Syu
sudo rm -r /etc/pacman.d/gnupg sudo pacman-key --init sudo pacman-key --populate archlinux
**文件冲突("exists in filesystem"):**
bash
pacman -Qo /path/to/conflicting/file
sudo pacman -Syu --overwrite=/path/to/file
pacman -Qdtt
**部分更新(Partial upgrade)错误:**
bash
sudo pacman -Syu
**"failed to commit transaction (conflicting files)":**
bash
sudo rm /path/to/conflicting/file sudo pacman -Syu
### 内存不足排查
bash
free -h
ps aux --sort=-%mem | head -11
journalctl -k | grep -i "killed process"
systemctl status systemd-oomd
yay -S earlyoom sudo systemctl enable --now earlyoom
### 系统启动时间过长排查
bash
systemd-analyze systemd-analyze blame | head -20 systemd-analyze critical-chain
sudo systemctl disable bluetooth # 不需要蓝牙 sudo systemctl disable pkgfile-update.timer
cat /etc/fstab
### 电源管理 / 笔记本电池耗尽快
bash
sudo pacman -S tlp tlp-rdw sudo systemctl enable --now tlp
upower -i /org/freedesktop/UPower/devices/battery_BAT0 tlp-stat -b
systemd-inhibit --list
grep . /sys/power/mem_sleep # 查看支持的睡眠模式 cat /sys/power/state # freeze(s2idle)/ mem(deep)/ disk(hibernate)
### 挂起/休眠问题
bash
sudo systemctl suspend
sudo filefrag -v /swapfile | awk 'NR==4{print $4}'
HandleLidSwitch=suspend # 合盖挂起 HandleLidSwitchExternalPower=ignore # 插电合盖不挂起 HandleLidSwitchDocked=ignore # 连接扩展坞合盖不挂起
### 系统重启后内核模块未加载
bash
lsmod | grep module_name
sudo modprobe module_name
echo "module_name" | sudo tee /etc/modules-load.d/module_name.conf
echo "options module_name param=value" | sudo tee /etc/modprobe.d/module_name.conf
### Python/pip 与系统包冲突
bash
python -m venv myenv && source myenv/bin/activate
sudo pacman -S python-pipx pipx install package_name
pip install --user package_name
### AUR 构建失败
bash
gpg --recv-keys KEY_ID
yay -Syu --devel
rm -rf ~/.cache/yay
sudo pacman -S devtools extra-x86_64-build # 在干净 chroot 中构建
## 十三、办公日常
### 即时通讯
- **Telegram**:`sudo pacman -S telegram-desktop`
- **Element**(Matrix 客户端):`sudo pacman -S element-desktop`
- **Signal**:`sudo pacman -S signal-desktop`
- **Discord**:`sudo pacman -S discord` 或 `flatpak install flathub com.discordapp.Discord`
- **QQ**:`yay -S linuxqq`(官方 Linux 版)
- **微信**:`yay -S wechat-uos`(UOS 版,功能较完整)或 `flatpak install flathub com.tencent.WeChat`
- **Fractal**(Matrix 客户端,GNOME 风格):`sudo pacman -S fractal`
- **qTox**(P2P 加密通讯):`sudo pacman -S qtox`
- **Skype**:`yay -S skypeforlinux-bin`
### 邮件客户端
- **Thunderbird**:`sudo pacman -S thunderbird`
- **Geary**(GNOME 风格,简洁):`sudo pacman -S geary`
- **KMail**(KDE,功能全面):`sudo pacman -S kmail kmail-account-wizard`
- **Claws Mail**(轻量级,高度可配置):`sudo pacman -S claws-mail`
- **NeoMutt**(终端邮件客户端):`sudo pacman -S neomutt`
### 办公套件
bash sudo pacman -S libreoffice-still # 稳定版 yay -S onlyoffice-bin # OnlyOffice(兼容性更好)
**LibreOffice 中文支持:**
bash sudo pacman -S libreoffice-still-zh-cn # 中文语言包
**字体回退方案(办公文档兼容):**
bash
yay -S ttf-ms-win11-auto
sudo pacman -S ttf-liberation # 替代 Arial/Times New Roman/Courier
### PDF 与文档处理
- **Okular**(KDE 文档查看器,支持 PDF/EPUB/CBR 等):`sudo pacman -S okular`
- **Zathura**(轻量级 Vim 风格 PDF 阅读器):`sudo pacman -S zathura zathura-pdf-mupdf`
- **Evince**(GNOME 文档查看器):`sudo pacman -S evince`
- **PDF Arranger**(PDF 页面合并/拆分/重排):`sudo pacman -S pdfarranger`
- **Stirling PDF**(Web 端全能 PDF 工具):`yay -S stirling-pdf-bin`
- **OCRmyPDF**(PDF OCR 文字识别):`sudo pacman -S ocrmypdf`
### 笔记软件
bash yay -S joplin-desktop # Joplin(Markdown,多端同步) yay -S trilium-bin # Trilium(知识管理,层级笔记) yay -S vnote # VNote(Markdown 笔记) sudo pacman -S obsidian # Obsidian(如果官方源有;否则 yay -S obsidian) yay -S logseq-desktop-bin # Logseq(大纲式双向链接笔记)
**终端笔记方案:**
bash
sudo pacman -S vimwiki # Vim 中的个人 Wiki
mkdir ~/notes && cd ~/notes && git init
### 截图与录屏
**截图:**
bash sudo pacman -S flameshot # 火焰截图(功能最强) sudo pacman -S spectacle # KDE 默认截图工具 sudo pacman -S grim slurp # Wayland 截图(grim 截图,slurp 选区)
**录屏(Wayland):**
bash sudo pacman -S wf-recorder # Wayland 轻量录屏 sudo pacman -S kooha # GNOME/Wayland 简洁录屏工具
**录屏(X11):**
bash sudo pacman -S simplescreenrecorder # 老牌录屏工具 sudo pacman -S peek # GIF 录屏
### 下载与云存储
bash
sudo pacman -S qbittorrent # 功能全面 sudo pacman -S transmission-qt # 轻量简洁
sudo pacman -S uget # 多线程下载 sudo pacman -S aria2 # 命令行下载工具(支持多协议)
yay -S megasync # Mega 网盘 sudo pacman -S rclone # 命令行网盘管理(支持 40+ 云存储)
**Rclone 快速上手:**
bash
rclone config
rclone mount remote:path /mnt/cloud --vfs-cache-mode writes
rclone sync /home/user/Documents remote:backup/Documents
### 电子书与 RSS
bash sudo pacman -S calibre # 电子书管理(转换、编辑、推送 Kindle) sudo pacman -S foliate # epub 阅读器(支持注释、翻译) yay -S thorium-reader-bin # Thorium Reader(EPUB/PDF 阅读器) sudo pacman -S newsflash # RSS 阅读器(GTK) yay -S fluent-reader # RSS 阅读器(现代 UI)
### 远程协助
bash yay -S teamviewer # TeamViewer sudo systemctl enable --now teamviewerd
**开源替代方案:**
bash sudo pacman -S rustdesk # RustDesk(开源远程桌面,推荐) sudo pacman -S remmina # 远程桌面客户端(支持 RDP/VNC/SSH) sudo pacman -S krfb # KDE VNC 服务端 sudo pacman -S xdg-desktop-portal # 桌面门户(Wayland 远程屏幕共享需要)
### 密码管理
bash sudo pacman -S keepassxc # KeePassXC(推荐,离线密码管理) sudo pacman -S bitwarden # Bitwarden 桌面客户端 yay -S bitwarden-cli # Bitwarden 命令行 sudo pacman -S pass # Unix 风格密码管理器(基于 GPG+Git)
**KeePassXC 浏览器集成:**
bash
### 思维导图与图表
bash sudo pacman -S drawio-desktop # Draw.io(流程图/UML) sudo pacman -S dia # Dia(图表编辑器) yay -S xmind # XMind(思维导图)
### 翻译与词典
bash yay -S crow-translate # 翻译工具(支持 OCR 翻译) sudo pacman -S goldendict # GoldenDict(多词典查询) yay -S sdcv # 星际译王命令行版
**CUPS 打印系统:**
bash
sudo pacman -S cups cups-pdf system-config-printer
sudo systemctl enable --now cups.service
**驱动安装:**
| 品牌 | 安装命令 |
|------|----------|
| 惠普 | `sudo pacman -S hplip` |
| 爱普生 | `yay -S epson-inkjet-printer-escpr` |
| 佳能 | `yay -S cnijfilter2`(AUR 搜索对应型号) |
| 兄弟 | `yay -S brscan4`(扫描)或 AUR 查找 |
| 通用(Gutenprint) | `sudo pacman -S gutenprint` |
**网络打印机(IPP/SMB):**
bash
/usr/share/cups/mdnsd.sh avahi-browse -r _ipp._tcp
**扫描仪(SANE):**
bash
sudo pacman -S sane sane-airscan
scanimage -L
sudo pacman -S simple-scan # 文档扫描仪 sudo pacman -S xsane # 高级扫描工具
yay -S brscan4 # 兄弟网络扫描
**打印故障排除:**
bash
journalctl -u cups cat /var/log/cups/error_log
sudo systemctl restart cups
sudo cancel -a -x
---
## 十四、视频影音
### 在线音乐
bash yay -S yesplaymusic # 全网资源整合 yay -S listen1-desktop-appimage # 老牌听歌软件 yay -S feeluown # 符合 Unix 哲学的音乐播放器 yay -S netease-cloud-music-gtk4 # 网易云音乐(GTK4 版) sudo pacman -S spotify-launcher # Spotify(通过官方仓库安装) flatpak install flathub com.spotify.Client # Spotify Flatpak 版
### 本地音乐播放器
bash sudo pacman -S elisa # KDE 音乐播放器 sudo pacman -S strawberry # Clementine 分支(功能丰富) sudo pacman -S rhythmbox # GNOME 音乐播放器 sudo pacman -S cmus # 终端音乐播放器 sudo pacman -S mpd mpc # Music Player Daemon(服务端播放)
### 视频播放器
bash sudo pacman -S vlc # VLC 播放器(功能最全) sudo pacman -S mpv # MPV 播放器(性能最佳) sudo pacman -S haruna # Haruna(MPV 前端,KDE 风格) sudo pacman -S celluloid # GNOME 风格 MPV 前端
**MPV 配置优化(`~/.config/mpv/mpv.conf`):**
conf
hwdec=auto-safe
profile=gpu-hq
af=lavfi=[loudnorm]
save-position-on-quit=yes
screenshot-directory=~/Pictures/mpv
### 在线视频
bash yay -S zy-player-bin # 在线影视资源播放 yay -S freetube-bin # FreeTube(隐私优先的 YouTube 客户端) sudo pacman -S minitube # YouTube 桌面客户端
### 弹弹Play(弹幕播放器)
bash yay -S dandanplay # 弹弹Play(本地视频弹幕播放)
### 视频转码与处理
bash
sudo pacman -S ffmpeg ffmpegthumbnailer
sudo pacman -S handbrake
sudo pacman -S mkvtoolnix-gui # MKV 封装/提取/合并
sudo pacman -S mediainfo mediainfo-gui
### IPTV 与直播源
bash sudo pacman -S kodi # Kodi 媒体中心 sudo pacman -S hypnotix # IPTV 播放器
### 音频标签与整理
bash sudo pacman -S kid3 # 音频标签编辑器 sudo pacman -S picard # MusicBrainz Picard(自动识别+打标签) sudo pacman -S beets # 命令行音乐库管理(自动整理)
---
## 十五、娱乐软件
### Steam
**安装 Steam:**
bash
sudo vim /etc/pacman.conf
sudo pacman -S steam
yay -S steam-native-runtime
**安装前提(否则游戏可能无法运行):**
bash
sudo pacman -S lib32-nvidia-utils
sudo pacman -S lib32-vulkan-radeon lib32-amdgpu-pro-oglp
sudo pacman -S lib32-mesa lib32-vulkan-intel
sudo vim /etc/locale.gen
sudo locale-gen
sudo pacman -S ttf-liberation wqy-zenhei
sudo sysctl -w vm.max_map_count=2147483642
sudo tee /etc/sysctl.d/99-gaming.conf <<< "vm.max_map_count=2147483642"
**Proton(Windows 游戏兼容层):**
bash
yay -S proton-ge-custom
**Steam 游戏性能提示:**
- 查询游戏兼容性:[protondb.com](https://www.protondb.com/)
- 为单个游戏设置启动选项(右键游戏 → 属性 → 启动选项):
bash gamemoderun mangohud %command% # GameMode + MangoHud gamemoderun mangohud DXVK_HUD=fps %command% # 带 FPS 显示 gamescope -f -r 60 -- %command # Gamescope 嵌套会话
**SteamCMD(命令行版本):**
bash yay -S steamcmd steamcmd +login anonymous +app_info_update 1 +quit
### ProtonUp-Qt(Proton 版本管理)
bash yay -S protonup-qt
图形化管理 Proton GE / Luxtorpeda / Wine-GE 版本,一键安装和切换。
### Heroic Games Launcher(Epic/GOG)
开源的 Epic Games 和 GOG 游戏启动器,支持云存档:
bash yay -S heroic-games-launcher-bin
- 登录 Epic/GOG 账号
- 自动管理 Wine/Proton prefix
- 支持 DXVK/VKD3D 切换
- 内置 FPS 限制器和性能监控
### Bottles(Wine Prefix 管理器)
基于 GTK 的 Wine prefix 管理工具,轻松配置 Windows 应用和游戏环境:
bash
yay -S bottles
flatpak install bottles
**Bottles 特点:**
- 图形化创建和管理 Wine prefix(每个游戏/应用独立环境)
- 内置依赖安装(VC++、.NET、DirectX 等)
- 支持不同 Wine runner 切换(Wine-GE、Proton、Staging)
- 预设模式:游戏、办公、软件
- 支持 DXVK / VKD3D 一键启停
### Lutris(开源游戏平台)
统一的游戏管理平台,支持 Steam、Wine、RetroArch、原生 Linux 游戏:
bash sudo pacman -S lutris
- 从 [lutris.net](https://lutris.net/) 一键安装脚本(自动配置 Wine prefix 和依赖)
- 安装显卡驱动和 32 位依赖后即可使用
- 支持自定义运行器和环境变量
### Wine 详细配置
bash
sudo pacman -S wine
sudo pacman -S wine-staging
sudo pacman -S wine-gecko wine-mono # IE 和 .NET 实现 sudo pacman -S winetricks # 依赖管理脚本
**Wine 基本用法:**
bash
export WINEPREFIX=~/Games/my-game winecfg # 配置 prefix(Windows 版本、库替代等)
winetricks vcrun2022 corefonts dxvk
wine setup.exe
sudo pacman -S dxvk winetricks dxvk # 在 prefix 中安装 DXVK
sudo pacman -S vkd3d lib32-vkd3d
**Wine 32 位声音支持:**
bash
sudo pacman -S lib32-alsa-lib lib32-alsa-plugins # ALSA sudo pacman -S lib32-libpulse # PulseAudio sudo pacman -S lib32-pipewire lib32-libpulse # PipeWire
### Gamescope(Valve 微合成器)
来自 Steam Deck 的游戏专用微合成器,提供分辨率伪装、FSR 上采样、帧率限制等:
bash sudo pacman -S gamescope
**使用方式:**
bash
gamescope -f -r 60 -W 1920 -H 1080 -- glxgears
gamescope -f -r 120 -- %command%
**NVIDIA 用户需添加内核参数:**
bash
nvidia_drm.modeset=1
### RetroArch(全能模拟器)
统一前端的多平台游戏模拟器:
bash sudo pacman -S retroarch sudo pacman -S libretro-* # 安装所有核心(或选择特定核心)
**基本使用:**
1. 首次运行:`retroarch`
2. 下载核心:主菜单 → Online Updater → Core Downloader
3. 加载游戏:主菜单 → Load Content → 选择 ROM 文件 → 选择对应核心
4. 核心推荐:
- `glcore`:NES
- `snes9x`:SNES
- `mgba`:GBA
- `pcsx_rearmed`:PS1
- `flycast`:Dreamcast
- `yabause`:SS
- `ppsspp`:PSP
### 游戏性能优化
| 工具 | 功能 | 安装方式 |
|------|------|----------|
| **GameMode** | 自动优化 CPU 调度/IO 优先级 | `sudo pacman -S gamemode lib32-gamemode` |
| **MangoHud** | 游戏内性能监控叠加层 | `sudo pacman -S mangohud lib32-mangohud` |
| **Gamescope** | 合成器/分辨率伪装/FSR | `sudo pacman -S gamescope` |
| **linux-zen** | 优化桌面/游戏响应性的内核 | `sudo pacman -S linux-zen linux-zen-headers` |
| **proton-ge-custom** | 社区增强 Proton | `yay -S proton-ge-custom` |
**GameMode 配置:**
bash
sudo usermod -aG gamemode $USER
[general] renice=10 # 提升游戏进程优先级 desiredgov=performance # 切换为 performance 调度 softrealtime=auto # 自动软实时调度 reaper_freq=5 # 检查频率
[gpu] apply_gpu_optimisations=accept-responsibility gpu_device=0 nv_powermizer_mode=1 # NVIDIA: 最高性能
gamemoded -t
**MangoHud 配置(`~/.config/MangoHud/MangoHud.conf`):**
ini fps_limit=60,120 # 帧率限制 cpu_stats # 显示 CPU 占用 gpu_stats # 显示 GPU 占用 ram # 显示内存 vram # 显示显存 fps # FPS 显示 frame_timing=0 # 帧时间 gpu_name # GPU 名称 cpu_temp # CPU 温度 gpu_temp # GPU 温度 toggle_hud=Shift_R+F12 # 切换快捷键
**调优清单:**
1. ✅ 关闭 KDE 混成器:全屏游戏自动关闭,也可手动 `qdbus org.kde.KWin /Compositor suspend`
2. ✅ 使用 `gamemoderun %command%` 作为 Steam 启动选项
3. ✅ 使用 Zen 内核降低延迟、提高帧率稳定性
4. ✅ 使用 `vm.max_map_count=2147483642` 修复 UE4/Unity 游戏崩溃
5. ✅ 使用 `mangohud` 监控性能瓶颈
6. ✅ 更新显卡驱动到最新版本
7. ✅ AMD 用户考虑 `RADV_PERFTEST=ngc` 或 `aco` 编译器
### 游戏手柄
bash
ls /dev/input/js0 # Joystick API 接口 ls /dev/input/by-id/ | grep -i joystick
evtest /dev/input/eventXX
**推荐手柄支持:**
| 手柄类型 | 安装命令 | 备注 |
|----------|----------|------|
| Xbox 无线适配器 | `yay -S xone` | 官方无线适配器 |
| Xbox 蓝牙 | `yay -S xpadneo-dkms` | Xbox One S/X / Series X 蓝牙 |
| Xbox 有线 | 即插即用 | 无需额外驱动 |
| PS4/PS5 | 即插即用(蓝牙配对) | touchpad 也支持 |
| Nintendo Switch Pro | 蓝牙配对可用 | 需安装 `joycond` |
| 通用 USB 手柄 | 即插即用 | 大多数 HID 兼容 |
**SDL 控制器映射:**
bash
sdl2-jstest --list
cat /usr/share/sdl32/gamecontrollerdb.txt | grep Linux
---
## 十六、安卓刷机
### 准备工作
bash sudo pacman -S android-tools
**启用手机的 USB 调试:**
设置 → 关于手机 → 连续点击"版本号"7次 → 返回设置 → 开发者选项 → 开启 USB 调试。
**验证连接:**
bash adb devices
**ADB 常用命令:**
bash
adb install app.apk # 安装 APK adb uninstall com.example.app # 卸载应用
adb push local_file /sdcard/ # 推送到手机 adb pull /sdcard/file ./ # 从手机拉取
adb shell # 进入手机 shell adb shell pm list packages # 列出所有应用 adb shell pm disable com.example.app # 禁用应用 adb shell dumpsys battery # 电池信息
adb shell screencap /sdcard/screen.png adb pull /sdcard/screen.png adb shell screenrecord /sdcard/record.mp4
adb pair IP:配对端口 配对码 # 配对 adb connect IP:连接端口 # 连接
adb reboot # 正常重启 adb reboot bootloader # 重启到 fastboot adb reboot recovery # 重启到 recovery
### 解锁 Bootloader
**注意:解锁会清除手机所有数据,务必提前备份。**
bash adb reboot bootloader fastboot devices # 确认识别设备
fastboot flashing unlock # Google Pixel fastboot oem unlock # 一加/小米等
### 刷入 Recovery
bash
fastboot flash recovery twrp.img
fastboot boot twrp.img
fastboot flash recovery lineage-recovery.img
### 刷入 Custom ROM
**以 LineageOS 为例:**
bash
adb sideload lineage-*.zip
adb sideload MindTheGapps-*.zip
### 刷入 Magisk(Root)
1. 从 [Magisk Release](https://github.com/topjohnwu/Magisk/releases) 下载最新 apk
2. 将 `.apk` 重命名为 `.zip`
3. 通过 Recovery 的 Sideload 或直接刷入:
bash adb sideload Magisk-v*.zip
4. 重启后安装 Magisk app(apk),打开确认 root 权限
**Magisk 模块推荐:**
- SafetyNet Fix:绕过 SafetyNet 检测
- Systemless Hosts:广告屏蔽(配合 AdAway)
- LSPosed:Xposed 框架(Android 8+)
### 去除网络受限提示
bash adb shell settings put global captive_portal_server www.google.cn adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204 adb shell settings put global captive_portal_mode 0
### Fastboot 进阶操作
bash
fastboot flashing unlock_critical
fastboot getvar current-slot
fastboot set_active a
./flash-all.sh # 保留数据 ./flash-all.sh -w # 清除数据
fastboot getvar all
---
## 十七、加密货币入门
> 本节仅提供技术参考。加密货币投资有风险,请自行判断。
### 钱包
**浏览器钱包:** [MetaMask](https://metamask.io/)(以太坊生态最常用)、[Rabby](https://rabby.io/)(用户体验更好)。
**桌面钱包:**
bash yay -S exodus # Exodus(多币种,界面友好) sudo pacman -S electrum # Electrum(比特币轻钱包) yay -S monero-gui # Monero 官方钱包
**硬件冷钱包**(更安全,推荐大额资产):Ledger、Trezor、OneKey。
### 行情查看
bash yay -S coingecko # CoinGecko 终端行情
### 挖矿
bash
sudo pacman -S cuda
yay -S xmrig
yay -S ethminer
使用 supervisor 实现自动重启:
bash sudo pacman -S supervisor sudo systemctl enable --now supervisord.service
### 防火墙
bash sudo pacman -S ufw sudo ufw default deny sudo ufw allow ssh sudo ufw enable
### 区块链开发工具
bash yay -S foundry-bin # Foundry(以太坊开发框架) sudo pacman -S solc # Solidity 编译器(或 yay -S solidity) sudo pacman -S nodejs npm # Hardhat/Truffle 需要 Node.js
---
## 十八、直播与多媒体制作
### 直播推流
bash sudo pacman -S obs-studio # OBS Studio
yay -S obs-studio-browser
**OBS 配置要点:**
- **编码器**:NVIDIA 选 NVENC(`nvenc_h264`),AMD 选 AMF(`h264_amf`),Intel 选 QSV(`qsv_h264`),否则用 `x264`
- **录像格式**:推荐 MKV(崩溃不损坏),录制后可在 OBS 中自动转封装为 MP4
- **音频**:配合 PipeWire 创建虚拟输出设备,实现应用音频分流
- **虚拟摄像头**:安装 `sudo pacman -S v4l2loopback-dkms`,OBS → 启动虚拟摄像机
**直播推流插件:**
bash yay -S obs-vkcapture # Vulkan/OpenGL 游戏捕获(比桌面捕获更高效) yay -S obs-pipewire-audio-capture # PipeWire 音频捕获
### 视频剪辑
bash sudo pacman -S kdenlive # KDE 视频编辑器(推荐,功能全面) sudo pacman -S shotcut # Shotcut(跨平台) yay -S davinci-resolve # DaVinci Resolve(专业级,需要 NVIDIA 显卡) sudo pacman -S olive # Olive(开源非线性编辑器) sudo pacman -S mkvtoolnix-gui # MKV 工具(封装/分割/合并)
**DaVinci Resolve 安装注意事项:**
bash
sudo pacman -S libxml2 libpng libxcb opencl-nvidia # NVIDIA
### 图像处理
bash sudo pacman -S gimp # GIMP(图像编辑,类 Photoshop) sudo pacman -S krita # Krita(绘图/数位板,推荐画师) sudo pacman -S inkscape # Inkscape(矢量图,类 Illustrator)
**图像处理补充工具:**
bash sudo pacman -S imagemagick # 命令行图像处理(转换/裁剪/批处理) sudo pacman -S darktable # 专业 RAW 照片处理(类 Lightroom) sudo pacman -S rawtherapee # RAW 照片处理(另一选择) sudo pacman -S gthumb # 图片浏览/简单编辑 sudo pacman -S digikam # KDE 照片管理器
### 3D 建模与渲染
bash sudo pacman -S blender # Blender(全功能 3D 套件) sudo pacman -S freecad # FreeCAD(参数化 CAD) sudo pacman -S openscad # OpenSCAD(脚本建模) sudo pacman -S meshlab # MeshLab(3D 网格处理)
### 音频制作
bash sudo pacman -S lmms # LMMS(作曲/编曲,类 FL Studio) sudo pacman -S ardour # Ardour(专业录音/混音,类 Pro Tools) sudo pacman -S audacity # Audacity(音频编辑) sudo pacman -S musescore # MuseScore(制谱软件)
**专业音频(JACK/PipeWire 路由):**
bash
sudo pacman -S qpwgraph # PipeWire 版 Patchbay sudo pacman -S carla # Carla(音频插件宿主) sudo pacman -S guitarix # 吉他效果器 sudo pacman -S hydrogen # 鼓机 sudo pacman -S helm-synth # 合成器
### 动画制作
bash sudo pacman -S synfigstudio # 2D 矢量动画 sudo pacman -S blender # 3D 动画(含 Grease Pencil 2D 动画) sudo pacman -S opentoonz # 2D 动画(吉卜力工作室使用)
---
## 十九、编程软件
### 编辑器
**GUI 编辑器/IDE:**
bash sudo pacman -S code # OSS Code(开源版 VS Code) yay -S vscodium-bin # VSCodium(社区版,去除遥测) yay -S visual-studio-code-bin # 官方 VS Code(含微软扩展市场) sudo pacman -S intellij-idea-community-edition # IntelliJ IDEA sudo pacman -S pycharm-community-edition # PyCharm sudo pacman -S qtcreator # Qt Creator(C++/Qt 开发) sudo pacman -S android-studio # Android Studio sudo pacman -S eclipse-java # Eclipse
**终端编辑器:**
bash sudo pacman -S neovim # Neovim(Vim 增强版,推荐) sudo pacman -S vim # Vim sudo pacman -S helix # Helix(类 Kakoune,内置 LSP) sudo pacman -S emacs # Emacs sudo pacman -S micro # Micro(类 Nano,现代快捷键)
**Neovim 快速上手:**
bash
git clone https://github.com/folke/lazy.nvim.git \ ~/.local/share/nvim/lazy/lazy.nvim
git clone https://github.com/LazyVim/starter ~/.config/nvim
### 终端/Shell 增强
bash
sudo pacman -S alacritty # GPU 加速终端 sudo pacman -S kitty # GPU 加速,支持图片显示 sudo pacman -S wezterm # GPU 加速,Lua 配置 sudo pacman -S foot # Wayland 原生终端
sudo pacman -S zsh zsh-completions zsh-syntax-highlighting zsh-autosuggestions sudo pacman -S fzf # 模糊搜索(Ctrl+R 历史搜索) sudo pacman -S ripgrep # 高速文本搜索(grep 替代) sudo pacman -S fd # 高速文件查找(find 替代) sudo pacman -S bat # 语法高亮 cat sudo pacman -S eza # 现代 ls(exa 的继任者) sudo pacman -S zoxide # 智能目录跳转(cd 替代) sudo pacman -S delta # 语法高亮 diff(git diff 美化) sudo pacman -S starship # Shell 提示符美化 sudo pacman -S tmux # 终端复用器
### 版本控制
bash sudo pacman -S git # Git sudo pacman -S lazygit # 终端 Git TUI sudo pacman -S github-cli # GitHub CLI(gh) sudo pacman -S git-lfs # Git LFS(大文件支持) sudo pacman -S meld # 图形化 diff/merge 工具
git config --global user.name "Your Name" git config --global user.email "your@email.com" git config --global init.defaultBranch main
### 数据库工具
bash sudo pacman -S dbeaver # 通用数据库管理(推荐) sudo pacman -S mysql-workbench # MySQL Workbench sudo pacman -S pgadmin4 # PostgreSQL 管理 sudo pacman -S sqlitebrowser # SQLite 浏览器
sudo pacman -S mariadb-clients # MySQL/MariaDB CLI sudo pacman -S postgresql-client # PostgreSQL CLI sudo pacman -S redis # Redis 服务器+CLI sudo pacman -S mongodb-bin # MongoDB(AUR)
### 开发环境管理
**Python:**
bash sudo pacman -S python python-pip python-virtualenv python-poetry
yay -S pyenv
**Node.js:**
bash sudo pacman -S nodejs npm
yay -S fnm fnm install --lts
**Rust:**
bash
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
sudo pacman -S rustup && rustup default stable
**Go:**
bash sudo pacman -S go
**JDK 版本管理:**
bash sudo pacman -S jdk-openjdk # 最新 OpenJDK sudo pacman -S jdk17-openjdk # JDK 17 LTS sudo pacman -S jdk21-openjdk # JDK 21 LTS
**Docker 开发环境:** 参见 [二十、虚拟化](#二十虚拟化)。
### API 调试与测试
bash sudo pacman -S postman-bin # Postman(AUR) sudo pacman -S insomnia # Insomnia(开源替代) sudo pacman -S httpie # HTTPie(命令行 API 客户端)
### 浏览器
bash sudo pacman -S firefox chromium brave # 多款浏览器可选 sudo pacman -S firefox-developer-edition # Firefox 开发者版 yay -S google-chrome # Google Chrome
**浏览器开发者工具:**
- React DevTools:`yay -S react-devtools`
- 或通过浏览器扩展商店安装框架专属 DevTools
### 机器学习与数据科学
bash
sudo pacman -S jupyter-notebook jupyterlab sudo pacman -S python-numpy python-pandas python-scipy python-matplotlib sudo pacman -S python-scikit-learn python-seaborn python-plotly
sudo pacman -S tensorflow-cuda # TensorFlow(NVIDIA GPU) sudo pacman -S python-pytorch-cuda # PyTorch(NVIDIA GPU)
curl -fsSL https://ollama.com/install.sh | sh
ollama pull llama3 ollama run llama3
### 逆向工程
bash sudo pacman -S ghidra # Ghidra(NSA 开源,类 IDA Pro) sudo pacman -S rizin # Rizin(radare2 继任者) sudo pacman -S gdb # GNU Debugger sudo pacman -S strace ltrace # 系统调用/库调用跟踪 sudo pacman -S bless # 十六进制编辑器(GUI) sudo pacman -S hexedit # 十六进制编辑器(终端) sudo pacman -S binwalk # 固件分析 sudo pacman -S checksec # 二进制安全检测
### 科学计算
bash sudo pacman -S sagemath # SageMath(数学软件,MATLAB 替代) sudo pacman -S octave # GNU Octave(MATLAB 兼容) sudo pacman -S julia # Julia 语言(科学计算) sudo pacman -S r # R 语言(统计分析) sudo pacman -S gnuplot # 命令行绘图
### CI/CD 与 DevOps
bash sudo pacman -S docker docker-compose # Docker sudo pacman -S ansible # Ansible sudo pacman -S terraform # Terraform yay -S act # 本地运行 GitHub Actions sudo pacman -S kubectl # Kubernetes CLI yay -S minikube # 本地 Kubernetes
---
## 二十、虚拟化
### 1. Docker
**安装 Docker:**
bash sudo pacman -S docker docker-compose sudo systemctl enable --now docker
**将用户加入 docker 组(免 sudo 执行):**
bash sudo usermod -aG docker $USER
**基本使用:**
bash
docker pull ubuntu:latest docker pull nginx:alpine
docker run -it --rm ubuntu bash # 交互式运行 docker run -d --name web -p 8080:80 nginx # 后台运行 web 服务器
docker ps # 运行中的容器 docker ps -a # 所有容器 docker stop container_name docker start container_name docker exec -it container_name bash # 进入运行中的容器
docker images docker rmi image_name docker system prune # 清理未使用的资源
**Docker Compose:**
yaml
version: '3.8' services: web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
volumes: pgdata:
bash docker compose up -d # 启动所有服务 docker compose down # 停止并删除 docker compose logs -f # 查看日志
**Docker 配置优化:**
存储驱动推荐 `overlay2`(默认):
bash sudo docker info | grep "Storage Driver"
配置镜像加速(`/etc/docker/daemon.json`):
json { "registry-mirrors": ["https://docker.m.daocloud.io"], "storage-driver": "overlay2", "log-driver": "json-file", "log-opts": {
"max-size": "10m",
"max-file": "3"
} }
**Rootless 模式(安全推荐,无需 root 权限):**
bash
sudo pacman -S docker-rootless-extras
dockerd-rootless-setuptool.sh install systemctl --user enable --now docker
**NVIDIA GPU 加速(Docker 内使用 GPU):**
bash
yay -S nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker
docker run --gpus all -it --rm nvidia/cuda:12.0-base nvidia-smi
**常见故障排除:**
bash
journalctl -u docker
docker logs container_name
sudo vim /etc/docker/daemon.json
docker system prune -a --volumes # 清理所有未使用的资源
### 2. KVM/QEMU 虚拟机
**检查 CPU 是否支持虚拟化:**
bash LC_ALL=C lscpu | grep Virtualization
**安装 KVM/QEMU 虚拟化栈:**
bash sudo pacman -S virt-manager qemu-desktop libvirt edk2-ovmf dnsmasq iptables-nft
**启用并启动服务:**
bash sudo systemctl enable --now libvirtd
sudo usermod -aG libvirt $USER
**创建虚拟机:**
- 打开 `virt-manager`(虚拟机管理器)
- 文件 → 新建虚拟机
- 选择 ISO 镜像或网络安装
- 分配 CPU、内存、磁盘空间
- 完成安装
**性能优化:**
bash
sudo virsh edit vm-name
sudo systemctl enable --now ksmtuned
**共享剪贴板与文件夹:**
- 安装 SPICE 工具:`sudo pacman -S spice-vdagent`
- 在虚拟机中安装 `spice-vdagent` 后重启
- 共享文件夹通过 virt-manager → 详情 → 内存 → 勾选"启用共享内存"
**网络模式:**
| 模式 | 说明 | 使用场景 |
|------|------|----------|
| NAT(默认) | 虚拟机通过主机 NAT 上网 | 普通上网需求 |
| 桥接(Bridge) | 虚拟机与主机同网段 | 需要外部直接访问 |
| 隔离(Isolated) | 虚拟机之间可通信,不能上网 | 测试环境 |
配置桥接网络:
bash
sudo pacman -S bridge-utils
**UEFI 引导(OVMF):**
bash
**QEMU 命令行直接启动(轻量级):**
bash qemu-system-x86_64 -enable-kvm -m 2G -cpu host \ -drive file=/path/to/disk.img,format=raw \ -cdrom /path/to/install.iso \ -vga virtio -display gtk
### 3. Podman(Docker 替代)
bash
sudo pacman -S podman podman-compose
alias docker=podman
podman run -it --rm ubuntu bash
podman generate systemd --name mycontainer > ~/.config/systemd/user/container-mycontainer.service systemctl --user enable --now container-mycontainer
**Podman 与 Docker 差异:**
| 特性 | Docker | Podman |
|------|--------|--------|
| 守护进程 | 需要 dockerd 后台运行 | 无守护进程(fork/exec 模型) |
| Rootless | 需要额外配置 | 默认支持 |
| 兼容性 | Docker Compose v2 | podman-compose(基本兼容) |
| 安全 | 默认 root | 默认 rootless,更安全 |
| systemd 集成 | 手动 | 内置 `podman generate systemd` |
### 4. Distrobox(容器化开发环境)
在容器中运行完整的 Linux 发行版,无缝集成到宿主机:
bash sudo pacman -S distrobox
**基本使用:**
bash
distrobox create --name ubuntu-box --image ubuntu:latest
distrobox enter ubuntu-box
distrobox enter ubuntu-box -- neovim ~/project/main.py
distrobox list
distrobox stop ubuntu-box
distrobox rm ubuntu-box
**使用场景:**
- **隔离开发环境**:不同项目使用不同的 Linux 发行版和依赖
- **测试跨发行版兼容性**:同时使用 Fedora/Ubuntu/Arch 容器
- **保留旧版本工具链**:在容器中运行旧版 Python/Node/GCC
- **安全的实验环境**:在容器内测试不受信任的软件
- **无缝集成**:容器内的文件可通过 `~` 直接访问宿主机家目录
### 5. Waydroid(Android 模拟)
基于容器的 Android 系统运行方案,在 Linux 上运行完整 Android:
bash yay -S waydroid
**前提条件:**
- 需要 Wayland 会话管理器(KDE Wayland / GNOME Wayland / Hyprland)
- CPU 支持必要的指令集(检查:`cat /proc/cpuinfo | grep -E 'sse4|aes'`)
**初始化与启动:**
bash
sudo waydroid init
sudo systemctl enable --now waydroid-container
waydroid show-full-ui
**基本操作:**
bash
waydroid install app.apk
waydroid app launch com.example.app
waydroid shell
waydroid prop set persist.waydroid.width 1080 waydroid prop set persist.waydroid.height 1920
**常见问题:**
- NVIDIA 显卡:Waydroid 对 NVIDIA 支持有限,可尝试软件渲染
- X11 用户:通过 `cage` 嵌套 Wayland 运行
- 需要 Google 服务:使用 `waydroid script install libndk` 安装
> **提示**:Distrobox 适合开发环境隔离,Waydroid 适合 Android 应用测试。两者都比传统虚拟机更轻量。
---
## 附录
### A. 制作 Windows 启动盘(Linux 下)
bash
sudo parted /dev/sdx mktable gpt sudo cfdisk /dev/sdx # 创建分区,类型 Microsoft basic data sudo mkfs.vfat /dev/sdxn
sudo mount -o loop windows.iso /mnt cp -a /mnt/* /path/to/usb_mount
sudo pacman -S wimlib sudo wimlib-imagex optimize install.wim --solid
sudo cp -r /path/to/files/* /mnt/usb
### B. 制作自定义 Arch Linux Live USB
bash sudo pacman -S archiso sudo cp -r /usr/share/archiso/configs/releng /path/to/my-archlive
sudo mkarchiso -v -w /mnt/work -o /mnt/out /path/to/my-archlive
### C. 硬件信息检测
bash sudo pacman -S smartmontools # 磁盘健康检测 sudo smartctl -A /dev/sda # 查看硬盘 SMART 信息 yay -S cpu-x # CPU 详细信息 yay -S gpu-viewer # GPU 详细信息 sudo pacman -S dmidecode # 完整硬件信息 sudo dmidecode # 查看 BIOS、内存等
### D. 系统服务管理 cheat sheet
| 命令 | 作用 |
|------|------|
| `systemctl start service` | 启动服务 |
| `systemctl stop service` | 停止服务 |
| `systemctl restart service` | 重启服务 |
| `systemctl status service` | 查看状态 |
| `systemctl enable service` | 开机自启 |
| `systemctl disable service` | 禁用开机自启 |
| `systemctl enable --now service` | 开机自启+立即启动 |
| `journalctl -xe` | 查看错误日志 |
| `journalctl -p5` | 查看优先级为 notice 及以上的日志 |
### E. 重要配置文件路径
| 文件 | 用途 |
|------|------|
| `/etc/pacman.conf` | Pacman 配置 |
| `/etc/pacman.d/mirrorlist` | 镜像源列表 |
| `/etc/fstab` | 磁盘分区挂载配置 |
| `/etc/default/grub` | GRUB 引导配置 |
| `/etc/hostname` | 主机名 |
| `/etc/hosts` | 主机名解析 |
| `/etc/locale.gen` | 本地化配置 |
| `/etc/locale.conf` | 语言环境变量 |
| `/etc/systemd/system.conf` | systemd 配置 |
| `/etc/resolv.conf` | DNS 配置 |
| `/etc/environment` | 全局环境变量 |
| `~/.bashrc` | Bash 配置 |
| `~/.config/plasma-localerc` | KDE 本地化配置 |
### F. ZFS 文件系统参考
ZFS 是一个高级文件系统与卷管理器,提供数据校验、压缩、快照、RAID-Z 等特性。
> **注意**:由于 ZFS 的 CDDL 许可证与 Linux 内核的 GPL 不兼容,ZFS 无法直接包含在 Linux 内核中。Arch Linux 通过 DKMS 或预编译模块提供支持。
**安装 ZFS:**
bash
yay -S zfs-dkms zfs-utils
yay -S zfs-linux zfs-utils
sudo modprobe zfs
**创建 ZFS 池与数据集:**
bash
sudo zpool create -f tank mirror /dev/sdb /dev/sdc
sudo zfs create tank/data sudo zfs create tank/data/downloads
sudo zfs set compression=lz4 tank/data
sudo zfs set mountpoint=/mnt/data tank/data
sudo zfs snapshot tank/data@20240101
sudo zfs rollback tank/data@20240101
sudo zpool status sudo zfs list -t snapshot
**ZFS 常用操作:**
bash
sudo zpool replace tank /dev/sdb /dev/sdd
sudo zpool export tank sudo zpool import tank
sudo zfs send tank/data@20240101 | ssh backup-server sudo zfs receive backup-tank/data
sudo zpool scrub tank sudo zpool status -v
> **ZFS 内存需求**:建议至少 8GB 内存,使用 dedup(去重)功能时至少 32GB。
### G. systemd-boot 管理命令
bash
bootctl list
bootctl status
bootctl update
bootctl set-oneshot arch-lts.conf
systemctl reboot --firmware-setup
### H. 更新系统的最佳实践
bash
sudo pacman -Syu
yay -Syu
sudo pacman -Rns $(pacman -Qtdq)
paccache -r
rm -rf ~/.cache/yay
**更新前务必:**
1. 查看 [Arch Linux News](https://archlinux.org/news/) — 重大变更会提前公告
2. 确保至少有一个备用内核(`linux-lts`)
3. 如果使用 Btrfs,创建更新前快照
4. 对于 NVIDIA 用户,确认 `nvidia` 与 `linux` 内核版本兼容
**更新后:**
1. 检查 `.pacnew` 文件:`sudo pacdiff`
2. 检查是否有失败的服务:`systemctl --failed`
3. 检查内核模块是否正常加载:`lsmod | head`
4. 如果更新了内核或显卡驱动,重启系统
**Pacman 回退(降级包):**
bash
yay -S downgrade sudo downgrade package_name
ls -lt /var/cache/pacman/pkg/ | grep package_name sudo pacman -U /var/cache/pacman/pkg/package-old.pkg.tar.zst
```
Arch 之道:Keep It Simple, Stupid.
Arch Linux 将简洁定义为:避免任何不必要的添加、修改和复杂增加。你可以自己决定使用哪种桌面环境、安装哪些组件和服务。这种精细化的控制能够赋予你一个精简的操作系统,让你自由构建属于自己的系统。
本文档基于 ArchLinuxStudio/ArchLinuxTutorial、nakanomikuorg/arch-guide 及 Arch Wiki CN 整理,遵循 CC BY-SA 4.0 协议。