# Arch Linux 手册 > **基于 ArchLinuxStudio/ArchLinuxTutorial、nakanomikuorg/arch-guide 及 Arch Wiki CN 综合整理** > > 本文档旨在提供从零开始安装、配置和使用 Arch Linux 的完整指南,涵盖新手入门到进阶使用全流程。 --- ## 目录 - [一、安装前的准备](#一安装前的准备) - [二、基础安装](#二基础安装) - [三、桌面环境与常用应用](#三桌面环境与常用应用) - [四、显卡驱动](#四显卡驱动) - [五、音频系统](#五音频系统) - [六、魔法上网](#六魔法上网) - [七、透明代理(全局代理)](#七透明代理全局代理) - [八、Linux 日常操作与基础知识](#八linux-日常操作与基础知识) - [九、系统维护与安全](#九系统维护与安全) - [十、系统美化](#十系统美化) - [十一、性能优化与功耗控制](#十一性能优化与功耗控制) - [十二、常见问题排除与解决](#十二常见问题排除与解决) - [十三、办公日常](#十三办公日常) - [十四、视频影音](#十四视频影音) - [十五、娱乐软件](#十五娱乐软件) - [十六、安卓刷机](#十六安卓刷机) - [十七、加密货币入门](#十七加密货币入门) - [十八、直播与多媒体制作](#十八直播与多媒体制作) - [十九、编程软件](#十九编程软件) - [二十、虚拟化](#二十虚拟化) - [附录](#附录) --- ## 一、安装前的准备 ### 0. 终端编辑器 vim 的使用 在安装 Arch Linux 的过程中,需要使用到 vim 编辑器,基本操作如下: ```bash vim 1.txt # 创建并编辑名为 1.txt 的文件 ``` 进入 vim 后,处于`命令模式`,输入 `a` 进入`编辑模式`,编辑完成后按 `Esc` 回到`命令模式`。 ```bash :wq # 保存退出 :q! # 不保存强制退出 dd # 删除一行 2dd # 删除两行 gg # 回到文本第一行 shift+g # 转到文本最后一行 /xxx # 在文中搜索内容 'xxx',按 n 转到下一个 ?xxx # 反向搜索 ``` 需要完整教程请在终端执行 `vimtutor`。 ### 1. 确认是否适合安装 Arch Linux 安装 Arch Linux 前,请确认: - **具有一定的 Linux 基础**:了解基本的命令行操作、文件系统结构。缺乏基础建议先阅读《Linux 就该这么学》等入门书籍 - **愿意花费时间折腾系统**:安装需要在命令行手动输入至少 30 多条命令,后续配置也需要时间 - **能冷静应对问题**:滚动更新可能遇到系统崩溃,需要排查而非简单重装 ### 2. 确保网络环境 - 有线网络:插入网线,DHCP 自动获取 IP - 无线网络:提前将 WiFi 名称改为英文(安装环境无法显示中文) - 确保无线网卡硬件开关处于打开状态 ### 3. 下载安装镜像 从 [archlinux.org/download](https://archlinux.org/download/) 下载最新 ISO,推荐使用磁力链接下载。 **国内镜像站:** - [中科大镜像站](http://mirrors.ustc.edu.cn/) - [清华镜像站](https://mirrors.tuna.tsinghua.edu.cn/) - [华为镜像站](https://repo.huaweicloud.com/archlinux/) - [兰大镜像站](https://mirror.lzu.edu.cn/archlinux/) #### 验证 ISO 完整性(重要) 下载后务必验证文件完整性,防止下载损坏或被篡改: **方法一:PGP 签名验证(推荐)** ```bash # 下载 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 时备用)** ```bash # 下载对应的 SHA256 文件 # 计算本地文件的哈希值 sha256sum archlinux-YYYY.MM.DD-x86_64.iso # 与官网提供的 SHA-256 值逐字符对比 ``` > PGP 验证比 SHA-256 更安全——SHA-256 仅防传输损坏,PGP 还能防镜像站被篡改后提供伪造的校验值。 ### 4. 刻录启动 U 盘 准备一个 2G 以上的 U 盘。 **Linux 下使用 dd 命令:** ```bash sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdx status=progress oflag=sync ``` **推荐使用 Ventoy(跨平台):** Ventoy 无需反复格式化 U 盘,拷贝 ISO 即可启动。支持多系统镜像。 ```bash # Arch Linux 安装 sudo pacman -S ventoy-bin sudo ventoy -i -g /dev/sdx # 安装 Ventoy 到 U 盘 # 然后将 ISO 文件拷贝到 U 盘即可 ``` **Windows 下推荐:** Ventoy、Rufus、balenaEtcher ### 5. 进入 BIOS 设置 1. 插入 U 盘开机,按 F2/F8/F10/DEL 进入 BIOS 2. **关闭 Secure Boot**:在 Security 选项卡中找到并禁用 - 部分主板(如华硕)在 Boot → Secure Boot → OS Type → Other OS - 部分主板同时需要清除 Secure Boot 密钥(Restore Factory Keys 或 Reset to Setup Mode) - Arch Linux 虽然支持 Secure Boot(通过 shim/preloader 或自签名),但首次安装建议**先关闭** 3. **启动模式设为 UEFI**(而非 Legacy/CSM) - 若开启 CSM(Compatibility Support Module),确保引导设备选 UEFI 优先 - 关闭 CSM/Legacy 可避免兼容性问题 4. **将 U 盘启动顺序调至首位** - 部分主板按 F11/F12 可在开机时弹出启动菜单,比改顺序更方便 5. 保存并退出(通常按 F10) > **Secure Boot 说明**: > - 关闭 Secure Boot 是**最稳妥**的做法,绝大多数用户无需开启 > - 如需保持开启,可以使用 `sbctl`(推荐)或 `shim` 方案在安装完成后配置 > - 某些双显卡笔记本必须在 BIOS 中关闭 Secure Boot 才能正常加载 NVIDIA 驱动 --- ## 二、基础安装 ### 0. 禁用 reflector(可选) reflector 会自动选择镜像源,但结果可能不准确: ```bash systemctl stop reflector.service ``` > 2025 年后的镜像已默认禁用 reflector,无需手动操作。 ### 1. 确认引导模式 **检查是否为 UEFI 模式:** ```bash ls /sys/firmware/efi/efivars ``` 若输出一堆 efi 变量,则说明已在 UEFI 模式。若提示目录不存在,则可能为 Legacy BIOS 模式。 **确认 UEFI 位宽(64 位 vs 32 位):** ```bash 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 页面。 ### 2. 连接网络 **无线网络(iwctl):** ```bash iwctl device list # 列出设备名 station wlan0 scan # 扫描网络 station wlan0 get-networks # 列出网络 station wlan0 connect YOUR-WIFI-NAME # 连接 exit ``` **有线网络:** 插入网线即可(DHCP)。 **故障排查:** ```bash ip link # 列出网络接口 ip link set wlan0 up # 激活网卡 rfkill unblock wifi # 解锁无线网卡 ``` ### 3. 测试网络连通性 ```bash ping www.gnu.org ``` ### 4. 更新系统时钟 ```bash timedatectl set-ntp true timedatectl status ``` ### 5. 分区 **分区表选择:** - **UEFI 系统 → 必须使用 GPT 分区表**(推荐所有 2012 年后设备) - **Legacy BIOS 系统 → 可使用 MBR 或 GPT**(GRUB 在 GPT+BIOS 需要额外 `BIOS boot` 分区) - **双系统(与 Windows 共存)→ 保持原有的分区表类型**,Windows 10+ 默认使用 GPT **推荐分区方案(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(交互式,推荐新手)** ```bash lsblk # 查看磁盘布局 cfdisk /dev/sdx # 选择 GPT 标签类型 ``` 在 cfdisk 图形界面中: 1. 选择分区表类型为 **gpt**(或 dos 用于 MBR) 2. `New` → 输入大小 → 选择类型为 `EFI System`(EFI 分区) 3. `New` → 输入大小 → `Linux filesystem`(根分区) 4. `New` → 剩余全部 → `Linux filesystem`(home 分区) 5. `Write` → 输入 `yes` 确认 → `Quit` **方法二:使用 parted(命令行)** ```bash 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 扇区硬盘性能):** ```bash fdisk -l /dev/sdx # 检查 Start 列值是否能被 4096 整除 ``` > **双系统特别说明**:若与 Windows 共存,请勿格式化原有的 EFI 分区。Arch 会共用该分区中的文件夹。请确保 EFI 分区 ≥ 512 MiB(Windows 默认只有 100 MiB,可能不够用,可考虑在 Windows 中用 DiskGenius 扩容)。 ### 6. 格式化 ```bash 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 支持子卷快照、透明压缩、校验和等高级功能,以下为安装时的创建步骤: ```bash 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**:更成熟稳定,极端故障恢复工具更完善 > - **两者日常使用无明显性能差异** ### 7. 挂载 **传统 ext4 方式:** ```bash 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 方式:** ```bash 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 子卷推荐布局 Btrfs 建议按以下结构划分子卷,便于快照管理: | 子卷 | 挂载点 | 说明 | |------|--------|------| | `@` | `/` | 根文件系统(需要快照的路径) | | `@home` | `/home` | 用户数据 | | `@cache` | `/var/cache` | 包缓存(排除在快照外节省空间) | | `@log` | `/var/log` | 日志(排除在快照外) | | `@tmp` | `/tmp` | 临时文件 | 完整创建示例: ```bash # 创建子卷 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`(改进的空间缓存) ### 8. 选择镜像源 ```bash 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 和软件包列表。如需隐私保护,建议使用非威权国家的镜像源。 ### 9. 安装系统 **基础系统包(必须):** ```bash 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 模块需要) **核心工具包(推荐):** ```bash pacstrap /mnt vim sudo bash-completion networkmanager ``` - 不安装 `dhcpcd` 和 `iwd`,改用 `NetworkManager`(桌面环境更方便) - `iwd` 可后续按需安装 **Btrfs 用户额外安装:** ```bash pacstrap /mnt btrfs-progs ``` **可选内核替代方案:** | 内核 | 适用场景 | |------|----------| | `linux` | 通用,功能最全 | | `linux-lts` | 稳定优先,兼容性好,推荐服务器 | | `linux-zen` | 桌面优化,响应性更好 | | `linux-hardened` | 安全加固,有额外性能开销 | > 多内核可同时安装,GRUB 启动时选择。建议至少安装 `linux` + `linux-lts` 作为备用。 ### 10. 生成 fstab ```bash genfstab -U /mnt >> /mnt/etc/fstab cat /mnt/etc/fstab # 复查 ``` ### 11. Chroot 进入新系统 ```bash arch-chroot /mnt ``` ### 12. 时区设置 ```bash ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime hwclock --systohc ``` ### 13. 本地化(Locale) ```bash 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 乱码。中文在桌面环境的登录管理器中选择即可。 ### 14. 主机名 ```bash echo 'myarch' > /etc/hostname # 替换为你的主机名 vim /etc/hosts ``` 添加内容: ``` 127.0.0.1 localhost ::1 localhost 127.0.1.1 myarch ``` ### 15. 设置 root 密码 ```bash passwd root ``` ### 16. 安装微码 ```bash pacman -S intel-ucode # Intel CPU pacman -S amd-ucode # AMD CPU ``` ### 17. 安装引导程序 #### 选项 A:GRUB(通用,推荐新手) GRUB 功能最全面,支持 UEFI + Legacy BIOS、双系统检测、主题美化: ```bash pacman -S grub efibootmgr os-prober # os-prober 用于检测双系统 ``` **安装到 EFI:** ```bash # 先确认 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`:** ```bash vim /etc/default/grub ``` 常用配置调整: ```conf GRUB_CMDLINE_LINUX_DEFAULT="loglevel=3 nowatchdog" # 去掉 quiet 可以看到详细启动日志 # loglevel=3(仅警告以上),nowatchdog(禁用看门狗,加速开关机) # 或 loglevel=5(信息级别),方便排查启动问题 # 双系统用户添加: GRUB_DISABLE_OS_PROBER=false ``` **生成 GRUB 配置:** ```bash grub-mkconfig -o /boot/grub/grub.cfg ``` #### 选项 B:systemd-boot(简单轻量,仅 UEFI) 如果只用 Arch Linux 单系统,systemd-boot 是更简洁的选择: ```bash # 确认 EFI 分区挂载在 /boot bootctl install ``` 创建引导条目 `/boot/loader/entries/arch.conf`: ```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`: ```conf default arch.conf timeout 4 console-mode max editor yes ``` #### 选项 C:EFISTUB(最直接,无引导菜单) 直接将内核作为 EFI 可执行文件启动(需要 UEFI 支持),通过 `efibootmgr` 注册: ```bash efibootmgr --create --disk /dev/sdX --part 1 --label "Arch Linux" \ --loader /vmlinuz-linux --unicode 'root=PARTUUID=... rw initrd=\initramfs-linux.img' ``` 适合不希望看到引导菜单、开机直达系统的用户。按 `F12` 等快捷键可进入主板启动菜单选择其他系统。 #### 选项 D:Unified Kernel Image (UKI)(推荐进阶用户) UKI 将内核、initramfs、微码、内核参数合并为**单一 EFI 可执行文件**,直接由 UEFI 固件加载。优势: - 更快的启动速度(跳过引导加载程序) - 更好的安全性(单一签名文件,支持 Secure Boot 验证) - 更简洁(无需 GRUB/systemd-boot 配置文件) **使用 mkinitcpio 生成 UKI:** 编辑 `/etc/mkinitcpio.conf`,确保包含微码 hook: ```bash HOOKS=(base systemd autodetect microcode modconf kms block filesystems keyboard fsck) ``` 创建 UKI 输出目录并编辑 `/etc/mkinitcpio.d/linux.preset`: ```bash sudo mkdir -p /efi/EFI/Linux ``` 在 preset 文件末尾添加: ```bash # /etc/mkinitcpio.d/linux.preset default_uki="/efi/EFI/Linux/arch-linux.efi" fallback_uki="/efi/EFI/Linux/arch-linux-fallback.efi" ``` 生成 UKI: ```bash sudo mkinitcpio -P ``` **注册到 UEFI 启动菜单:** ```bash 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):** ```bash 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**(菜单选择最方便) ### 17.5 理解 initramfs 和 mkinitcpio **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 配置:** 标准桌面用户(无加密): ```bash HOOKS=(base udev autodetect microcode kms modconf block filesystems keyboard fsck) ``` LUKS 加密用户: ```bash HOOKS=(base udev autodetect microcode modconf block encrypt filesystems keyboard fsck) ``` UKI + LUKS 加密用户: ```bash HOOKS=(systemd autodetect microcode modconf block sd-encrypt filesystems keyboard fsck) ``` 查看当前配置: ```bash cat /etc/mkinitcpio.conf | grep HOOKS ``` 修改配置后重新生成: ```bash mkinitcpio -P # 重新生成所有内核的 initramfs mkinitcpio -p linux # 仅重新生成 linux 内核的 initramfs ``` > **注意**:自定义 `HOOKS` 后忘记运行 `mkinitcpio -P` 是导致重启后无法解密/挂载根分区的最常见原因之一。 ### 17.6 Secure Boot 配置(可选) 如果未在 BIOS 中关闭 Secure Boot,可以通过 `sbctl` 自行签名引导文件。 **安装与设置 sbctl:** ```bash # 重启进入新系统后 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 双系统 ``` **签名引导文件:** ```bash # 签名所有需要签名的文件 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`: ```ini [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 模块也需手动签名。 ### 18. 完成安装 ```bash exit # 退出 chroot 环境 umount -R /mnt # 卸载所有挂载 reboot # 重启 ``` 重启前**拔掉 U 盘**。 > 重启后,用 `root` 账户登录。首次启动可能提示 `timed out waiting for device`——这是正常的,稍等即可。 启动网络服务: ```bash systemctl enable --now NetworkManager ``` 验证网络: ```bash ping archlinux.org ``` > 如果安装时没有安装 NetworkManager,可以用 `systemctl enable --now dhcpcd` 替代。后续安装桌面环境时会自动切换。 #### Chroot 后操作顺序回顾 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` | ### 19. 进阶存储方案 #### A. Btrfs 管理命令(安装后) ```bash # 查看子卷列表 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 ``` #### B. LVM(逻辑卷管理) LVM 可在多个磁盘间灵活分配空间、动态调整大小。 **安装时设置 LVM:** ```bash # 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 日常管理:** ```bash # 扩展逻辑卷(在线扩容) 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 ``` #### C. dm-crypt / LUKS 全盘加密 **方案一:LUKS 加密根分区(最常用)** ```bash # 分区阶段创建加密分区 # 使用 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 后配置: ```bash # 编辑 /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(加密+灵活分区)** ```bash # 创建加密的 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 方案 ``` **密钥文件自动解锁(二阶段解锁):** ```bash # 创建密钥文件 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 ``` #### D. Swap 替代方案(避免使用传统 swap 分区) > **建议**:内存 ≥ 8GB 时,推荐 Zram(压缩内存)替代 swap 分区。休眠(hibernate)需要 swap 空间 ≥ 内存大小。 **对比总结:** | 方案 | 原理 | 适用场景 | 优点 | 缺点 | |------|------|----------|------|------| | Swap 分区 | 磁盘交换 | 任何情况 | 简单稳定 | 浪费磁盘空间,速度慢 | | Zram | 内存压缩 | 内存充足 | 速度快,无磁盘 IO | 不能休眠,占用内存 | | Zswap | 内核压缩缓存 | 任何情况 | 与 swap 文件配合 | 配置稍复杂 | | Swap 文件 | 文件交换 | ext4/Btrfs | 灵活调整大小 | Btrfs 配置稍复杂 | **Zram(内存压缩,推荐桌面/笔记本):** ```bash # 安装 zram-generator(自动创建压缩 swap,无需独立分区) pacman -S zram-generator # 配置文件 /etc/systemd/zram-generator.conf(默认即可) # [zram0] # zram-size = ram / 2 # 默认为内存的 50% ``` 启用后重启或: ```bash systemctl start systemd-zram-setup@zram0 swapon --show # 验证 zram 已启用 ``` > Zram 将一部分内存压缩后作为 swap 使用,压缩率通常 2-3:1。8G 内存设置 4G zram 实际约占用 1.3-2G 物理内存。 **Zswap(内核级压缩缓存):** ```bash # 通过内核参数启用(配合传统 swap 文件/分区使用) # 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX 中添加: zswap.enabled=1 zswap.compressor=zstd zswap.max_pool_percent=20 ``` **Swap 文件(Btrfs:需额外步骤):** ```bash # 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 ``` --- ## 三、桌面环境与常用应用 ### 1. 更新系统 ```bash pacman -Syyu ``` ### 2. 创建普通用户 ```bash useradd -m -G wheel -s /bin/bash yourusername passwd yourusername EDITOR=vim visudo # 取消注释:%wheel ALL=(ALL:ALL) ALL ``` ### 3. 开启 32 位支持与 archlinuxcn 源 编辑 `/etc/pacman.conf`: - 取消 `[multilib]` 节的注释 - 添加: ```conf [archlinuxcn] Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch ``` 更新并安装 keyring: ```bash pacman -Syyu pacman -S archlinuxcn-keyring yay ``` ### 4. 桌面环境选择指南 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 平铺)。 ### 5. 安装 KDE Plasma 桌面(推荐) ```bash # 安装 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)"。如需强制启用: ```bash sudo pacman -S plasma-wayland-session ``` ### 6. 安装其他桌面环境 **GNOME**(简洁现代风格): ```bash sudo pacman -S gnome gnome-tweaks sudo systemctl enable gdm # 登录管理器选择 GDM,会话选 "GNOME" # 注意:GNOME 默认使用 Xorg,可在 GDM 登录界面选择 "GNOME on Wayland" ``` **XFCE**(轻量传统风格): ```bash sudo pacman -S xfce4 xfce4-goodies lightdm lightdm-gtk-greeter sudo systemctl enable lightdm ``` **Cinnamon**(Windows 风格): ```bash sudo pacman -S cinnamon lightdm lightdm-gtk-greeter sudo systemctl enable lightdm ``` **i3 WM**(平铺窗口管理器): ```bash sudo pacman -S i3-wm i3status i3lock dmenu # 搭配显示管理器或使用 ~/.xinitrc ``` **Hyprland**(现代化 Wayland 平铺合成器): ```bash sudo pacman -S hyprland waybar wofi dunst # 参见 Hyprland Wiki 配置 ``` ### 7. 配置网络(桌面环境) ```bash sudo systemctl disable iwd sudo systemctl stop iwd sudo systemctl enable --now NetworkManager ``` ### 8. 安装基础功能包 ```bash # 声音固件 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 ``` ### 9. 设置 DNS ```bash sudo vim /etc/resolv.conf ``` 添加: ``` nameserver 8.8.8.8 nameserver 2001:4860:4860::8888 ``` 防止被覆盖: ```bash sudo chattr +i /etc/resolv.conf ``` ### 10. 设置系统为中文 系统设置 → 区域设置 → 语言,添加中文,注销重登即可。 ### 11. 安装输入法 Arch Linux 下推荐使用 **Fcitx5** 输入法框架(尤其是 KDE Plasma 用户),GTK 环境(GNOME)也可使用 **IBus**。 **安装 Fcitx5:** ```bash sudo pacman -S fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-material-color ``` **安装 IBus(GNOME 用户可选):** ```bash sudo pacman -S ibus ibus-libpinyin ``` **设置环境变量**(新建 `~/.config/environment.d/im.conf`): ```bash GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx XMODIFIERS=@im=fcitx SDL_IM_MODULE=fcitx GLFW_IM_MODULE=ibus ``` **Fcitx5 配置**: - 在 KDE 系统设置 → 区域设置 → 输入法,添加拼音输入法 - 或运行 `fcitx5-configtool` 图形化配置 - 点击右上角配置按钮可调整候选词数量(推荐 5-9 个) - **云拼音**:安装 `fcitx5-pinyin-zhwiki` 后,在输入法配置中启用云拼音 **Fcitx5 主题**: - 安装更多主题:`yay -S fcitx5-skin-material fcitx5-skin-nord` - 在 fcitx5-configtool → 附加组件 → 经典用户界面 → 主题 中切换 **常见快捷键**: | 操作 | 默认快捷键 | |------|-----------| | 切换输入法 | Ctrl + Space | | 中英文切换 | Shift(可配置)| | 翻页 | - / + 或 [ / ] | | 切换简体/繁体 | Ctrl + Shift + F | ### 12. 蓝牙(若有) ```bash sudo pacman -S bluez bluez-utils bluez-obex sudo systemctl enable --now bluetooth ``` ### 13. 打印支持(CUPS) ```bash # 安装 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`。 ### 14. 显示管理器使用说明 显示管理器(Display Manager)提供图形化登录界面。 | 显示管理器 | 推荐 DE | 特点 | |-----------|--------|------| | **SDDM** | KDE Plasma(默认)| Qt 界面,可定制主题 | | **GDM** | GNOME(默认)| GTK 界面,简洁 | | **LightDM** | XFCE / Cinnamon | 轻量,多 Greeter | 如需切换显示管理器: ```bash sudo systemctl disable sddm sudo systemctl enable gdm # 切换到 GDM ``` > 注意:**同一时间只能启用一个**显示管理器。切换前先 disable 当前的。 ### 15. 配置 Timeshift 快照 ```bash sudo pacman -S timeshift sudo systemctl enable --now cronie.service ``` 打开 Timeshift,按向导配置即可。推荐使用 Btrfs 模式(更快、更省空间)。 --- ## 四、显卡驱动 ### 0. 提前加载 KMS(Kernel Mode Setting) KMS 让内核在启动早期就初始化显卡,可避免启动过程中的分辨率切换闪烁,并加速 Plymouth 开机动画。 在 `/etc/mkinitcpio.conf` 的 `HOOKS` 中,将 `kms` 放在 `autodetect` 之后: ```bash 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 用户特别注意:** ```bash # /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: ```bash sudo mkinitcpio -P ``` ### 英特尔核芯显卡 ```bash sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel ``` > Intel HD 4000 及以上才支持 Vulkan。不建议安装 `xf86-video-intel`。 ### AMD 核芯显卡 先查架构(techpowerup.com),GCN3+ 架构使用 AMDGPU 驱动: ```bash sudo pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon ``` 老显卡(GCN2.0 及以下)使用 ATI 开源驱动。 ### NVIDIA 独立显卡 **较新型号:** ```bash sudo pacman -S nvidia nvidia-settings lib32-nvidia-utils ``` **老卡(GeForce 630-920):** ```bash yay -S nvidia-470xx-dkms nvidia-settings lib32-nvidia-470xx-utils linux-headers ``` **更老(GeForce 400-630):** ```bash yay -S nvidia-390xx-dkms nvidia-settings lib32-nvidia-390xx-utils linux-headers ``` ### 双显卡笔记本(NVIDIA Optimus) ```bash yay -S optimus-manager optimus-manager-qt sudo systemctl enable optimus-manager ``` 提供三种模式:仅独显、仅核显、hybrid 动态切换。 ```bash # 使用独显运行特定程序 sudo pacman -S nvidia-prime prime-run some_program ``` ### AMD 独显 安装与 AMD 核显相同。使用 `DRI_PRIME=1` 切换独显: ```bash DRI_PRIME=1 glmark2 # 测试独显性能 DRI_PRIME=1 steam steam://rungameid/570 # 用独显运行 Dota 2 ``` ### Wayland 补充说明 **Wayland 是新一代显示协议,逐步替代 X11。KDE Plasma 已默认使用 Wayland。** **Wayland 的优势:** - 更高的安全性(每个窗口隔离,不能截取其他窗口内容) - 更流畅的动画渲染 - 更好的高分屏(HiDPI)支持 - 更好的多显示器支持(各显示器独立刷新率) **NVIDIA 显卡在 Wayland 下:** - 确保使用 `nvidia-dkms` 驱动(非 dkms 版本也可) - 需要安装 `nvidia-utils` ≥ 545 版本以获得较好的 Wayland 支持 - 设置环境变量以解决 Electron 应用问题: ```bash # ~/.config/environment.d/wayland.conf KWIN_DRM_NO_AMS=1 # 禁用 KDE 的原子模式设置(NVIDIA 兼容) ELECTRON_OZONE_PLATFORM_HINT=wayland # Electron 应用使用 Wayland ``` - 在登录管理器(SDDM)选择 "Plasma (Wayland)" 会话 **Wayland 中可能失效的功能:** - 截图工具(Flameshot 在 Wayland 下需安装 `flameshot` 并配置) - 屏幕录制(OBS 需安装 `pipewire` 和 `xdg-desktop-portal`) - 全局快捷键需要应用支持 Wayland 协议 **Wayland 工具:** ```bash # 查看当前显示协议 echo $XDG_SESSION_TYPE # 截屏 sudo pacman -S grim slurp grim -g "$(slurp)" screenshot.png # 区域截图 # 屏幕录制 sudo pacman -S wf-recorder wf-recorder -f record.mp4 # 录屏 ``` --- ## 五、音频系统 ### 1. 概述 Arch Linux 音频系统主要有三个层次: - **ALSA** — 内核级音频驱动(底层),负责与硬件通信 - **PipeWire** — 新一代音频/视频服务(推荐,取代 PulseAudio) - **PulseAudio** — 传统音频服务(已逐步被 PipeWire 取代) **推荐使用 PipeWire**,因其低延迟、支持专业音频(JACK 兼容)、屏幕录制整合更好。 ### 2. 安装 PipeWire ```bash # 安装 PipeWire 核心组件 sudo pacman -S pipewire pipewire-alsa pipewire-pulse pipewire-jack # 安装会话管理(必需) sudo pacman -S wireplumber # 安装图形化音量控制 sudo pacman -S pavucontrol qt6-pipewire ``` ### 3. 启用 PipeWire ```bash # 如果之前使用了 PulseAudio,先停用 systemctl --user disable --now pulseaudio.service pulseaudio.socket # 启用 WirePlumber(PipeWire 会话管理器) systemctl --user enable --now wireplumber # 重启或重新登录后生效 ``` > PipeWire 默认会自动启动,无需手动 enable pipewire.service。 > 验证是否正常运行: > ```bash > 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 # GUI 控制 pavucontrol # PulseAudio 音量控制(兼容 PipeWire) ``` ### 5. 蓝牙音频(LDAC/aptX) ```bash # 安装蓝牙音频支持 sudo pacman -S bluez bluez-utils bluez-obex # 启用蓝牙服务(如果尚未启用) sudo systemctl enable --now bluetooth # 安装 LDAC/aptX 编解码器支持 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 # 安装 JACK 工具(可选) sudo pacman -S jack2 jack2-dbus # 使用 qjackctl 或 pw-jack 运行 JACK 应用 pw-jack your_audio_app # 专业路由工具 sudo pacman -S qpwgraph # PipeWire 版的路由矩阵 ``` ### 7. 音频故障排除 ```bash # 列出音频设备 pw-cli list-objects | grep -i node # 或 pactl list cards # 查看 PipeWire 日志 journalctl --user -xu pipewire journalctl --user -xu wireplumber # 检查 ALSA 设备 cat /proc/asound/cards aplay -l # 测试扬声器 speaker-test -t wav -c 2 # ALSA 强制声卡顺序(如有多个声卡冲突) # 创建 /etc/modprobe.d/alsa.conf: options snd slots=snd_hda_intel,snd_usb_audio ``` ### 8. 高质量音频配置(可选) ```bash # 禁用 ALSA 自动静音(解决耳机插孔无声音) sudo vim /etc/modprobe.d/alsa-base.conf options snd-hda-intel model=auto enable=yes # 安装音频均衡器 sudo pacman -S pulseeffects # PulseEffects(完整版) yay -S easyeffects # 新版均衡器(推荐) # easyeffects 支持:均衡器、压缩器、限制器、降噪等 ``` --- ## 六、魔法上网 > 本节涉及突破网络审查的内容,在需要访问被封锁的互联网资源时使用。**请遵守当地法律法规。** ### 节点准备 节点链接形如: ``` ss://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx vmess://xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` 可通过自建服务器或购买机场服务获取。 ### 安装 v2ray 和 v2rayA ```bash # 先安装 v2ray sudo pacman -S v2ray # 安装 v2rayA(推荐新手使用) 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 # 修改最后一行为本地代理地址:socks5 127.0.0.1 1089 proxychains4 command # 对单个命令使用代理 ``` ### 为什么不建议分流代理? 分流代理(国内直连、国外代理)容易泄露隐私。例如: - 国外网站嵌入百度统计,可关联真实 IP 与代理 IP - 恶意邮件嵌入国内资源图片,可获取真实 IP 建议使用全局代理(见下一章)。 --- ## 七、透明代理(全局代理) 透明代理使**系统所有流量**都通过代理,应用感知不到代理存在。 ### 使用 v2rayA 全局代理 v2rayA 的设置页面可直接开启全局代理,最简单的方式,推荐新手使用。 ### 使用 Qv2ray + cgproxy ```bash # 安装 cgproxy(AUR) 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 # 输出示例:-rw-r--r-- 1 user group 1024 May 1 10:00 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 # 设置更严格的默认权限 # umask 022 → 新建文件 644 (rw-r--r--),新建目录 755 (rwxr-xr-x) # umask 077 → 新建文件 600 (rw-------),新建目录 700 (rwx------) ``` ### 进程管理 ```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) 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 # 软链接(符号链接)——指向文件路径,类似 Windows 快捷方式 ln -s /path/to/target link_name # 创建软链接 # 软链接可跨文件系统,可指向目录,删除目标文件则链接失效 # 硬链接——多个文件名指向同一 inode(同一数据块) ln target link_name # 创建硬链接 # 硬链接只能在同文件系统内,不可指向目录 # 删除一个硬链接不影响其他硬链接,所有链接删除后才释放数据 # 查看 inode ls -li file # -i 显示 inode 编号 stat file # 更详细的文件信息 ``` > **实际应用**:软链接常用于管理配置文件版本、管理 dotfiles、创建快捷方式。例如 `~/.config/nvim` → `~/dotfiles/nvim`。 ### 文本处理基础 ```bash # grep — 文本搜索 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 — 流编辑器(文本替换) 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 — 文本分析工具 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 # 树形显示挂载点 # 自动挂载(/etc/fstab) # /etc/fstab 格式:设备 挂载点 文件系统 选项 dump pass # 示例:UUID=xxxx-xxxx /mnt/data ext4 defaults 0 2 ``` ### 常用终端命令(基础) ```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 # 静态 IP: # Address=192.168.1.10/24 # Gateway=192.168.1.1 # DNS=1.1.1.1 9.9.9.9 ``` 无线网络 `/etc/systemd/network/25-wireless.network`: ```ini [Match] Name=wl* [Network] DHCP=yes ``` **配合 iwd 管理 WiFi:** ```bash sudo pacman -S iwd # 编辑 /etc/iwd/main.conf: [General] EnableNetworkConfiguration=true sudo systemctl enable --now iwd systemd-networkd systemd-resolved ``` **启用 systemd-networkd:** ```bash # 先禁用 NetworkManager(二者冲突) sudo systemctl disable --now NetworkManager sudo systemctl enable --now systemd-networkd systemd-resolved # 替换 /etc/resolv.conf sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf # 查看网络状态 networkctl status networkctl list ``` **systemd-resolved DNS over TLS:** ```bash # 编辑 /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 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 # 创建定时器 /etc/systemd/system/mytask.timer [Unit] Description=My weekly task [Timer] OnCalendar=weekly Persistent=true [Install] WantedBy=timers.target # 创建对应的服务 /etc/systemd/system/mytask.service [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 # 查看 systemd 版本 systemctl --version ``` **Target(运行级别):** ```bash # 查看当前 target systemctl get-default # 设置默认 target sudo systemctl set-default multi-user.target # CLI 模式 sudo systemctl set-default graphical.target # 图形模式 # 切换 target(不修改默认设置) sudo systemctl isolate multi-user.target sudo systemctl isolate graphical.target ``` **自定义服务单元:** ```ini # /etc/systemd/system/myapp.service [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 # 安装 paru sudo pacman -S --needed base-devel git git clone https://aur.archlinux.org/paru.git cd paru && makepkg -si # 常用命令(与 yay 高度相似) paru -S package # 安装 paru -Syu # 更新 paru -Ss keyword # 搜索 paru -Rns package # 卸载 paru -c # 清理孤立依赖 # 优势:更快的依赖解析,更好的 PKGBUILD 审查界面 ``` ### systemd 用户服务 用户级 systemd 服务(无需 root)适合管理桌面应用的后台进程: ```bash # 用户服务文件位置 ~/.config/systemd/user/ # 自定义用户服务 /usr/lib/systemd/user/ # 包安装的用户服务 # 用户服务管理(无需 sudo) 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 # 创建自定义用户服务示例 ~/.config/systemd/user/myapp.service [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 # 注意:用户服务在用户登出时默认终止 # 如需保持运行,运行:sudo loginctl enable-linger $USER ``` **常用桌面用户服务:** ```bash # PipeWire(音频) systemctl --user enable --now wireplumber # Syncthing(文件同步) systemctl --user enable --now syncthing # 用户级 Docker(rootless) systemctl --user enable --now docker # Emacs daemon systemctl --user enable --now emacs ``` ### Pacman Hooks(自动触发操作) Pacman 支持在安装/升级/删除包前后自动执行操作。自定义 hooks 位于 `/etc/pacman.d/hooks/`。 **常用 pacman hooks 示例:** **1. 自动清理包缓存:** ```ini # /etc/pacman.d/hooks/clean_package_cache.hook [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 # /etc/pacman.d/hooks/90-mkinitcpio-install.hook [Trigger] Type = Path Target = usr/lib/modules/*/vmlinuz [Action] Description = Updating linux initcpios... When = PostTransaction Exec = /usr/bin/mkinitcpio -p linux ``` **3. 更新后自动更新 GRUB 配置:** ```ini # /etc/pacman.d/hooks/update-grub.hook [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 # 查看系统已安装的 hooks ls /etc/pacman.d/hooks/ ls /usr/share/libalpm/hooks/ # 测试 hook(不实际执行) # 将 hook 临时移出目录,确认无误后移回 ``` > **注意**:不要创建会互相冲突的 hooks(如多个 hook 同时重建 initramfs)。测试新 hook 前建议创建 Btrfs/Timeshift 快照。 ### Flatpak(沙盒化应用管理) Flatpak 提供与系统隔离的应用运行环境,适合获取最新版本应用或运行专有软件: ```bash # 安装 Flatpak sudo pacman -S flatpak # 添加 Flathub 仓库(最大的 Flatpak 应用商店) flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo # 重启系统或重新登录后,Flathub 应用会出现在应用菜单中 ``` **基本使用:** ```bash # 搜索应用 flatpak search firefox # 安装应用 flatpak install flathub org.mozilla.firefox # 运行应用 flatpak run org.mozilla.firefox # 列出已安装应用 flatpak list # 更新所有 Flatpak 应用 flatpak update # 卸载应用 flatpak uninstall org.mozilla.firefox # 清理未使用的运行时 flatpak uninstall --unused ``` **Flatpak vs Pacman vs AUR 对比:** | 特性 | Pacman | AUR | Flatpak | |------|--------|-----|---------| | 沙盒隔离 | 无 | 无 | 有(Bubblewrap) | | 更新速度 | 依赖发行版 | 依赖维护者 | 上游直接发布 | | 安全性 | 高(官方签名) | 需审查 PKGBUILD | 中(沙盒+权限管理) | | 磁盘占用 | 最小 | 小 | 较大(独立运行时) | | 桌面集成 | 完美 | 完美 | 良好(需配置主题) | | 适用场景 | 系统核心组件 | 社区维护包 | 专有软件/最新版本 | **Flatpak 权限管理(Flatseal):** ```bash # 图形化管理 Flatpak 应用权限 flatpak install flathub com.github.tchx84.Flatseal # 可精细控制每个应用的:网络、文件系统、设备、D-Bus 等权限 ``` **Flatpak 主题整合(让 Flatpak 应用使用系统主题):** ```bash # 安装与系统匹配的 Flatpak 主题 # KDE Breeze 主题 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 # 查看指定优先级以上的日志(0=emerg, 1=alert, 2=crit, 3=err) journalctl -p 3 -b # 查看内核日志 journalctl -k # 实时跟踪日志 journalctl -f # 限制日志大小(保留 500MB) sudo journalctl --vacuum-size=500M ``` ### Arch Build System (ABS) 与 Clean Chroot 构建 对于需要从源码编译的 AUR 包,使用干净 chroot 可确保构建环境一致、隔离依赖污染: ```bash # 安装 devtools sudo pacman -S devtools # 创建 clean chroot(首次使用) mkdir -p ~/.cache/chroot/root mkarchroot ~/.cache/chroot/root base-devel # 在干净 chroot 中构建 extra-x86_64-build -- -r ~/.cache/chroot/root # 更新 chroot sudo arch-nspawn ~/.cache/chroot/root pacman -Syu ``` **查看包构建信息:** ```bash # 下载 PKGBUILD yay -G package_name cd package_name cat PKGBUILD # 手动构建 makepkg -si # -s:自动安装依赖 # -i:安装构建好的包 # -c:构建后清理 # 查看构建的包 namcap *.pkg.tar.zst # 检查包质量 ``` ### 文件解压缩 除了 `tar` 命令,KDE 下的 `ark` 可以配合 Dolphin 文件管理器右键解压。但解压 Windows 下创建的压缩包(含中文文件名)可能会乱码。使用 **Unarchiver** 可以避免此问题: ```bash sudo pacman -S unarchiver unar xxx.zip # 解压,自动处理编码问题 ``` 常用压缩/解压命令速查: ```bash # tar tar -czvf archive.tar.gz ./folder # 打包压缩 tar -xzvf archive.tar.gz # 解压 # zip zip -r archive.zip ./folder # 压缩为 zip unzip archive.zip # 解压 zip # 7z 7z a archive.7z ./folder # 压缩 7z x archive.7z # 解压 # rar 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 型号 # 图形化(类似 CPU-Z) 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 # USB 设备树 lsusb -t # PCI 设备树 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 # 从 Arch Live USB 启动,连接网络后: sudo pacman -Sy timeshift sudo timeshift --restore --snapshot-device /dev/sdXY # 指定快照所在分区 # 后续步骤同场景二 ``` **Btrfs 快照恢复后 /home 无法挂载:** Timeshift 恢复 Btrfs 快照后,子卷 ID 可能变更。若系统启动失败,进入 emergency shell 后修改 fstab: ```bash vim /etc/fstab # 删除 / 和 /home 条目中的 subvolid=xxx 参数,仅保留 subvol=/@ 和 subvol=/@home # 保存后重启 # 也可通过以下命令查看正确子卷 ID 后手动更正: 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/ # 目录同步(归档+压缩) # 常用参数: # -a: 归档模式(保留权限、时间戳等) # -v: 显示详细信息 # -z: 传输时压缩 # -P: 显示进度 + 支持断点续传 # --delete: 删除目标端多余文件(使两端完全同步) # -n: 干运行(仅显示将要执行的操作,不实际执行) # 本地备份(常用) 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 # 包括 AUR 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 # 查找所有 .pacnew 文件 sudo find /etc -name "*.pacnew" # 查找 .pacsave 文件 sudo find /etc -name "*.pacsave" # 使用 meld 比较差异后合并 sudo pacman -S meld sudo meld /etc/xxx /etc/xxx.pacnew # 或使用 pacdiff 工具自动处理(推荐) sudo pacman -S pacman-contrib sudo pacdiff ``` ### 3. 镜像源管理与 Reflector ```bash # 手动选择最快镜像源 sudo pacman -S reflector # 自动更新镜像源(按速度排序,仅 HTTPS) 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 # 打开 Timeshift GUI 配置定时快照 # Btrfs 用户选择 Btrfs 模式(高效) # ext4 用户选择 RSYNC 模式 ``` **手动 Btrfs 快照:** ```bash # 创建快照 sudo btrfs subvolume snapshot /home /home/.snapshots/$(date +%Y%m%d_%H%M%S) # 回滚快照(需要 live USB) 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 远程备份 rsync -avz --delete /home/user /backup/drive # 加密备份(使用 tar + gpg) tar cz folder | gpg -c > backup.tar.gz.gpg # 定期备份 cron 任务 sudo crontab -e # 添加:0 3 * * 0 rsync -avz --delete /home /mnt/backup/ ``` ### 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 # 查看被 ban 的 IP sudo fail2ban-client status sshd ``` **系统安全审计:** ```bash # 检查开放端口 sudo ss -tulpn # 查看监听服务 sudo lsof -i -P -n | grep LISTEN # 检查 SetUID 文件(突然增加的 SUID 可能表示入侵) sudo find /usr -type f -perm -4000 > /tmp/suid_before # 定期对比 # 系统完整性检查(AIDE) sudo pacman -S aide sudo aideinit # 定期检查:sudo aide --check ``` **SSH 密钥配置(免密码登录):** ```bash # 1. 生成密钥对(客户端) ssh-keygen -t ed25519 -C "your_email@example.com" # ed25519 比 RSA 更安全更快,兼容所有现代 SSH 服务器 # 如需兼容老旧系统:ssh-keygen -t rsa -b 4096 # 2. 复制公钥到服务器(两种方式) 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" # 3. 测试免密登录 ssh user@server_ip # 4. 配置文件优化(~/.ssh/config) # 使 SSH 连接更便捷 Host myserver HostName server.example.com Port 2222 User myuser IdentityFile ~/.ssh/id_ed25519 ServerAliveInterval 60 # 连接方式:ssh myserver ``` **使用 SSH 代理(ssh-agent):** ```bash # 自动启动 ssh-agent(添加到 ~/.bashrc 或 ~/.zshrc) eval "$(ssh-agent -s)" ssh-add ~/.ssh/id_ed25519 # 或使用 keychain(推荐) yay -S keychain # 添加到 ~/.bashrc: 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 # 创建配置 /etc/wireguard/wg0.conf [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(全隧道) # AllowedIPs = 10.0.0.0/24 # 仅内网流量走 VPN(分流) PersistentKeepalive = 25 # 启动 WireGuard sudo systemctl enable --now wg-quick@wg0 # 查看状态 sudo wg show ``` **DNS 隐私与安全:** ```bash # 安装 systemd-resolved(DNS 缓存与加密) sudo pacman -S systemd-resolved sudo systemctl enable --now systemd-resolved # 使用 DNS over TLS(DoT) 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 # 替换 /etc/resolv.conf sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf # 或安装 stubby(DNS over TLS 独立守护进程) sudo pacman -S stubby sudo systemctl enable --now stubby # 验证 DNS 加密 sudo pacman -S dnscrypt-proxy # 另一个选择:DNSCrypt ``` **网络连接检查与诊断:** ```bash # 查看路由表 ip route # 查看 DNS 解析 resolvectl status # systemd-resolved 状态 # 测试 DNS 安全 dig +short txt qnamemintest.internet.nl # 测试 DNSSEC # 端口扫描(检查本机开放端口) sudo nmap -sS localhost ``` ### 6. AppArmor(强制访问控制) AppArmor 通过为每个应用程序定义安全配置文件,限制其可访问的文件、网络、capabilities 等资源。比 SELinux 更易配置,已被 Ubuntu/openSUSE 默认使用。 **安装与启用:** ```bash # 安装 AppArmor sudo pacman -S apparmor # 启用 AppArmor(需要内核参数) # 编辑 /etc/default/grub,在 GRUB_CMDLINE_LINUX_DEFAULT 中添加: # apparmor=1 security=apparmor sudo grub-mkconfig -o /boot/grub/grub.cfg # 启用服务 sudo systemctl enable --now apparmor ``` **查看 AppArmor 状态:** ```bash # 查看当前加载的配置文件 sudo aa-status # 查看哪些进程被 AppArmor 限制 sudo ps auxZ | grep -v unconfined # 查看审计日志 sudo journalctl -k | grep -i apparmor ``` **安装预配置的 AppArmor 配置文件:** ```bash # 安装社区维护的配置文件集 sudo pacman -S apparmor-profiles # AUR 中有更多配置文件 yay -S apparmor-profiles-git ``` **为自定义应用创建配置文件:** ```bash # 使用 aa-genprof 生成配置文件 sudo aa-genprof /usr/bin/myapp # 在另一终端运行应用,触发各种操作 # 回到 aa-genprof 按 S(扫描)→ A(允许)或 D(拒绝) # 按 F 完成 # 将配置文件设为 enforce 模式 sudo aa-enforce /etc/apparmor.d/usr.bin.myapp # 切换到 complain 模式(仅记录不阻止,调试用) 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 # 安装 LTS 内核(与当前内核共存) sudo pacman -S linux-lts linux-lts-headers # 安装后 hook 会自动生成新 initramfs # 引导加载程序(GRUB/systemd-boot)自动检测新内核条目 # 重启后在引导菜单中选择相应内核即可切换 # 删除不需要的内核版本 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 # 解决 Intel 显卡音频问题 options snd_hda_intel power_save=0 # 禁用 NVMe 省电模式(缓解掉盘问题) 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 # /boot/loader/entries/arch.conf options root=UUID=xxxxxxxx rw quiet nowatchdog mitigations=off ``` **GRUB 用户:** ```bash # 编辑 /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="quiet nowatchdog" # 然后重新生成配置 sudo grub-mkconfig -o /boot/grub/grub.cfg ``` **mkinitcpio 重新生成 initramfs:** ```bash # 为所有已安装内核重新生成 initramfs sudo mkinitcpio -P # 为特定内核生成 sudo mkinitcpio -k linux-lts -g /boot/initramfs-linux-lts.img # 查看当前 initramfs 包含哪些 hook 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" # 按优先级/紧急程度 # 0: emerg, 1: alert, 2: crit, 3: err, 4: warning, 5: notice, 6: info, 7: debug journalctl -p 3 -b # 本次启动的错误及以上 # 内核日志 journalctl -k journalctl -k -p 3 # 内核错误 # 实时跟踪(类似 tail -f) journalctl -f journalctl -u sshd -f # 跟踪特定服务 # 按可执行文件路径 journalctl /usr/bin/sshd # 按 PID journalctl _PID=1234 # 按命令 journalctl /usr/bin/pacman # pacman 操作记录 ``` **journald 持久化配置:** 默认 journald 将日志保存在内存(`/run/log/journal`),重启后丢失。配置持久化可保留历史日志用于排查: ```bash # 创建持久化目录即可启用持久化 sudo mkdir -p /var/log/journal # 重启 journald 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 新闻 | (重大更新前务必查看) | | 每周 | 检查 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] # 在 sugar-candy 中通过主题配置文件设置背景 # 或在 KDE 系统设置中直接修改 SDDM 背景 ``` ### 终端样式 **Konsole 配色:** konsole → 设置 → 编辑当前方案 → 外观,选择 `Red-Black`。 也可从 [KDE Store](https://store.kde.org/) 下载更多配色方案。 #### Shell 提示符美化 **Starship(推荐,跨 Shell)**: ```bash sudo pacman -S starship # 在 ~/.bashrc 或 ~/.zshrc 末尾添加: # eval "$(starship init bash)" # Bash # eval "$(starship init zsh)" # Zsh # 配置 ~/.config/starship.toml 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)" # 安装 powerlevel10k 主题 git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \ ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k # 在 ~/.zshrc 中设置 ZSH_THEME="powerlevel10k/powerlevel10k" # 重启终端后自动进入配置向导 ``` #### LS_COLORS 增强 ```bash # vivid 提供更美观的目录/文件颜色 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 # KDE 动态壁纸(支持 mp4/视频壁纸) yay -S plasma6-wallpapers-wallpaper-engine-git # Variety 自动更换壁纸 sudo pacman -S variety # Nitrogen(轻量级 X11 壁纸管理器) 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 # 在 系统设置 → 外观 → 应用程序风格 → 配置 GNOME/GTK 中设置 GTK 主题 ``` **方法二:使用 Kvantum 统一(效果最佳)** Kvantum 同时支持 Qt 和 GTK 的主题渲染: ```bash # 安装 kvantum 和 GTK 集成 sudo pacman -S kvantum # Kvantum 主题引擎(Qt6) # 如需 Qt5 应用主题支持: sudo pacman -S kvantum-qt5 # 在 Kvantum Manager 中选择主题 # 然后设置 GTK 使用 Kvantum: # 编辑 ~/.config/gtk-3.0/settings.ini # gtk-theme-name=kvantum ``` **方法三:QGtkStyle(Qt 应用使用 GTK 主题)** ```bash sudo pacman -S qgtkstyle # Qt 应用将自动使用当前 GTK 主题渲染 ``` ### 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 # 或编辑 /etc/plymouth/plymouthd.conf 设置 Theme=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 # AUR 字体 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 true true hintslight rgb lcddefault sans-serif Noto Sans CJK SC Source Han Sans SC ``` ```bash # 生效配置 fc-cache -fv ``` ### HiDPI 高分屏设置 **KDE Plasma 全局缩放:** ``` 系统设置 → 显示和监视器 → 显示配置 → 缩放 推荐: - 1080p 14寸 → 125%-150% - 2K 14寸 → 150%-200% - 4K 27寸 → 200% ``` **命令行设置缩放:** ```bash # 设置 1.5 倍缩放 kwriteconfig6 --file ~/.config/kdeglobals --group KScreenscaling --key EnabledByDefault true # 或通过 kscreen-doctor kscreen-doctor output.eDP-1.scale.1.5 ``` **Electron/Chromium 应用:** ```bash # ~/.config/environment.d/hidpi.conf # 对 Electron 应用生效 ELECTRON_OZONE_PLATFORM_HINT=wayland # 强制 GTK 缩放 GDK_DPI_SCALE=1.25 # QT 缩放(KDE 已支持) QT_ENABLE_HIGHDPI_SCALING=1 # 浏览器默认缩放 GOOGLE_CHROME_DEFAULT_DISPLAY_SCALE=125 ``` **X11 下独立缩放(如使用 X11 而非 Wayland):** ```bash # 设置 DPI(需注销重登) xrdb -merge ~/.Xresources Xft.dpi: 144 # 或通过 ~/.xprofile xrandr --dpi 144 ``` ### 多显示器配置 **查看显示器信息:** ```bash # X11 xrandr --listmonitors xrandr --query # Wayland kscreen-doctor -o ``` **配置多显示器布局:** ```bash # X11 使用 xrandr xrandr --output eDP-1 --primary --mode 1920x1080 --rate 60 \ --output HDMI-1 --mode 2560x1440 --rate 144 --right-of eDP-1 # 常用布局选项: # --left-of, --right-of, --above, --below, --same-as # --auto(自动最佳分辨率) # --off(关闭显示器) ``` **保存显示器配置:** ```bash # KDE 会自动保存多显示器配置 # 手动保存/加载: kscreen-doctor config.save ~/.config/kscreen-local.conf kscreen-doctor config.restore ~/.config/kscreen-local.conf # 使用 arandr(X11 图形化配置) 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 # 编辑 /etc/intel-undervolt.conf 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 # 使用所有 CPU 核心编译(MAKEFLAGS) # 查看核心数:nproc MAKEFLAGS="-j$(nproc)" # CPU 特定优化(CHOST 和 CFLAGS) # 使用 -march=native 自动检测 CPU 指令集 CFLAGS="-march=native -O2 -pipe -fno-plt" CXXFLAGS="-march=native -O2 -pipe -fno-plt" # 使用多线程链接(对于大项目可减少 link 时间) # 安装 lld: sudo pacman -S lld # 在 /etc/makepkg.conf 中: # LDFLAGS="-fuse-ld=lld" ``` **各参数说明:** | 参数 | 说明 | |------|------| | `-j$(nproc)` | 使用全部 CPU 核心并行编译 | | `-march=native` | 针对本机 CPU 指令集优化(不可移植) | | `-O2` | 标准优化级别(平衡速度和体积) | | `-pipe` | 使用管道而非临时文件加速编译 | | `-fno-plt` | 减少 PLT 开销,提升动态链接性能 | **在 tmpfs 中编译(减少磁盘 I/O):** ```bash # 在 /etc/makepkg.conf 或 ~/.makepkg.conf 中设置 # 需要足够的内存(建议 8GB+) BUILDDIR=/tmp/makepkg ``` 创建 tmpfs 挂载: ```bash mkdir -p /tmp/makepkg # 如有需要可加大 tmpfs 大小 sudo mount -t tmpfs -o size=8G tmpfs /tmp/makepkg ``` **使用 ccache 编译缓存:** ```bash sudo pacman -S ccache # 在 /etc/makepkg.conf 中启用 # BUILDENV=(!distcc color ccache check !sign) ``` ### 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' # NVMe SSD 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 # 检查是否支持 TRIM sudo lsblk --discard # 如果 DISC-GRAN(discard granularity)>0,说明支持 # 启用定时 TRIM(fstrim.timer 每周自动执行) 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 # 避免 atime 更新(上面的 noatime 选项) # 将浏览器缓存移到内存(tmpfs) # 将 /tmp 设为 tmpfs(默认可能已是) sudo vim /etc/fstab # 添加:tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0 ``` ### 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 # Btrfs 文件系统 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 # 降低 swappiness(减少使用 swap,默认 60) 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 # ananicy-cpp 自动调整进程 IO/CPU 优先级 yay -S ananicy-cpp sudo systemctl enable --now ananicy # 查看规则:ls /etc/ananicy.d/ ``` #### irqbalance(中断负载均衡) 将硬件中断分散到多个 CPU 核心,提升多核响应性: ```bash sudo systemctl enable --now irqbalance ``` #### earlyoom(预防内存耗尽) 在系统内存即将耗尽时主动终止占用最多的进程,避免系统卡死: ```bash yay -S earlyoom sudo systemctl enable --now earlyoom # 查看状态 sudo systemctl status earlyoom # 默认策略:当内存剩余 <10% 且 swap 剩余 <10% 时,终止占用最大的进程 # 配置:/etc/default/earlyoom ``` **替代方案:** - `systemd-oomd`:systemd 内置的 OOM 管理(`sudo systemctl enable --now systemd-oomd`) - `nohang`:Python 实现,可配置性更强(`yay -S nohang`) #### ionice(手动调整 I/O 优先级) ```bash # 将备份等后台任务的 I/O 优先级设为 Idle(仅当空闲时才读写) sudo ionice -c 3 -p $(pgrep backup-process) # 优先级级别: # -c 0: 无(默认) # -c 1: Realtime(实时) # -c 2: Best-effort(尽力) # -c 3: Idle(空闲,仅当磁盘空闲时操作) ``` #### preload(预测启动,需足够内存) ```bash yay -S preload sudo systemctl enable --now preload # preload 会分析用户行为,将常用程序预加载到内存 ``` ### 11. TLP 笔记本电源管理 TLP 提供笔记本电池优化,自动管理各种硬件状态: ```bash # 安装 TLP sudo pacman -S tlp tlp-rdw # 启用 TLP 服务(会覆盖 systemd 的电源管理) sudo systemctl enable --now tlp # 查看 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 自动挂起 USB_AUTOSUSPEND=1 # 开启 USB 自动挂起 # 无线省电 WIFI_PWR_ON_AC=off WIFI_PWR_ON_BAT=on # SATA 电源管理 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=auto 为保留安全缓解 ``` > **注意**:`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 # 在 /etc/sysctl.d/99-network.conf 中添加 sudo tee /etc/sysctl.d/99-network.conf << 'EOF' # BBR 拥塞控制 net.core.default_qdisc=fq net.ipv4.tcp_congestion_control=bbr # TCP 缓冲区优化 net.core.rmem_max=16777216 net.core.wmem_max=16777216 net.ipv4.tcp_rmem=4096 87380 16777216 net.ipv4.tcp_wmem=4096 65536 16777216 # 启用 TCP Fast Open(减少握手延迟) 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 # 输出:net.ipv4.tcp_congestion_control = bbr # 查看可用算法 /sbin/tc -d qdisc show dev wlan0 ``` ### 14. 系统启动时间优化 #### 分析启动耗时 ```bash # 查看总启动时间 systemd-analyze # 查看每个服务启动耗时(从长到短排序) systemd-analyze blame # 查看关键链的时间线 systemd-analyze critical-chain # 图形化分析(生成 SVG) systemd-analyze plot > boot.svg ``` #### 优化方法 ```bash # 1. 禁用不必要的服务 sudo systemctl disable bluetooth.service # 不需要蓝牙时 sudo systemctl disable NetworkManager-wait-online # 不需要等待网络就绪 sudo systemctl disable pkgfile-update.timer # 关闭 pkgfile 更新 # 2. 并行化服务启动(编辑 /etc/systemd/system.conf) # 默认超时 90s,减少超时时间 sudo tee -a /etc/systemd/system.conf << 'EOF' DefaultTimeoutStopSec=10s DefaultTimeoutStartSec=10s EOF # 3. 关闭看门狗(已在内核参数中配置) # nowatchdog # 4. 精简 mkinitcpio hooks(仅保留必要的) # 编辑 /etc/mkinitcpio.conf: # 使用 autodetect 自动检测需要的模块 # 确保 hooks 中只有: base udev autodetect modconf block filesystems keyboard ``` --- ## 十二、常见问题排除与解决 ### 关机卡住 1 分 30 秒 ```bash sudo vim /etc/systemd/system.conf # 设置 DefaultTimeoutStopSec=30s 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 # 1. 检查 ALSA 是否识别声卡 aplay -l # 列出播放设备 cat /proc/asound/cards # 2. 检查音频服务状态(PipeWire 或 PulseAudio) # PipeWire(现代推荐) systemctl --user status pipewire pipewire-pulse # PulseAudio(传统) systemctl --user status pulseaudio # 3. 测试音频输出 speaker-test -t wav -c 2 # 测试扬声器 aplay /usr/share/sounds/alsa/Front_Center.wav # 4. 检查音量与静音 alsamixer # ALSA 混音器(MM=静音) pavucontrol # PulseAudio GUI 音量控制(需安装 pavucontrol) # 5. 重新加载音频驱动(最后手段) sudo modprobe -r snd_hda_intel && sudo modprobe snd_hda_intel ``` **常见 PipeWire 修复:** ```bash # 重启 PipeWire 服务 systemctl --user restart pipewire pipewire-pulse # 检查是否有其他服务冲突 systemctl --user status pulseaudio # 如果 PulseAudio 在运行,禁用之 systemctl --user --now disable pulseaudio # 安装 WirePlumber(推荐会话管理器) sudo pacman -S wireplumber systemctl --user --now enable wireplumber ``` **麦克风不工作:** ```bash # 检查录音设备 arecord -l # 测试录音 arecord -d 5 -f cd test.wav && aplay test.wav # 在 alsamixer 中按 F4 切换到录音页面,确保 Mic 未静音 ``` > 提示:如果声音问题出现在更新后,可能是 `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 # 进入 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 # 在 GRUB 菜单按 e 编辑启动项,在 linux 行末添加: nomodeset # 或更详细的: nomodeset i915.modeset=0 # Intel 集显禁用 modesetting nomodeset nouveau.modeset=0 # NVIDIA 开源驱动 nomodeset radeon.modeset=0 # AMD 旧卡 # 如果 nomodeset 有效,安装驱动后移除该参数 # NVIDIA:sudo pacman -S nvidia nvidia-utils # AMD:sudo pacman -S mesa lib32-mesa xf86-video-amdgpu # Intel:sudo pacman -S mesa lib32-mesa xf86-video-intel ``` **桌面环境启动后黑屏/花屏:** ```bash # 1. 重置 KDE Plasma 配置 mv ~/.config ~/.config.bak # 2. 检查 X11 日志 cat ~/.local/share/xorg/Xorg.0.log | grep -iE 'fail|error|ww' # 3. 混合显卡(NVIDIA Optimus)需要额外配置 # 查看:sudo pacman -S nvidia-prime # 或使用 optimus-manager:yay -S optimus-manager # 4. 尝试切换显示服务器 # 登录界面选择不同的会话类型(Plasma X11 / Plasma Wayland) ``` **系统启动到 dmesg 就卡住:** ```bash # 在启动参数中添加: # 关闭 ACPI(某些笔记本需要) acpi=off # 或仅关闭问题组件 acpi_osi=Linux # 如果怀疑是 ACPI 问题,尝试: pci=noacpi # 关闭看门狗(某些主板冲突) nowatchdog ``` ### 系统更新后崩溃/回滚 **部分回滚特定软件包:** ```bash # 使用 pacman 缓存(默认在 /var/cache/pacman/pkg/) # 查看已安装版本历史 pacman -Qi package_name # 安装指定旧版本 sudo pacman -U /var/cache/pacman/pkg/package_name-old_version.pkg.tar.zst # 如果缓存已被清理,使用 downgrade 工具 yay -S downgrade sudo downgrade package_name # 从本地缓存和 Arch Rollback Machine 选择版本 ``` **完全回滚系统(谨慎操作):** ```bash # 方法一:使用 pacman 缓存 + 锁定关键包 # 1. 查看 pacman 日志找到更新前的状态 tac /var/log/pacman.log | head -50 # 2. 从缓存安装旧版本 ls -lt /var/cache/pacman/pkg/ | head # 3. 锁定包版本防止被再次更新 # 编辑 /etc/pacman.conf,在 [options] 中添加: # IgnorePkg = linux nvidia ...(需要锁定的包名) # 方法二:使用 Btrfs 快照回滚(推荐,如果使用了 Snapper/Timeshift) # 从 Live USB 启动 mount /dev/root_partition /mnt mount /dev/efi_partition /mnt/boot snapper -c root mount-config /mnt/.snapshots # Snapper 回滚 # 详细操作参见 Snapper 章节 ``` **内核崩溃切换到 LTS 内核:** ```bash # 安装 LTS 内核 sudo pacman -S linux-lts linux-lts-headers # 重新生成引导 sudo grub-mkconfig -o /boot/grub/grub.cfg # 重启后在 GRUB 选择 "Arch Linux LTS" ``` **修复 pacman 事务中断:** ```bash # 如果 pacman 在更新过程中被中断(终端关闭、断电等) # 症状:运行任何 pacman 命令都报错 # 强制完成事务 sudo pacman -Syu --overwrite='*' # 如果数据库损坏 sudo rm /var/lib/pacman/db.lck sudo pacman -Syy sudo pacman -S archlinux-keyring sudo pacman -Syu ``` ### 系统无法启动(进入紧急模式) ```bash # 在引导加载菜单选择"Arch Linux Fallback"或添加启动参数 # 在 grub 菜单按 e,在 linux 行末添加: systemd.unit=emergency.target # 或 systemd.unit=rescue.target # 进入 emergency 后查看日志 journalctl -xb -p 3 # 只看错误级别 # 检查 fstab 是否有误 cat /etc/fstab # 尝试手动挂载 mount -a # 修复后重启 exit ``` ### 内核 Panic / Kernel Oops ```bash # 通过 journalctl 查看内核崩溃信息 journalctl -k -p 3 # 内核日志,仅错误级别 # 常见原因与排查: # 1. 显卡驱动冲突 → 尝试 nomodeset 启动参数 # 2. 内存故障 → memtest86+ # 3. 内核模块兼容问题 → 尝试 LTS 内核 sudo pacman -S linux-lts linux-lts-headers ``` ### fsck 文件系统检查 ```bash # 强制下次启动时检查根分区 sudo touch /forcefsck # 或指定分区 sudo fsck /dev/sdX # 注意:需要分区未挂载 # 从 live USB 环境检查: # 先 umount 目标分区,再运行 fsck ``` ### Pacman 数据库损坏恢复 ```bash # 症状:pacman 操作报 database error # 恢复 pacman 数据库 sudo rm /var/lib/pacman/db.lck # 先解锁 sudo pacman -Syy # 刷新数据库 # 如果问题持续,手动重建数据库 sudo mv /var/lib/pacman/local /var/lib/pacman/local.bak sudo pacman -Syyu # 恢复 pacman 密钥环 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 # 在 GRUB 菜单按 e 编辑启动项 # 在 linux 行末尾添加:rd.break # Ctrl+X 启动进入紧急 shell # 重新挂载根分区为读写 mount -o remount,rw /sysroot chroot /sysroot passwd yourusername # 输入新密码,重启即可 ``` ### 网络连接问题排查 **NetworkManager 管理网络:** ```bash # 查看连接状态 nmcli device status nmcli connection show # 重启网络 sudo systemctl restart NetworkManager # 扫描可用 WiFi nmcli device wifi list # 连接 WiFi nmcli device wifi connect "SSID" password "password" ``` **DHCP 获取不到 IP:** ```bash # 检查 DHCP 客户端是否正常运行 sudo systemctl status dhcpcd NetworkManager # 手动释放并续期 DHCP sudo dhcpcd -k # 释放 sudo dhcpcd # 重新获取 # 如果使用静态 IP 但无法上网,检查网关和 DNS ip route show default ping -c 3 8.8.8.8 # 测试外网连通性 ping -c 3 google.com # 测试 DNS 解析 ``` **DNS 解析问题:** ```bash # 测试 DNS dig archlinux.org nslookup archlinux.org # 检查 systemd-resolved 状态 sudo systemctl status systemd-resolved # 如果 systemd-resolved 运行但 DNS 不工作 sudo systemctl restart systemd-resolved # 查看 resolv.conf ls -la /etc/resolv.conf # 应是指向 /run/systemd/resolve/stub-resolv.conf 的链接 # 临时使用 Google DNS sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf' # 或在 NetworkManager 中设置 DNS 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' # iwlwifi(Intel)、ath9k(Atheros)、rtw88/rtw89(Realtek)、brcmfmac(Broadcom) # 安装固件 sudo pacman -S linux-firmware # 通用固件包 # Intel 无线网卡 sudo pacman -S iwlwifi-* # 或从 AUR 安装对应型号固件 # Broadcom 网卡 yay -S broadcom-wl # 或 b43-firmware ``` **SSH 连接问题:** ```bash # 服务端:确保 sshd 已启用 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 # 启用 NTP 自动同步 sudo timedatectl set-ntp true # 检查 NTP 服务 sudo systemctl status systemd-timesyncd # 手动同步时间 sudo systemctl restart systemd-timesyncd # 查看同步状态 timedatectl timesync-status # 如果 systemd-timesyncd 失败,可以安装 chrony 替代 sudo pacman -S chrony sudo systemctl enable --now chronyd # 强制立即同步 sudo chronyc -a makestep # chrony sudo systemd-timesyncd --adjust # systemd-timesyncd # 硬件时钟同步 sudo hwclock --systohc # 将系统时间写入硬件时钟 ``` ### 磁盘空间不足深度清理 ```bash # 1. 最大目录分析 sudo du -sh /* 2>/dev/null | sort -rh | head -15 # 2. 清理 pacman 缓存(保留最新 2 个版本) sudo paccache -rk2 # 删除所有未安装包的缓存 sudo paccache -ruk0 # 或直接清空(谨慎) # sudo pacman -Scc # 3. 清理 systemd journal(保留最近 100M) sudo journalctl --vacuum-size=100M # 保留最近 2 周 sudo journalctl --vacuum-time=2weeks # 4. 查找大文件 find /home -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh | head -20 # 5. 清理 AUR 构建缓存(yay/paru) rm -rf ~/.cache/yay rm -rf ~/.cache/paru ``` ### 引导修复(GRUB) ```bash # 使用 Arch Live USB 启动 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 # X11 崩溃后查看日志 cat ~/.local/share/xorg/Xorg.0.log # Wayland 崩溃 journalctl --user -xe | grep -i wayland # 重置 KDE Plasma 配置 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 # 永远不要运行 pacman -Sy pkg 再 pacman -S pkg2 # 始终使用 pacman -Syu 完整更新后再安装新包 # 如果已出现错误,运行完整更新修复: sudo pacman -Syu ``` **"failed to commit transaction (conflicting files)":** ```bash # 通常因手动安装的文件与包冲突 # 找到冲突文件并删除(确认它们不需要后) sudo rm /path/to/conflicting/file sudo pacman -Syu ``` ### 内存不足排查 ```bash # 查看内存使用概况 free -h # 查看内存占用 TOP 10 进程 ps aux --sort=-%mem | head -11 # 查看 OOM Killer 历史 journalctl -k | grep -i "killed process" # 查看 systemd-oomd 状态 systemctl status systemd-oomd # 安装 earlyoom 预防内存耗尽 yay -S earlyoom sudo systemctl enable --now earlyoom ``` ### 系统启动时间过长排查 ```bash # 分析启动耗时 systemd-analyze systemd-analyze blame | head -20 systemd-analyze critical-chain # 常见优化 # 1. 禁用不需要的服务 sudo systemctl disable bluetooth # 不需要蓝牙 sudo systemctl disable pkgfile-update.timer # 2. 检查 fstab 中是否有不存在的挂载点(会导致 90s 超时) cat /etc/fstab # 3. 添加内核参数 nowatchdog ``` ### 电源管理 / 笔记本电池耗尽快 ```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 # 如果无法唤醒,尝试内核参数: # /etc/default/grub: GRUB_CMDLINE_LINUX_DEFAULT="acpi_sleep=nonvs" # 休眠设置(需要 swap >= 内存大小) # 1. 查看 swap 大小:free -h # 2. 获取 swap 设备偏移量: sudo filefrag -v /swapfile | awk 'NR==4{print $4}' # 3. 添加内核参数: # resume=UUID=xxx resume_offset=OFFSET # 4. 编辑 /etc/mkinitcpio.conf: # HOOKS 中 block 后添加 resume # 5. 重新生成:sudo mkinitcpio -P # 配置合盖行为 /etc/systemd/logind.conf: 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 # 永远不要用 sudo pip install(会覆盖系统 Python 包) # 解决方法: # 1. 使用虚拟环境 python -m venv myenv && source myenv/bin/activate # 2. 使用 pipx 全局安装 Python 工具 sudo pacman -S python-pipx pipx install package_name # 3. 使用 --user 安装到用户目录 pip install --user package_name ``` ### AUR 构建失败 ```bash # 常见原因与解决: # 1. GPG 密钥缺失 gpg --recv-keys KEY_ID # 2. 依赖版本不匹配(更新后重试) yay -Syu --devel # 3. 构建目录空间不足 rm -rf ~/.cache/yay # 或修改 build 目录到更大的分区 # 4. 使用 clean chroot 构建(devtools) 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 # 如果打开 Windows 创建的文档排版错乱,安装 Windows 兼容字体 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 # 纯终端笔记(Vim 用户) sudo pacman -S vimwiki # Vim 中的个人 Wiki # 或直接使用 Markdown + Git 管理 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 # BT 下载 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 配置:rclone config ``` **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 # 安装浏览器扩展 KeePassXC-Browser,并在 KeePassXC 设置中启用浏览器集成 ``` ### 思维导图与图表 ```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 # 安装 CUPS sudo pacman -S cups cups-pdf system-config-printer # 启用服务 sudo systemctl enable --now cups.service # 浏览器管理界面:http://localhost:631 # 添加打印机:系统设置 → 打印机 → 添加 ``` **驱动安装:** | 品牌 | 安装命令 | |------|----------| | 惠普 | `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 # 或使用 system-config-printer GUI 自动发现 ``` **扫描仪(SANE):** ```bash # 安装 SANE sudo pacman -S sane sane-airscan # 查看已连接的扫描仪 scanimage -L # GUI 扫描工具 sudo pacman -S simple-scan # 文档扫描仪 sudo pacman -S xsane # 高级扫描工具 # 网络扫描仪(eSCL/WSD 协议) yay -S brscan4 # 兄弟网络扫描 ``` **打印故障排除:** ```bash # 查看 CUPS 日志 journalctl -u cups cat /var/log/cups/error_log # 重置 CUPS 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 # FFmpeg(命令行视频处理,几乎所有播放器的后端) sudo pacman -S ffmpeg ffmpegthumbnailer # HandBrake(视频转码,图形化) sudo pacman -S handbrake # MKV 工具 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 # 启用 multilib 仓库(如未启用) sudo vim /etc/pacman.conf # 取消注释 [multilib] 和 Include 行 # 安装 Steam sudo pacman -S steam # 如需使用原生系统运行时(避免 Steam 内置运行时) yay -S steam-native-runtime # 启动:steam-native ``` **安装前提(否则游戏可能无法运行):** ```bash # 1. 安装 32 位 OpenGL/Vulkan 驱动(关键) # NVIDIA sudo pacman -S lib32-nvidia-utils # AMD sudo pacman -S lib32-vulkan-radeon lib32-amdgpu-pro-oglp # Intel sudo pacman -S lib32-mesa lib32-vulkan-intel # 2. 生成 en_US.UTF-8 语言环境(避免非法指针错误) sudo vim /etc/locale.gen # 取消注释:en_US.UTF-8 UTF-8 sudo locale-gen # 3. 安装必要字体 sudo pacman -S ttf-liberation wqy-zenhei # 4. 增大 vm.max_map_count(防止部分游戏崩溃) sudo sysctl -w vm.max_map_count=2147483642 # 持久化 sudo tee /etc/sysctl.d/99-gaming.conf <<< "vm.max_map_count=2147483642" ``` **Proton(Windows 游戏兼容层):** ```bash # Steam 内置 Proton - 在 Steam 客户端中启用: # Steam → 设置 → 兼容性 → 启用 Steam Play # 勾选"为所有其他标题启用 Steam Play" # 选择 Proton 版本(推荐 Proton Experimental 或 Proton GE) # Proton GE(社区增强版,修复更多游戏) yay -S proton-ge-custom # 安装后重启 Steam,在兼容性选项中会多出 GE-Proton 选项 ``` **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 # AUR 安装 yay -S bottles # 或使用 Flatpak(官方推荐,有沙箱隔离) 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 # 安装 Wine(开发版本,推荐) sudo pacman -S wine # 或安装 Staging 版本(带额外补丁) sudo pacman -S wine-staging # 安装必要组件 sudo pacman -S wine-gecko wine-mono # IE 和 .NET 实现 sudo pacman -S winetricks # 依赖管理脚本 ``` **Wine 基本用法:** ```bash # 创建独立的 Wine prefix(每个游戏独立的 Windows 环境) export WINEPREFIX=~/Games/my-game winecfg # 配置 prefix(Windows 版本、库替代等) # 安装 Windows 依赖 winetricks vcrun2022 corefonts dxvk # 运行 Windows 程序 wine setup.exe # DXVK(DirectX 9/10/11 → Vulkan,大幅提升游戏性能) sudo pacman -S dxvk winetricks dxvk # 在 prefix 中安装 DXVK # VKD3D(DirectX 12 → Vulkan) sudo pacman -S vkd3d lib32-vkd3d ``` **Wine 32 位声音支持:** ```bash # 根据音频后端安装对应 32 位库 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 # 常用参数: # -f:全屏 # -r FPS:帧率限制 # -W/-H:内部分辨率 # -U:使用 AMD FSR 上采样 # --fsr-sharpness 5:FSR 锐度(0-20) # 在 Steam 启动选项中: gamescope -f -r 120 -- %command% ``` **NVIDIA 用户需添加内核参数:** ```bash # /etc/default/grub 中添加: nvidia_drm.modeset=1 # 然后:sudo grub-mkconfig -o /boot/grub/grub.cfg ``` ### 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 # 将自己加入 gamemode 组 sudo usermod -aG gamemode $USER # 编辑用户配置 ~/.config/gamemode.ini [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: 最高性能 # 验证 GameMode 是否生效 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 # 查看已连接的 SDL 控制器 sdl2-jstest --list # SDL 控制器映射数据库 cat /usr/share/sdl32/gamecontrollerdb.txt | grep Linux ``` --- ## 十六、安卓刷机 ### 准备工作 ```bash sudo pacman -S android-tools # 包含:adb(Android Debug Bridge)、fastboot ``` **启用手机的 USB 调试:** 设置 → 关于手机 → 连续点击"版本号"7次 → 返回设置 → 开发者选项 → 开启 USB 调试。 **验证连接:** ```bash adb devices # 首次连接需在手机上确认 RSA 密钥指纹 # 输出:XXXXXX device 表示连接成功 ``` **ADB 常用命令:** ```bash # 安装/卸载应用 adb install app.apk # 安装 APK adb uninstall com.example.app # 卸载应用 # 文件传输 adb push local_file /sdcard/ # 推送到手机 adb pull /sdcard/file ./ # 从手机拉取 # Shell 操作 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 # Ctrl+C 停止录制 # 无线调试(Android 11+) adb pair IP:配对端口 配对码 # 配对 adb connect IP:连接端口 # 连接 # 重启 adb reboot # 正常重启 adb reboot bootloader # 重启到 fastboot adb reboot recovery # 重启到 recovery ``` ### 解锁 Bootloader **注意:解锁会清除手机所有数据,务必提前备份。** ```bash adb reboot bootloader fastboot devices # 确认识别设备 # OEM 解锁(不同品牌命令不同) fastboot flashing unlock # Google Pixel fastboot oem unlock # 一加/小米等 # 部分品牌需要申请解锁码(小米需绑定账号等待 7 天) ``` ### 刷入 Recovery ```bash # 刷入 TWRP fastboot flash recovery twrp.img # 或直接启动(不刷入) fastboot boot twrp.img # 刷入 LineageOS Recovery fastboot flash recovery lineage-recovery.img ``` ### 刷入 Custom ROM **以 LineageOS 为例:** ```bash # 1. 进入 Recovery,格式化 data # TWRP: 清除 → 格式化 Data 分区 → 输入 yes # 2. Sideload 刷入 ROM # Recovery 中选择 Apply update → Apply from ADB adb sideload lineage-*.zip # 3. 可选:刷入 GApps(Google 服务) adb sideload MindTheGapps-*.zip # 4. 重启系统 # Recovery → Reboot system now ``` ### 刷入 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 # 查看当前 slot(A/B 分区设备) fastboot getvar current-slot # 切换 slot fastboot set_active a # 刷入工厂镜像(以 Google Pixel 为例) # 解压工厂镜像后执行 flash-all.sh ./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 终端行情 # 或直接在浏览器访问 CoinMarketCap / CoinGecko ``` ### 挖矿 ```bash # CUDA(NVIDIA 显卡) sudo pacman -S cuda # XMR 挖矿 yay -S xmrig # 配置:编辑 ~/.config/xmrig/config.json # 填入矿池地址和钱包地址 # ETH/ETC 挖矿 yay -S ethminer ``` 使用 supervisor 实现自动重启: ```bash sudo pacman -S supervisor sudo systemctl enable --now supervisord.service # 配置示例:/etc/supervisor.d/miner.ini # [program:miner] # command=/usr/bin/xmrig # autostart=true # autorestart=true ``` ### 防火墙 ```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 # 如需浏览器插件(直播弹幕/通知等),安装 AUR 版本: 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 # AMD 使用 opencl-amd # 同时需要配置 GPU 直通 ``` ### 图像处理 ```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 # 安装包管理器 lazy.nvim git clone https://github.com/folke/lazy.nvim.git \ ~/.local/share/nvim/lazy/lazy.nvim # 推荐使用社区配置(如 NvChad、LazyVim、kickstart.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 原生终端 # Shell 增强 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 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 # 或使用 pyenv 管理多版本 yay -S pyenv ``` **Node.js:** ```bash sudo pacman -S nodejs npm # 推荐使用 fnm 管理多版本 yay -S fnm fnm install --lts ``` **Rust:** ```bash # 推荐使用 rustup(而非 pacman) 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 # 切换版本:archlinux-java status → archlinux-java set java-17-openjdk ``` **Docker 开发环境:** 参见 [二十、虚拟化](#二十虚拟化)。 ### API 调试与测试 ```bash sudo pacman -S postman-bin # Postman(AUR) sudo pacman -S insomnia # Insomnia(开源替代) sudo pacman -S httpie # HTTPie(命令行 API 客户端) # 或使用 VS Code 的 REST Client 扩展 ``` ### 浏览器 ```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 # Python 数据科学栈 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) # CPU 版:去掉 -cuda 后缀 # Ollama(本地大模型运行) curl -fsSL https://ollama.com/install.sh | sh # 或 yay -S ollama 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 # docker-compose.yml 示例 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 # 安装 rootless 支持 sudo pacman -S docker-rootless-extras # 设置(无需 root) dockerd-rootless-setuptool.sh install systemctl --user enable --now docker # 说明:需要安装 newuidmap/newgidmap(shadow 包) ``` **NVIDIA GPU 加速(Docker 内使用 GPU):** ```bash # 安装 NVIDIA 容器工具包 yay -S nvidia-container-toolkit sudo nvidia-ctk runtime configure --runtime=docker sudo systemctl restart docker # 运行时添加 --gpus all 参数 docker run --gpus all -it --rm nvidia/cuda:12.0-base nvidia-smi ``` **常见故障排除:** ```bash # 查看 Docker 日志 journalctl -u docker # 查看容器日志 docker logs container_name # 无法拉取镜像(DNS 问题) sudo vim /etc/docker/daemon.json # 添加 "dns": ["8.8.8.8", "1.1.1.1"] # 磁盘空间不足 docker system prune -a --volumes # 清理所有未使用的资源 ``` ### 2. KVM/QEMU 虚拟机 **检查 CPU 是否支持虚拟化:** ```bash LC_ALL=C lscpu | grep Virtualization # Intel 显示 VT-x,AMD 显示 AMD-V # 如果没有显示,需在 BIOS 中开启虚拟化支持 ``` **安装 KVM/QEMU 虚拟化栈:** ```bash sudo pacman -S virt-manager qemu-desktop libvirt edk2-ovmf dnsmasq iptables-nft ``` **启用并启动服务:** ```bash sudo systemctl enable --now libvirtd # 将用户加入 libvirt 组 sudo usermod -aG libvirt $USER # 重新登录后生效 ``` **创建虚拟机:** - 打开 `virt-manager`(虚拟机管理器) - 文件 → 新建虚拟机 - 选择 ISO 镜像或网络安装 - 分配 CPU、内存、磁盘空间 - 完成安装 **性能优化:** ```bash # 使用 virtio 驱动(半虚拟化,性能接近原生) # 磁盘:virtio # 网卡:virtio # 显卡:virtio(或 SPICE) # 配置 CPU 直通(host-passthrough) sudo virsh edit vm-name # 在 部分修改为: # 启用 KSM 内存去重(节省内存) 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 # 在 virt-manager 中:编辑 → 连接详情 → 虚拟网络 → 添加桥接 ``` **UEFI 引导(OVMF):** ```bash # 在 virt-manager 创建虚拟机时选择: # 固件:UEFI x86_64 # 或者在 XML 配置中添加: # # hvm # /usr/share/edk2-ovmf/x64/OVMF_CODE.fd # ``` **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 # 安装 Podman(无守护进程的容器引擎) sudo pacman -S podman podman-compose # Podman 命令与 Docker 兼容 alias docker=podman # 无需 docker 组,默认 rootless podman run -it --rm ubuntu bash # 生成 systemd 服务(容器自动启动) 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 # Distrobox 基于 Podman 或 Docker,会自动检测 ``` **基本使用:** ```bash # 创建基于 Ubuntu 的容器 distrobox create --name ubuntu-box --image ubuntu:latest # 进入容器(首次进入会自动设置集成) distrobox enter ubuntu-box # 在容器内安装软件(完全独立于宿主机) # sudo apt update && sudo apt install neovim # 从宿主机直接运行容器内的命令 distrobox enter ubuntu-box -- neovim ~/project/main.py # 容器内应用的图标会自动出现在宿主机应用菜单 # 容器内的 GUI 应用可以直接在宿主机桌面运行 # 列出所有容器 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 # 初始化 Android 映像(下载大约 1GB) sudo waydroid init # 启动 Waydroid 服务 sudo systemctl enable --now waydroid-container # 启动 Android 界面 waydroid show-full-ui ``` **基本操作:** ```bash # 安装 APK waydroid install app.apk # 运行 Android 应用(直接在 Linux 桌面启动) waydroid app launch com.example.app # 打开 Android 设置界面 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 # 1. 分区 U 盘 GPT + FAT32 sudo parted /dev/sdx mktable gpt sudo cfdisk /dev/sdx # 创建分区,类型 Microsoft basic data sudo mkfs.vfat /dev/sdxn # 2. 挂载 ISO 并复制文件 sudo mount -o loop windows.iso /mnt cp -a /mnt/* /path/to/usb_mount # 3. 压缩 install.wim(超 4GB 问题) sudo pacman -S wimlib sudo wimlib-imagex optimize install.wim --solid # 4. 复制到 U 盘 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 # 编辑 packages.x86_64 添加所需软件 # 编辑 pacman.conf 添加源 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 # 方法一:DKMS 版本(推荐,随内核更新自动重建) yay -S zfs-dkms zfs-utils # 方法二:预编译版本(需匹配内核版本) yay -S zfs-linux zfs-utils # 加载模块 sudo modprobe zfs ``` **创建 ZFS 池与数据集:** ```bash # 创建存储池(镜像模式,2块盘) 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 # 查看 systemd-boot 状态 bootctl status # 更新 systemd-boot(efi 分区挂载在 /boot 时自动) bootctl update # 设置默认引导条目(修改 /boot/loader/loader.conf) # default arch.conf # timeout 4 # 设置为下次启动使用特定条目(一次性) bootctl set-oneshot arch-lts.conf # 重启到固件设置界面 systemctl reboot --firmware-setup ``` ### H. 更新系统的最佳实践 ```bash # 日常更新 sudo pacman -Syu # 同时更新 AUR yay -Syu # 清理孤儿包 sudo pacman -Rns $(pacman -Qtdq) # 清理包缓存(保留最近 3 个版本) paccache -r # 清理 yay 缓存 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 # 使用 downgrade(推荐) 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 # 锁定包版本(防止再次更新) # 编辑 /etc/pacman.conf: # IgnorePkg = linux nvidia ``` > **Arch 之道:Keep It Simple, Stupid.** > > Arch Linux 将简洁定义为:避免任何不必要的添加、修改和复杂增加。你可以自己决定使用哪种桌面环境、安装哪些组件和服务。这种精细化的控制能够赋予你一个精简的操作系统,让你自由构建属于自己的系统。 --- *本文档基于 ArchLinuxStudio/ArchLinuxTutorial、nakanomikuorg/arch-guide 及 Arch Wiki CN 整理,遵循 CC BY-SA 4.0 协议。*