优先考虑食用以下文档😋

Arch Linux 安装使用教程 - ArchTutorial - Arch Linux Studio

archlinux简明指南

Arch Linux 中文维基

archlinux安装详细过程

Gemini


Arch Linux 安装教程&by lrwy

本文在Arch Linux Studio文章的基础上进行删减,没有经过实际测试,且原文更新时间较旧,请理性看待本文

1. 深度对比:WSL 2 vs. Win Arch双系统

到 2026 年,WSL 2 的成熟度已经极高,但它和双系统(原生安装)依然是两种完全不同的“生活方式”。

  • 如果你是想“用” Linux:选 WSL。
  • 如果你是想“学” Linux 或追求极致体验:选双系统。

特性深度对比

  • 便利性:WSL 2 极高,无需重启;双系统切换必须重启,打断工作流。
  • 系统性能:WSL 2 约 90-95%(有虚拟化损耗);双系统 100%,发挥硬件全部潜力。
  • 图形与界面:WSL 2 支持 GUI 但不流畅;双系统完胜,可自由配置 Hyprland/KDE 等华丽界面。
  • 硬件控制:WSL 2 较弱,无法直接操作底层硬件(如蓝牙、复杂串口);双系统最强,直接驱动所有硬件。
  • “折腾”乐趣:WSL 2 只是被 Windows 包裹的工具;双系统极高,从引导到桌面都是亲手构建。

2. 为什么你可能更喜欢“双系统”?

既然你选择了 Arch Linux,不仅仅是为了跑两个命令,而是想要一个完全属于自己的、干净的环境。

  • 真正的隔离感:进入 Arch,你就彻底离开了 Windows 的弹窗、更新和后台进程。这种专注感是 WSL 给不了的。
  • Arch 的精髓:Arch 的核心在于内核定制和轻量化。在 WSL 里跑 Arch,那种“从零构建”的成就感会被削弱。
  • 学习底层知识:物理安装会让你学会处理 EFI、分区表、驱动配置等底层逻辑,这些在 WSL 里接触不到。

3. 磁盘排布/“复用并扩容” Windows 的 EFI

安装时,磁盘空间的物理顺序非常重要。为了保证系统的稳定性、引导的可靠性以及未来扩容的灵活性,我建议采用“系统在前,数据在后”的逻辑。

为什么这样排布最“舒服”?

EFI 放在最开头: 所有的主板 BIOS 都能第一时间在磁盘 0 扇区附近找到引导文件,这是最标准、最稳定的做法。

将 Windows 系统紧挨着 EFI: 保持 Windows 默认的紧凑结构,可以避免未来 Windows 大版本更新时因为找不到“保留分区”而报错。


根据 UEFI 规范和 Arch Wiki 的建议,一台电脑(一个硬盘)理应只有一个 EFI 分区,原因如下:

  • 兼容性最好:某些主板 BIOS 非常“笨”,只会找磁盘第一个 FAT32 分区。分两个 EFI 可能导致识别不出第二个。
  • 逻辑整洁:所有系统的引导文件(Windows 的和 Arch 的)都放在一个地方,由一个引导器(如 GRUB)统一管理,逻辑上最直接。
  • 避坑方案:与其冒着主板识别不了的风险去新建,不如通过“无损扩容”把原有的 100MB 变成 1GB。这样既保住了 Windows 环境(软件、环境变量纹丝不动),又给了 Arch 足够的折腾空间。

4. 实战细节:使用 DiskGenius 无损扩容 EFI

Windows 自带的“磁盘管理”无法处理这种复杂的物理连续挪动,所以我们必须使用 DiskGenius

第一步:拆除隔离墙(MSR 分区)

  • 在磁盘物理布局中,EFI 和 C 盘之间挡着一个 MSR 分区(约 16MB),他像一堵墙挡在 EFI 和 C 盘之间,分区必须物理连续才能合并,所以必须处理它。
    • MSR 到底是什么? 它叫“微软保留分区”。它里面没有文件系统,也没有任何数据。它是 Windows 为磁盘管理预留的占位符(比如以后你要把磁盘转为动态磁盘时才会用到)。
    • MSR (Microsoft Reserved) 的存在主要是为了防止以后你在 Windows 里进行一些高级磁盘操作(比如将磁盘转换为“动态磁盘”)时,因为没有空余扇区而失败。对于绝大多数普通用户、甚至是开发者来说,这辈子都用不到那个功能。
  • 动作:打开 DiskGenius,右键点击 MSR 分区,选择“删除当前分区”。
  • 理由:它是预留占位符,不含数据,删掉它不会影响 Windows 启动,但能让 EFI 紧挨着 C 盘。

第二步:压缩 C 盘头部(腾出空间)

  1. 精准定位:在 DiskGenius 中右键点击 C 盘 (NTFS),选择“调整分区大小”。
  2. 关键细节:鼠标指向示意图中 C 盘的最左端(开头部分),光标变为双向箭头后向右拖动;或在“分区前部的空闲空间”输入 900MB
  3. 注意:一定是前部!这样空出来的地盘才紧挨着 EFI。
  4. 重启搬运:点击开始,DiskGenius 会提示需要重启到 DOS/PE 模式。点击确定,电脑会自动重启搬运数据。(注意:笔记本务必插电,防止断电导致分区表损坏!)

第三步:合并空间(扩大 EFI)

  1. 拉满进度条:重启回到 Windows 后再次打开 DiskGenius,右键点击 EFI 分区 (100MB),选择“调整分区大小”。
  2. 填满空地:将鼠标指向 EFI 分区的最右端,向右拖动填满刚才那块 900MB 的灰色空地。
  3. 验证结果:点击开始,几秒钟后 EFI 就会变成 1GB。右键点击它选择“浏览文件”,确保 Microsoft 文件夹还在,这就大功告成了。

5. 安装前最后的避坑指南

  • BitLocker 警告:如果 C 盘图标上有个小锁,必须先在 Windows 设置里关闭它,否则 DiskGenius 无法挪动数据。
  • 关闭快速启动:否则 Windows 会锁死磁盘,导致 Linux 无法读写 D 盘。
  • 禁用 Secure Boot:在 BIOS 中关闭它,否则 Arch 无法顺利启动。

6. 安装前的准备

1. 确保网络环境

如果你可以使用路由器分接出来的网线,以 dhcp 的方式直接上网,那么不用准备什么。如果你的环境只能使用无线网络安装,需要事先把自己所用的 wifi 名称改成自己能记住的英文名称。因为安装时无法显示和输入中文名的 wifi,你会看到一堆不知道是什么的方块,并且在安装过程中你将没有办法输入中文的无线名称进行连接。

2. 下载安装镜像

安装镜像 iso 在开源镜像站(推荐)或者 archlinux 官方下载页面 下载。 下面是国内常用的提供 archlinux 安装镜像的开源镜像站(选一个即可):

  • 中国科学技术大学开源镜像站
  • 清华大学开源软件镜像站
  • 华为开源镜像站
  • 兰州大学开源镜像站

准备工作:准备一个空u盘,刷入ventoy,然后将iso镜像放入其中。重启电脑,选择U盘启动,然后你进入了 Arch Linux 的启动菜单!


7. 环境初始化

1. 此时的正确选择

请直接选择第一项: Arch Linux install medium (x86_64, UEFI) 然后按回车。

2. 接下来你会看到什么?

屏幕会开始疯狂刷白字(这是系统在加载驱动和内核),最后会停在一个黑底白字的命令行界面,显示类似这样: root@archiso ~ #

0. 禁用 reflector

2020 年,archlinux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。

Bash

1
systemctl stop reflector.service

ℹ️ 提示 在命令行中你可以使用如下命令清屏:clear 同时,你可以使用 Tab 键在输入命令的时候对命令、参数或文件路径进行自动补全。 若要禁用蜂鸣器“哔”声:rmmod pcspkr 永久禁用:创建 /etc/modprobe.d/blacklist.conf 加入 blacklist pcspkr


8. 网络与时钟配置

1. 再次确保是否为 UEFI 模式

Bash

1
ls /sys/firmware/efi/efivars

若输出了一堆东西(efi 变量),则说明已在 UEFI 模式。

2. 连接网络

  • 有线连接:直接插入网线。
  • 无线连接 (iwctl)

Bash

1
2
3
4
5
6
iwctl                                    # 进入交互式命令行
device list # 列出设备名,如 wlan0
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出网络
station wlan0 connect YOUR-WIRELESS-NAME # 进行连接
exit # 退出
  • 手机 USB 共享网络 (救急手段)
  1. 连接手机与电脑。2. 手机开启“USB 网络共享”。3. 电脑输入 ip link 确认设备名。4. 输入 dhcpcd
  • 测试网络ping www.mi.com (按下 Ctrl + C 退出)。

3. 更新系统时钟

Bash

1
2
timedatectl set-ntp true    # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态

9. 磁盘分区与格式化

☢️ 警告

分区操作的部分命令具有危险性!请提前做好数据备份,防止数据丢失!

1. 分区方案参考

  • / 根目录:>= 128GB
  • /home 用户主目录:>= 128GB
  • /boot EFI 分区:256MB(Windows 已有则复用)
  • Swap 分区:>= 内存的 60%

2. 磁盘操作

Bash

1
2
3
4
lsblk                       # 找到你想安装的磁盘名称
parted /dev/sdx # 进行磁盘类型变更
(parted)mktable # 输入gpt
quit

使用 cfdisk 进行分区:cfdisk /dev/sdx。EFI 选择 EFI System,其余选择 Linux filesystem

3. 格式化

Bash

1
2
mkfs.ext4 /dev/sdax         # 格式化根目录和home目录的分区
mkfs.vfat /dev/sdax # 格式化efi分区

10. 系统安装

1. 挂载

Bash

1
2
3
4
5
mount /dev/sdax  /mnt
mkdir /mnt/efi
mount /dev/sdax /mnt/efi
mkdir /mnt/home
mount /dev/sdax /mnt/home

2. 镜像源选择

vim /etc/pacman.d/mirrorlist,将国内源(如中科大、清华)置顶。

[注释]:作者提醒,威权国家镜像源可能存在隐私审计风险,建议在安装后更换为非威权国家镜像源(如新加坡、台湾、日本源)。

3. 安装基础包

Bash

1
2
3
4
# 确保 pacman-init.service 启动后执行
pacstrap /mnt base base-devel linux linux-headers linux-firmware
# 安装功能性软件
pacstrap /mnt dhcpcd iwd vim bash-completion

11. 进阶系统配置

1. 生成 fstab 与 Chroot

Bash

1
2
genfstab -U /mnt >> /mnt/etc/fstab
arch-chroot /mnt

2. 本地化与时区

Bash

1
2
3
4
5
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc
# 编辑 /etc/locale.gen 去掉 en_US.UTF-8 和 zh_CN.UTF-8 的注释
locale-gen
echo 'LANG=en_US.UTF-8' > /etc/locale.conf

3. 主机名与引导 (GRUB)

Bash

1
2
3
4
5
6
7
# 设置主机名 /etc/hostname 和 /etc/hosts
passwd root # 设置密码
pacman -S intel-ucode # 或 amd-ucode
pacman -S grub efibootmgr
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
# 若主板不识别,可加 --removable 参数
grub-mkconfig -o /boot/grub/grub.cfg

12. 完成安装

Bash

1
2
3
exit                # 退回安装环境
umount -R /mnt # 卸载新分区
reboot # 重启 (记得拔掉优盘)

重启后,通过 systemctl start dhcpcd 即可联网。


桌面环境与常用应用

官方文档: 安装后的工作 本节只介绍最基本的,能使系统真正意义上可用所需的组件

注: 文档中带有 AUR 角标的软件代表是用户自行打包的第三方软件AUR,不在 Arch 官方支持范围内,可能会出现更新不及时、无法安装、使用出错等各种问题。如果遇到问题,你可自行去其 AUR 页面查看其他人的评论中是否有解决方法。如果不是实在没有官方支持的同类软件,则不建议使用。

1.确保系统为最新

如果你在做完上一节的内容后,重启并放置过一段时间,那需要先按照上节末尾处的方式重新连接网络,然后更新系统。

1
pacman -Syyu    #升级系统中全部包

2.准备非 root 用户

添加用户,比如新增加的用户叫 testuser

1
useradd -m -G wheel -s /bin/bash testuser  #wheel附加组可sudo,以root用户执行命令 -m同时创建用户家目录

设置新用户 testuser 的密码

1
passwd testuser

编辑 sudoers 配置文件

1
EDITOR=vim visudo  # 需要以 root 用户运行 visudo 命令

找到下面这样的一行,把前面的注释符号 # 去掉,:wq 保存并退出即可。

1
#%wheel ALL=(ALL:ALL) ALL

这里稍微解释一下 %wheel 代表是 wheel 组,百分号是前缀 ALL= 代表在所有主机上都生效(如果把同样的sudoers文件下发到了多个主机上) (ALL) 代表可以成为任意目标用户 ALL 代表可以执行任意命令 一个更详细的例子:

1
2
%mailadmin   snow,rain=(root) /usr/sbin/postfix, /usr/sbin/postsuper, /usr/bin/doveadm
nobody ALL=(root) NOPASSWD: /usr/sbin/rndc reload

组 mailadmin 可以作为 root 用户,执行一些邮件服务器控制命令。可以在 “snow” 和 “rain”这两台主机上执行 用户 nobody 可以以 root 用户执行rndc reload命令。可以在所有主机上执行。同时可以不输入密码。(正常来说 sudo 都是要求输入调用方的密码的)

3.安装 KDE Plasma 桌面环境

1
pacman -S plasma-meta konsole dolphin  #安装plasma-meta元软件包以及终端和文件管理器

4.配置 greeter sddm

1
systemctl enable sddm

5.设置交换文件 swap(可选)

在桌面环境中,交换分区或文件用来实现休眠(hibernate)的功能,即将当前环境保存在磁盘的交换文件或分区部分。除此之外,某些特定软件需要 swap 才可以正确运行。交换文件与分区性能相同,且交换文件更为灵活,可随时变更大小,增加与删除。[1]

1
2
3
4
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress #创建4G的交换空间 大小根据需要自定
chmod 600 /swapfile #设置正确的权限
mkswap /swapfile #格式化swap文件
swapon /swapfile #启用swap文件

最后,向/etc/fstab 中追加如下内容:

1
/swapfile none swap defaults 0 0

KDE 自身提供开箱即用的睡眠功能(suspend),即将系统挂起到内存,消耗少量的电量。休眠(hibernate)会将系统挂起到交换分区或文件,几乎不消耗电量。睡眠功能已可满足绝大多数人的需求,如果你一定需要休眠功能,可以参考官方文档设置休眠相关步骤。

6.开启 32 位支持库

1
vim /etc/pacman.conf

去掉[multilib]一节中两行的注释,来开启 32 位库支持。

最后:wq 保存退出,刷新 pacman 数据库

1
pacman -Syyu

重启电脑,即可看到欢迎界面,输入新用户的密码即可登录桌面

7.安装基础功能包

进入桌面后,搜索 konsole。它是 KDE 桌面环境默认的命令行终端。

首先先进行桌面环境中的网络设置:

1
2
3
sudo systemctl disable iwd                                                  #确保iwd开机处于关闭状态,其无线连接会与NetworkManager冲突
sudo systemctl stop iwd #同上,立即关闭iwd
sudo systemctl enable --now NetworkManager #确保先启动NetworkManager,并进行网络连接 若iwd已经与NetworkManager冲突 则执行完上一步重启一下电脑即可。

接下来安装一些基础功能包。

1
2
3
4
5
6
7
8
9
10
sudo pacman -S sof-firmware alsa-firmware alsa-ucm-conf                     #一些可能需要的声音固件
sudo pacman -S ntfs-3g #识别NTFS格式的硬盘
sudo pacman -S adobe-source-han-serif-cn-fonts wqy-zenhei #安装几个开源中文字体 一般装上文泉驿就能解决大多wine应用中文方块的问题
sudo pacman -S noto-fonts-cjk noto-fonts-emoji noto-fonts-extra #安装谷歌开源字体及表情
sudo pacman -S firefox chromium #安装常用的火狐、谷歌浏览器
sudo pacman -S ark #与dolphin同用右键解压
sudo pacman -S p7zip unrar unarchiver lzop lrzip #安装ark可选依赖
sudo pacman -S packagekit-qt5 packagekit appstream-qt appstream #确保Discover(软件中心)可用 需重启
sudo pacman -S gwenview #图片查看器
sudo pacman -S git wget kate bind #一些工具

不要安装过多字体:在字体超过 255 种时,某些 QT 程序可能无法正确显示某些表情和符号,详见链接2

8. 设置 DNS

一般来说,如今大多电脑连接的路由器是可以自动处理 DNS 的,如果你的路由器不能处理,则需要额外进行 DNS 的设置。同时,如果使用 ISP 提供的默认 DNS,你的网络访问记录将存在更大的,被泄露或被当局存储记录的风险。除此之外,使用 ISP 提供的 DNS 还有可能将某些服务解析至一些已经失效或劣化的服务器。即使你的网络环境可以自动处理 DNS 设置,我们还是建议你使用可信的国际通用 DNS 设置。如下的配置将固定使用谷歌的 DNS,但是网络访问延迟可能增加。在阅读完随后的代理设置一节后,你的 DNS 请求将均通过代理发送,这将在 DNS 发送方面最大限度的保障你的隐私和安全。

vim 编辑/etc/resolv.conf,删除已有条目,并将如下内容加入其中

1
2
3
4
nameserver 8.8.8.8
nameserver 2001:4860:4860::8888
nameserver 8.8.4.4
nameserver 2001:4860:4860::8844

如果你的路由器可以自动处理 DNS,resolvconf 会在每次网络连接时用路由器的设置覆盖本机/etc/resolv.conf 中的设置,执行如下命令加入不可变标志,使其不能覆盖如上加入的配置[3][4]

1
sudo chattr +i /etc/resolv.conf

9.设置系统为中文

打开 System Settings > _Regional Settings 在语言中添加中文加入,应用即可。

接下来编辑 ~/.config/plasma-localerc ,将其中的 LANG 值更改为 zh_CN.UTF-8

10.安装 yay

AUR 为 archlinux user repository。任何用户都可以上传自己制作的 AUR 包,这也是 Arch Linux 可用软件众多的原因。由于任何人都可上传,也存在对应的风险,一般选用大众认可的包即可。

使用 yayparu 可以安装 AUR 中的包。由于中国大陆政府封锁 Github的原因,你很可能没有办法用 yay 官方仓库中正常的方式安装 yay,所以 ArchLinuxStudio 提供一份可以直接安装的 bin 包以供你在安装时暂时使用。

执行如下命令安装 yay。

1
2
wget https://raw.githubusercontent.com/ArchLinuxStudio/ArchLinuxTutorial/master/docs/res/yay-bin-12.3.3-1-x86_64.pkg.tar.zst
sudo pacman -U yay-bin-12.3.3-1-x86_64.pkg.tar.zst

github.io 与 raw.githubusercontent.com 也被中国大陆政府封锁,只是封锁力度暂时还没有很大。如你在下载过程中卡住,可以尝试 ctrl+c 终止命令后重新尝试下载,也可尝试更换手机热点的网络环境再次进行下载,后文安装 Qv2ray 时同理。当你配置好全局代理后,你将不再需要担心任何网络封锁问题。我们将持续为本书读者提供突破互联网审查的可靠流程。

11.安装输入法

Fcitx5 官方文档 中文及日文输入法均体验良好。

1
2
3
4
5
6
sudo pacman -S fcitx5-im #基础包组
sudo pacman -S fcitx5-chinese-addons #官方中文输入引擎
sudo pacman -S fcitx5-anthy #日文输入引擎
yay -S fcitx5-pinyin-moegirl #萌娘百科词库 由于中国大陆政府对github封锁,你可能在此卡住。如卡住,可根据后文设置好代理后再安装
sudo pacman -S fcitx5-pinyin-zhwiki #中文维基百科词库
sudo pacman -S fcitx5-material-color #主题

设置环境变量:编辑文件 EDITOR=vim sudoedit /etc/environment 加入以下内容。konsole 以及 dolphin 都需要这些环境变量,倒是 chrome 和 firefox 都不需要就可以输入中文

1
2
3
4
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx

打开 系统设置 > 区域设置 > 输入法,先点击运行Fcitx即可,拼音为默认添加项。如你还需要更多输入法如五笔,则再点击添加输入法,找到简体中文下的五笔 ,点击添加即可加入五笔输入法。

接下来点击 拼音 右侧的配置按钮,点选云拼音在程序中显示预编辑文本 最后应用。

回到输入法设置,点击配置附加组件,找到 经典用户界面 在主题里选择一个你喜欢的颜色 最后应用。

注销,重新登陆,就可以发现已经可以在各个软件中输入中文了


  • RIME 中州韵输入法引擎(英语:Rime Input Method Engine,又称 Rime 输入法)是由佛振编写的开源中文输入法,目前项目网站、源代码均托管在 GitHub。基于同一个核心架构,该输入法分为三个官方发行版:Linux 发行版中州韵(ibus-rime)、Windows 发行版小狼毫(Weasel)、macOS 发行版鼠须管(Squirrel)。另有数个第三方发行版:Linux 发行版 fcitx-rime、Windows 发行版 PRIME、macOS 发行版 XIME、Android 发行版同文输入法(Trime)、iOS 发行版 iRime。

这里介绍一下 fcitx5-rime 的安装方式 ‘’’bash sudo pacman -S fcitx5-rime #不是 fcitx-rime,因为 fcitx 与 fcitx5 有版本冲突 ‘’’ 然后打开 打开 系统设置 > 区域设置 > 输入法 >,点击添加输入法,找到 RIME,即可添加 RIME 输入法。 RIME 输入法默认是繁体字按 Ctrl+~,即可打开选单,使用键盘上的←→,选择朙月拼音·简化字,回车。

12.配置系统默认编辑器

默认情况下,Arch Linux 在一些终端编辑场景使用 vi 编辑器,但是我们使用 vim。如果不做一个额外配置,在 git 等场景下,在终端调用编辑器会出错。编辑 EDITOR=vim sudoedit /etc/profile 文件,加入如下内容,将 vim 设置为默认 EDITOR

1
export EDITOR='vim'

这样就不用在每次执行命令时都指定一遍 EDITOR=vim 了。

13.启用蓝牙相关功能

对于蓝牙及无线网卡,在 Linux 下推荐使用英特尔产品。博通以及瑞昱产品在兼容性,稳定性方面在 Linux 中表现很差,会带来很多不必要的麻烦,如在驱动,BLE 方面的支持很差或者没有。

如果你有蓝牙设备,需要安装蓝牙软件包并启用蓝牙服务。随后在系统设置中进行添加设备与连接即可。注意,文件传输功能现在需要额外安装包bluez-obex,其功能与 2024 年已从 bluez 包中分离出来。

1
2
sudo pacman -S bluez bluez-utils bluez-obex
sudo systemctl enable --now bluetooth

设置开机自动启用蓝牙设备,编辑/etc/bluetooth/main.conf文件,将AutoEnable设置为 true 即可。如果一些设备依然无法实现开机自动连接,尝试继续将Experimental以及KernelExperimental两项的值设置为 true。

博通(Broadcom)网卡在 Linux 下的支持度很差,无论是无线还是蓝牙模块。对于无线功能来说,一般直接安装 broadcom-wl 包即可。

1
sudo pacman -S broadcom-wl

对于蓝牙模块,需要查阅broadcom-bt-firmware仓库,在 brcm 文件夹中找到适合于自己网卡型号的 hcd 文件,将其下载并置于 /lib/firmware/brcm 文件夹中后重启即可。如果你无法确认自己的网卡型号对应哪一个 hcd 文件,那就全部下载并置于文件夹中。

ref:

魔法学院

代理的初步设置

在经过上述步骤后,你应该已经有了 SOCKS5 代理以及 HTTP 代理的地址和端口。本小节描述如何单独为一些程序设置代理,但是需要提醒的是,这不是我们推荐的使用方式,如果你是 Linux 的日常重度使用者,你应该使用后续将会讲述的全局代理方式。

在节点链接后,你可在 KDE 的系统设置 -> 网络设置 -> 代理中设置代理。注意,系统设置中的代理配置在 KDE 桌面环境中并不是所有应用都会遵守,经过测试,chrome/chromium/brave 浏览器与 steam 等应用会遵循 KDE 的系统代理设置。没有遵循系统设置代理的应用还需要单独进行代理配置。下面说明几种常用的软件中单独配置代理的方式。

  • Firefox 浏览器
    火狐浏览器自身的设置选项中存在代理配置,进行配置即可。

  • 终端
    可以通过 export 命令设置当前终端的代理方式。比如使用 tldr 或 github raw 等资源需要设置 https 代理。

    1
    2
    3
    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

    不同终端命令所识别的环境变量名不同,如 all_proxy 对 curl 生效,而对 wget 则不生效,具体可查看各个命令的 man page。

  • code OSS
    File => Preference => Settings
    搜索 proxy,在其中填入 http 代理地址即可

  • proxychains-ng
    如果对于一个应用,KDE 的全局代理不生效,在终端 export 了 ALL_PROXY 变量再用终端启动此应用代理也不生效,并且这个应用自身也没有配置代理的选项,此时可以尝试使用 proxychains-ng,它可以为单行命令配置代理。它是一个预加载的 hook,允许通过一个或多个 SOCKS 或 HTTP 代理重定向现有动态链接程序的 TCP 流量。

    1
    2
    sudo pacman -S proxychains-ng
    sudo vim /etc/proxychains.conf

    把配置文件中最后一行改为本地代理的 ip 和端口,如socks5 127.0.0.1 1089

    proxychains 不能够支持 yay 以及其他一些程序,详见Incompatible with proxychainsproxychains4 with Go lang。这种情况可以使用透明代理。

更加全面的系统级全局代理

由以上各部分可以看到,为各个软件单独设置代理是很麻烦的。如果你把 Linux 作为主力使用,那么配置透明代理也是必须的,如果你使用 V2rayA,那么可以很方便的在设置中开启全局代理。如果你的技术水平不高,建议你直接使用 V2rayA 的全局代理。如果你使用 Qv2ray,请阅读随后的透明代理一节。

对于全局代理的情况下,开启 UDP 支持,DNS 请求也将被拦截并导入 v2ray 中,更详细的描述将在下节进行。

为什么我们不建议使用分流代理?分流代理可能存在什么危险?

分流代理在大多数场景下指的是:在访问国内资源时,使用直连的方式,而在访问国外被墙的资源时,使用代理进行连接。这种网络的使用方式确实会非常方便,但是存在显而易见的危险,然而大众几乎并没有意识到这里的问题。

使用分流代理的方式非常容易泄露你自身的隐私信息,包括但不限于 IP 地址,浏览器以及硬件指纹(几乎可以唯一标记你这一个用户的指纹)等等一系列信息,并且可以将你使用的代理 IP 与你自身的真实 IP 进行对应。

举例来说,一个最常见的例子就是某个国外的网站使用了百度统计脚本,这时你的代理 IP 与真实 IP 的对应信息可以轻松的被这样的网站进行对应,这是非常危险的。 另一个例子就是一些恶意的邮件,比如你在使用国外的邮箱服务,接收到了一个恶意邮件,这个邮件中嵌入了一些国内的资源如图片,那么你的真实 IP 等信息也可以被轻松获取。

真实的例子不止以上两个,还有很多类似的情况存在。我们一直为了大众的隐私与安全而战,希望今后你可以放弃使用分流代理的网络连接方式。


使用 Qv2ray+cgproxy 配置透明代理

全局代理,也即透明代理。本节所述为真正的,操作系统级别的代理,而不是仅仅针对浏览器中全部网址的”全局代理”。之所以叫做透明代理,是因为这种系统级别的代理对于操作系统中的各个应用相当于是透明的,应用们感知不到代理的存在。之所以叫做全局代理,很明显意为操作系统级别的、全局的代理。这两个词汇在中文环境中经常同时使用,并且全局代理一词容易引起混淆。

本节主体原文收集自 Qv2ray 用户组,并非原创,我们仅在其基础上进行更新、完善与修正。cgproxy 项目地址

安装与设置

  1. 安装cgproxy软件。可直接在 AUR 上安装。由于封锁 Github 的原因,你很可能没有办法用正常 yay 的方式通过 AUR 安装 cgproxy,所以 ArchLinuxStudio 提供一组可以直接安装的包以供你使用。
1
2
wget https://archlinuxstudio.github.io/ArchLinuxTutorial/res/cgproxy-0.19-1-x86_64.pkg.tar.zst
sudo pacman -U cgproxy-0.19-1-x86_64.pkg.tar.zst

github.io 也被封锁,只是封锁力度暂时还没有很大。如你在此过程中卡住,可以尝试 ctrl+c 终止命令后重新尝试下载,也可尝试更换手机热点的网络环境再次进行下载。当你配置好全局代理后,你将不再需要担心任何网络封锁问题。我们将持续为本书读者提供突破互联网审查的可靠流程。

  1. 在 Qv2ray 的“首选项-入站设置”的下方启用任意门设置选项。

    • 监听 ipv4 地址可填127.0.0.10.0.0.0,建议前者。若需双栈代理,则在监听 ipv6 地址填上::1(如果监听 ipv4 填了 0.0.0.0 则可不填)。
    • 嗅探选择 Full,Destination Override 的三项均勾选。
    • 模式选择“tproxy”。

    如果是复杂配置,则需要手动添加相应的 dokodemo-door 入站。由于目前版本复杂配置并没有提供 tproxy 选项,因此 tproxy 模式需要通过编辑 json 来实现。

  2. 配置cgproxy,编辑/etc/cgproxy/config.json

    • cgroup_proxy中括号里加上”/“(包含引号)port改为 Qv2ray 首选项里的透明代理的端口。
    • cgproxy默认配置是代理所有 tcp 和 udp,ipv4 和 ipv6 的流量,如果不希望代理其中的某种(些)流量,则将对应的enable_xxx改为 false。注意这里的配置要和 Qv2ray 选项里的配置一致(如,Qv2ray 选项里没有勾选 udp,则这里务必把enable_udp改为 false)。
    • 如果希望当本机作为网关设备时为连接到本机网关的其他设备(如连接到本机开设的 wifi 热点的设备)也提供透明代理,则把enable_gateway改为 true。
  3. (重要)透明代理的基本原理是拦截系统发出的所有流量,并将这些流量转到代理工具里,从而实现让系统所有流量都走代理的目的。此时,为了避免流量出现死循环(即代理工具发出的流量又转回到代理工具里),需要将代理工具排除在透明代理环境外面。有两种方式可以实现这一点:

    • 通过execsnoop监控代理工具的启动,并自动将其移至透明代理环境外面:

      • cgproxy软件自带execsnoop支持,以上cgproxy测试过的发行版均可支持。
      • 编辑/etc/cgproxy/config.json,在program_noproxy中括号里加上”v2ray”,”qv2ray”(包含引号和逗号),以使qv2rayv2ray发出的流量不经过透明代理。如果你的v2rayqv2ray不在PATH里,则需要填写它们的绝对路径。
    • 在每次连接代理节点时,让qv2ray自己把自己移到透明代理环境外面:

      • 安装 Qvplugin-Command 插件,在插件设置里的“pre-connection”栏里加上一句

        1
        sh -c "cgnoproxy --pid $(pgrep -x qv2ray)"

        即可。

  4. (重要)如果启用了 udp 的透明代理(dns 也是 udp),则给 v2ray 二进制文件加上相应的特权:

    1
    sudo setcap "cap_net_admin,cap_net_bind_service=ep" /usr/bin/v2ray

    否则 udp 的透明代理可能会出问题。

    如果每次更新了 v2ray 二进制文件,都需要重新执行此命令。

  5. 启动透明代理服务:systemctl start cgproxy.servicesystemctl enable --now cgproxy.service

以上步骤完成后,透明代理应该能正常使用了。

dns 配置说明

如果勾选了“dns 拦截”,且启用了 dns 和 udp 的透明代理,则 v2ray 会拦截对系统 dns 的请求,并将其转发到 v2ray 的内置 dns 里,即让 v2ray 内置 dns 接管系统 dns。但 v2ray 内置 dns 是会遵循路由规则的。

如果没勾选“dns 拦截”,则 v2ray 虽然不会让内置 dns 接管系统 dns,但如果启用了 dns 和 udp 的透明代理,则系统 dns 也会走透明代理进 v2ray,并遵循 v2ray 的路由规则。

因此,在启用了 dns 和 udp 的透明代理时,若系统 dns 或 v2ray 的内置 dns 配置不当,可能导致 dns 请求发不出去,从而影响正常上网。

由于 qv2ray 常见的路由规则是绕过国内 ip,国外 ip 均走代理。在这个情形中,以下两个配置是典型的有问题的 dns 配置方式:

  • 配置了国外普通 dns 作为首选,但代理本身不支持 udp(此时 dns 查询的 udp 流量出不去,dns 无法查询)
  • 配置了使用域名的 doh 作为首选。此时 doh 的域名无法被解析,从而 doh 也无法使用。

一般而言,如果并不在意将 dns 查询发给谁,那么,在绕过国内 ip 的情况下,只需要配置一个国内普通 dns 作为首选即可保证不会出问题。若代理本身不支持 udp,又希望使用国外 dns,则可以考虑使用使用 ip 的 doh(如https://1.1.1.1/dns-query等)。

如果需要更复杂的 dns 配置,建议参考上游文档,并选择合适的不会影响正常上网的 dns 配置。


在显示的为 firefox 等应用设置代理时,因为这些应用程序知道代理的存在,所以不会发出 DNS 请求。而透明代理的情况下,各应用感知不到代理的存在,所以会发出自己的 dns 请求。

这时通过 cgproxy 可将全部 tcp/udp 的流量(包括 DNS 查询)转给 v2ray。由于这种情况下,一定会有 DNS 查询流量的产生,所以为了保证本机不发出任何 DNS 请求(这是为了隐私和安全),需要进行以下设置。此时需要分两种情况讨论。

  • 如果不进行任何 v2ray 的内置 DNS 设置以及 DNS 拦截,那么 DNS 流量会使用本机的 DNS 设置如 8.8.8.8 发出,这种情况不论如何配置 v2ray(全局或者分流),只要保证对于 8.8.8.8 的请求能够通过代理发出即可。

  • 如果 v2ray 通过形如如下路由规则,拦截经由 dokodemo-door 接收到的 dns 流量到 dns outbounds,那么 v2ray 是可以导向 DNS 查询流量到”dns-out”的 out bound 的,也即 dns-outbound 进行的”拦截”和”重新转发”。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    rules:
    {
    "inboundTag": [
    "tproxy-in-1",
    "tproxy-in-2"
    ],
    "outboundTag": "dns-out",
    "port": "53",
    "type": "field"
    },

    此时 dns outbound 应该调用内置 DNS 设置进行解析,假如 v2ray 内置 DNS 设置为 1.1.1.1,此时原有对于 8.8.8.8 的 DNS 请求就会转而向 1.1.1.1 请求(随后对 1.1.1.1 的请求还是会遵循你的路由规则的),并将结果返回给应用端。你可以通过开启 qv2ray 更详细的日志级别进行验证。

如果只是为了阻止本机发 dns 请求,完全可以不使用 fakedns。fakedns 在透明代理的条件下确实可以减少一次 dns 请求,理论上确实会快一点。但是也在有的文章指出如果所有域名都伪造 dns 返回可能会有问题。

题外话:使用 clientIP 可解决使用代理服务器解析 DNS 若返回国外 CDN 的网址时网速慢的情况,但是前提是你信任代理服务器和 DNS 服务器接收你的本地 IP,为了你的安全,不建议使用。

常见问题

  • 启用透明代理后无法访问任何外网,且 v2ray 的 cpu 占用率飙升

    可能是流量陷入死循环了,检查第 4 步有没有正确配置。如果配置没问题,执行systemctl status cgproxy.service看下有没有诸如info: process noproxy pid msg: xxx之类的输出。如果没有,则说明 cgproxy 软件或 execsnoop 没有正常工作。注意 cgproxy 软件需要 cgroup v2。

    尝试退出 qv2ray,随后在终端里执行cgnoproxy qv2ray看是否恢复正常,如恢复正常,说明 cgproxy 正常工作,只是 execsnoop 没有正常工作。由于 execsnoop 一定程度上依赖于内核,非上述 cgproxy 测试过的发行版用户,建议使用第 4 步中的第 2 种方法。另外,对 kde 用户,5.19+版的 plasma 会给从 krunner 里启动的程序额外设置 cgroup,尽管 cgproxy 软件考虑到了这一点,但仍有极少数场合可能出现 plasma 设置的 cgroup 覆盖掉了 cgproxy 设置的 cgroup 的情况,此时通常重启一下 qv2ray 即可。

  • 启用透明代理后,无法访问(部分)域名

    可能是 dns 无法解析(部分)域名。一般这种故障只发生在启用了 dns 及 udp 透明代理的时候。

    终端里执行dig 无法访问的域名看下报什么错:

    • 若出现类似reply from unexpected source: 192.168.0.100#42050, expected 8.8.8.8#53的报错,则检查第 5 步的有没有正确配置。
    • 若出现类似connection timed out; no servers could be reache的报错,则说明 dns 查询的流量出不去,此时往往是系统 dns 或 v2ray 内置 dns 配置不当。请检查是否出现了前文提到的几种不当配置。如果没有勾选“dns 拦截”,则此时 v2ray 虽然不会用内置 dns 接管系统 dns,但它仍然会让系统 dns 走透明代理,从而遵循 v2ray 的路由规则,此时需要检查系统 dns 是否是前文提到的那几种不当配置。
  • 能不能分应用代理(如,下载 BT 时不能走代理)

    对于本机的程序,可以,可通过两种方式实现:

    • 通过cgnoproxy实现:如,在命令行中执行cgnoproxy qbittorrent,启动的 qbittorrent 程序就不会走透明代理。又如,在命令行中执行cgnoproxy --pid 12345,执行之后 pid 为 12345 的程序就不再走透明代理。这种方式可支持任何应用。
    • 通过/etc/cgproxy/config.json实现:在配置里的program_noproxy中括号里加上相应的应用即可。这种方式只支持可执行文件,不支持各种脚本。如希望把 clash 与 kde connect 加入 noproxy 规则,则在把此字段补全成[“v2ray”, “qv2ray”, “clash”, “/usr/lib/kdeconnectd”]即可。注意修改config.json之后,需要重启 cgproxy 服务才能生效,执行systemctl restart cgproxy.service即可。

    对于当本机作为网关设备时为连接到本机网关的其他设备,不行,那些设备的所有流量(到本机的流量除外)都必然会走代理。

  • 透明代理环境中响应速度变慢

    由于 iptables 是在域名解析成 ip 之后,才对相应的流量进行重定向。因此,在透明代理环境中,访问一个域名 s 可能会需要解析至少 2 次 dns(系统解析一次,重定向到 v2ray 之后 v2ray 分流模块再解析一次)。因此,响应理论上是会变慢一点的,变慢的幅度取决于系统 dns 及 v2ray 的 dns 的响应速度。

  • 开启 UDP 支持后报错too many open files

    核心问题是,Linux 系统定义了一系列限制,其中一种限制是最大打开文件数,并且有软限制和硬限制,具体的限制结果可以通过ulimit -Saulimit -Ha查看。一般来说 arch 默认的软限制 open files 的值为 1024,这个数值太小。硬限制的 open files 的值为 524288,这个数值够大了。打开网页过多,或者开启 udp 加速的时候,连接数(打开的文件数)很容易超过 1024 这个数,所以就被限制住了。解决办法很简单,只需要修改系统级别的关于这个限制的配置文件,在/etc/security/limits.conf 文件的最末尾,加上下面这行,然后重启即可:

    1
    *   soft    nofile  8192  #不要落下了最前面的星号
  • 使用 docker/libvirt 时与 cgproxy 不能正常使用。解决方法见cgproxy issue3


显卡驱动

现在是 2022 年,显卡驱动的安装在 Arch Linux 上已经变得非常容易。本文区分核芯显卡和独立显卡两大类描述显卡驱动的安装。注意,确保你已经按照本教程之前的章节安装配置好科学上网、安装好必要的包后再向下进行,不要多个教程混着看,你可能漏掉了本教程前置步骤中的某些操作,从而造成问题。

所有 AMD 显卡建议使用开源驱动。英伟达显卡建议使用闭源驱动,因为逆向工程的开源驱动性能过于低下,本文也只描述英伟达闭源驱动安装。如果你支持自由软件运动,请尽可能使用具有官方支持开源驱动的英特尔和 AMD 显卡。

核芯显卡

英特尔核芯显卡

官网文档

英特尔核芯显卡安装如下几个包即可。

1
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel

xf86-video-intelarch wiki 里写的很多发行版不建议安装它,而应使用 xorg 的 modesetting 驱动(也就是什么都不用装的意思)。经过我们测试目前确实是默认 modesetting 驱动较为稳定。

注意,只有 Intel HD 4000 及以上的核显才支持 vulkan。

AMD 核芯显卡

对于具有核芯显卡的 AMD 处理器,需要先确定核显架构(Architecture)是什么,再决定安装什么驱动。推荐在 techpowerup 网站进行查询,信息非常全面。在确定了显卡架构后,再根据架构对照这个文档决定安装什么驱动。**对于 GCN2.0 及以下架构的老显卡,直接安装开源 ATI 驱动即可,原本闭源的老旧的 Catalyst 驱动在 2021 年已被废弃。GCN2.0 及以下架构的老显卡也不要使用开源的 AMDGPU 驱动,因为其仅处于实验性质,需要各种自定义内核编译选项与配置,非常麻烦,得不偿失。**对于新型号,即 GCN3 架构及更新型的核芯显卡,直接安装开源驱动 AMDGPU 即可,也就是以下这几个包。

1
sudo pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon libva-mesa-driver lib32-libva-mesa-driver mesa-vdpau lib32-mesa-vdpau
  • 比如你的笔记本 cpu 是目前常见的 AMD R7 4800U,那么它的核显为 Vega 8。通过查询,可知其为 GCN 5.0 架构,那么对照 arch 官方文档,你可选择安装 AMDGPU 开源驱动。
  • 再比如你的台式机 cpu 是目前常见的 锐龙 5 3400G,那么它的核显为 Vega 11。通过查询,可知其为 GCN 5.0 架构,那么对照 arch 官方文档,你可选择安装 AMDGPU 开源驱动。
  • 再老一些的 apu A10-9700 处理器 ,它的核显为 Radeon R7。通过查询,可知其为 GCN 2.0 架构,那么对照 arch 官方文档,你选择安装 ATI 开源驱动。

独立显卡

这部分会分为仅有独立显卡(无核显)与同时拥有独立显卡和核芯显卡两种情况进行讲解。

英伟达独立显卡

本节建议查看官方文档,此处只列出主要的显卡系列。官方文档

较新型号的独立显卡直接安装如下几个包即可。

1
sudo pacman -S nvidia nvidia-settings lib32-nvidia-utils #必须安装

如果是 GeForce 630 以上到 GeForce 920 以下的老卡,安装 nvidia-470xx-dkmsAUR及其 32 位支持包。使用 dkms 驱动同时需要 headers。

1
yay -S nvidia-470xx-dkms nvidia-settings lib32-nvidia-470xx-utils linux-headers

如果是 GeForce 630 以下到 GeForce 400 系列的老卡,安装 nvidia-390xx-dkmsAUR及其 32 位支持包。使用 dkms 驱动同时需要 headers。

1
yay -S nvidia-390xx-dkms nvidia-settings lib32-nvidia-390xx-utils linux-headers

再老的显卡直接使用开源驱动即可。

1
sudo pacman -S mesa lib32-mesa xf86-video-nouveau

在同时拥有核芯显卡和英伟达独立显卡的笔记本上安装驱动是大多数人关注的事情,这里着重讲述。

再次提醒请按照本书前置章节配置好系统后再进行,不要多个教程混看,尤其是一些过时的教程。尤其需要注意的是确保 base-devel 包的安装以及配置好科学上网软件,以及使用 X11 模式。

英伟达双显卡模式官方文档 /// optimus-manager 官方文档

若为同时拥有核芯显卡与英伟达独显的笔记本电脑,同样需要按照上述步骤先安装各个软件包。除此之外还需要安装 optimus-manager。可以在核芯显卡和独立显卡间轻松切换。optimus-manager 提供三种模式,分别为仅用独显,仅用核显,和 hybrid 动态切换模式。

1
yay -S optimus-manager optimus-manager-qt

安装完成后重启即可使用。optimus-manager 安装完成后会默认 enable optimus-manager 的服务,你可在重启前检查其状态,若没有 enable 则手动将其 enable。重启后在菜单栏搜索 optimus-manager 点击即可使用。可在其设置中设置开机自动启动。

1
sudo systemctl enable optimus-manager

此时你应该已经可以进行显卡切换了,如果有问题,请详细阅读 optimus-manager 的文档,里面有详细的描述。由于各类问题太多,本文不进行描述,optimus-manager 的文档很详尽,请自行查看。此处仅列出几项较为重要的注意事项:

  • 如果需要在独显和核显模式间切换,要注意你没安装各类 GPU 监控插件,它们会阻止显卡切换,导致不可预料的错误。
  • 不要使用 Nvidia Control Panel 中的Save to X Configuration file按钮。会导致配置冲突。
  • 在显卡之间的切换时,重新登陆后如在 splash screen 卡住或者黑屏,可以尝试在 tty1 tty2 之间进行切换。
  • 如果你在安装 optimus manager 并重启后,直接黑屏卡死,不能进入系统,很有可能是遇到了常见的”ACPI ISSUE”,简单来说,这是笔记本制造商的实现问题。可以尝试在内核启动参数中加入acpi_osi=! acpi_osi="Windows 2009" 后再尝试。[1]

最后详细说下动态切换模式。本质上其还是使用官方的 PRIME对闭源驱动的方法进行切换。需要设置三个环境变量,或者用 nvidia-prime 包提供的命令 prime-run,二者本质也是一样的,都是设置三个环境变量。

1
2
sudo pacman -S nvidia-prime
prime-run some_program #使用prime-run前缀来用独显运行某些程序

对于 AMD 核显+N 卡独显的读者,optimus-manager 对于这套组合的支持目前已经发布,最新可用版本为 1.4。


如果你不是强烈追求能效控制以及注重电池寿命的用户,那么可以不用往下看了,如果你是,那么需要针对你的硬件以及笔记本型号尝试正确的电源管理方式。此部分的设置可能导致黑屏,并且尝试过程可能较长,也会遇到各类问题,请根据你个人的操作水平自行斟酌是否操作

电源控制做的事情是,在只用核显的模式下,确保正确关闭独立显卡。而在混合模式下,绝大多数情况下 Nvidia 模块实际是始终开启的,电源控制并不生效。这件事情其实很复杂,因为对于不同的显卡型号,以及笔记本型号的组合,可行的方案都是不同的。笼统来说,最广泛适用的办法是 bbswitch。但仍不建议上来就按照此方式安装使用,因为某些特定的硬件就是会出问题,也就是黑屏。这里建议按照 optimus-manager 官方的文档一步一步来,按步骤尝试,最后找到属于你自己的电脑合适的电源管理方式。文档必须详细阅读!

针对大多数笔记本适用的 Bbswitch,此处进行安装使用的讲解。首先安装包 bbswitch。若使用其它内核,则安装包 bbswitch-dkms。

1
sudo pacman -S bbswitch #安装 bbswitch 切换方式

接下来右键点击 optimus-manager 的托盘设置,在 Optimus 选项卡中的 switch method 选择 Bbswitch 即可。

AMD 独立显卡

AMD 独立显卡的驱动安装步骤实际上 AMD 核芯显卡是相同的,都需要先确定架构,然后选定正确的驱动安装即可。真正需要关注的是如何在核芯显卡和独立显卡间进行切换。可以使用 PRIME 对开源驱动的双显卡切换方式。

此外,可以使用 glmark2DRI_PRIME=1 glmark2 分别对核显和独显进行测试,选择分数更高的一个进行使用。可以在 steam 游戏的启动前缀中加入DRI_PRIME=1 mangohud %command%来使用独显。(关于 mangohud)。

笔记本上使用独立显卡运行 steam 游戏的另一个例子。

1
2
DRI_PRIME=1 steam steam://rungameid/570 #运行dota2
DRI_PRIME=1 steam steam://rungameid/730 #运行cs go

性能测试

官方文档

最传统和广为人知的方式为使用glxgears命令进行测试,其属于mesa-utils包。但其仅仅只能提供简单的测试场景及帧数显示,只测试了当前 OpenGL 功能的一小部分,功能明显不足。我们推荐如下两种工具。

glmark2

glmark 提供了一系列丰富的测试,涉及图形单元性能(缓冲,建筑,照明,纹理等)的不同方面,允许进行更全面和有意义的测试。 每次测试单独计算帧速率。 最终,用户根据以前的所有测试获得了一个成绩分数。在 archlinux 上属于包glmark2AUR

Unigine benchmark

Unigine 3D 引擎是一个更全面的基准测试工具。 截止目前有五个版本,从旧到新分别是

  • sanctuary(2007)
  • tropics(2008)
  • heaven(2009)
  • valley(2013)
  • superposition(2017)

可从AUR下载全部版本。它们均为专有软件。

显卡信息查看

对于英伟达显卡,nvidia-settings 这个包即可全面的展示显卡相关信息。

对于 AMD 显卡,稍微麻烦一些,通过 yay 安装 radeon-profile-git 这个包,同时安装其依赖 radeon-profile-daemon,最后启动这个进程。即可以图形化的方式查看 amd 显卡信息。github 项目地址

1
sudo systemctl enable --now radeon-profile-daemon.service

注意,不要对左下角的 auto low high 进行更改 有 bug 会卡死。同时,显存占用在某些型号显卡上展示可能有误。

后续

如果作为一个普通使用者,到这里你的系统已经配置完毕了。不会命令行也没太大关系,你可以慢慢探索 KDE 这个桌面环境,记住时常用如下命令或 Discover 软件更新系统即可。

1
2
sudo pacman -Syyu #更新官方仓库
yay -Syyu #同时更新官方仓库与AUR

接下来你可以查阅娱乐、办公、多媒体等章节了解更多使用软件的安装与使用。如果你需要成为一名较为专业的人员,那么请阅读进阶、以及编程等章节。


Linux 日常操作与基础知识

阅读完新手上路章节,你的系统已完全可以使用,KDE 桌面环境提供了强大的 GUI 以供普通用户使用。按 Windows 键(Linux 下也常被叫做 Meta 键)呼出菜单栏,找到设置=>系统设置,可以找到绝大多数系统设置项。

但如果想要游刃有余的掌控你的系统,你还需要阅读掌握本文的内容。 如果你想进一步详细了解本文各部分的详细知识,可以点击在各个小节给出的拓展链接进行学习。 如果你不想详细了解,本章介绍的知识也足够你来应付日常的使用。

必须掌握的 Linux 知识

此处只介绍最基本的,最必要的 Linux 知识点与小技巧 。

  1. 在 Linux 中,文件目录结构与 Windows 完全不同。Windows 存在 C 盘、D 盘等盘符,而在 Linux 中不存在这些划分,最上层的目录是根目录,路径为 / ,并以一个树形结构从此向下一级一级区分。
  2. 对于 Linux 的树形文件结构,存在相对路径与绝对路径之分。绝对路径是代表从根路径 / 开始的完整路径,如/home/testuser/Download。相对路径代表从当前目录,到目标目录的一个部分路径。比如当前你所在的目录为/home/testuser,那么切换到绝对路径/home/testuser/Download的相对路径即为./Download。其中./代表从当前目录,再向下寻找。另外,..这种两个句点代表的是向上层寻找,比如你当前所在的路径为/home/testuser/Download,向上寻找到/home/testuser/Desktop的相对路径即为../Desktop
  3. 简单来说,Linux 中存在两类用户。第一类用户即为 root 用户,也称为超级用户,它拥有系统中最高的权限。第二类用户就是除了 root 用户的普通用户,他们可以拥有不同等级的权限。使用 root 权限时需要十分小心。
  4. 理论上来说,任何图形化界面中的操作都可以用对应的命令行命令完成。如果你打开某个程序报错,不妨试试找到它的对应启动命令,在终端中执行此命令,并观察它运行时的错误日志输出,查阅相关资料,解决问题。

终端操作基础

如果想要熟练掌握 Linux,就必须掌握终端的常见命令与使用方式。

1
2
3
4
5
6
7
8
9
ls /some_path       # 查看某个文件夹下的文件与子文件夹 /代表根目录,是Linux最顶端的路径,是绝对路径
pwd # 查看当前终端所在路径
cd /home/testuser # 切换目录命令,将当前终端切换到某一个路径下
cp ./a.cpp ./b.cpp # 复制命令 将当前路径下的a.cpp复制一份为b.cpp ./代表当前文件夹所在路径,是相对路径
cp -r ./a ./b # 复制整体文件夹
rm b.cpp # 删除命令 删除b.cpp
mv a.cpp b.cpp # 移动(重命名)命令 将a.cpp更名为b.cpp
mkdir new_folder # 新建文件夹new_folder
sudo some command # 使普通用户以root权限执行某些命令

bash 终端设置路径为 ~/.bashrc

1
2
3
4
$include /etc/inputrc # 引入全局bash配置
set completion-ignore-case on # 补全路径忽略大小写
set horizontal-scroll-mode Off # 允许提示换行
set bell-style none # 关闭提示警告音

拓展链接:推荐阅读在线进阶书籍 Linux 命令行与 Shell 脚本教程

Pacman 包管理

Pacman 是 Arch Linux 的包管理器,它用于安装、删除、查询软件等。

1
2
3
4
5
6
7
8
9
10
sudo pacman -S package_name     # 安装软件包
sudo pacman -Syu package_name # 升级系统并安装软件包,Arch Linux 不支持部分升级,建议用此命令先升级再安装
sudo pacman -Syu # 升级系统
sudo pacman -Syyu # 升级系统 yy标记强制刷新 u标记升级动作
sudo pacman -R package_name # 删除软件包
sudo pacman -Rs package_name # 删除软件包,及其所有没有被其他已安装软件包使用的依赖包
sudo pacman -Qdt # 找出孤立包 Q为查询本地软件包数据库 d标记依赖包 t标记不需要的包 dt合并标记孤立包
sudo pacman -Rs $(pacman -Qtdq) # 删除孤立软件包
sudo pacman -Fy # 更新命令查询文件列表数据库
sudo pacman -F xxx # 当不知道某个命令属于哪个包时,用来查询某个xxx命令属于哪个包

一个好用的图形化包管理软件

1
yay -S octopi #包管理器前端界面

拓展链接: 官方文档

系统服务的操作与介绍

Linux 系统中运行着各种服务,你需要掌握查询,变更服务状态的方式。同时对创建服务最好也有大致的了解。这里讲述命令systemctl的用法。以 dhcpcd 为例

1
2
3
4
5
6
7
8
9
systemctl start dhcpcd          # 启动服务
systemctl stop dhcpcd # 停止服务
systemctl restart dhcpcd # 重启服务
systemctl reload dhcpcd # 重新加载服务以及它的配置文件
systemctl status dhcpcd # 查看服务状态
systemctl enable dhcpcd # 设置开机启动服务
systemctl enable --now dhcpcd # 设置服务为开机启动并立即启动这个单元:
systemctl disable dhcpcd # 取消开机自动启动
systemctl daemon-reload dhcpcd # 重新载入 systemd 配置 扫描新增或变更的服务单元 不会重新加载变更的配置 加载变更的配置用 reload

拓展链接: systemctl 官方文档 systemd 配置文件样例解释

编辑系统配置文件

用 sudoedit 编辑配置文件

在前面的“桌面环境与常用应用”一节中,我们已经多次编辑了系统配置文件。它们的特点是对系统中的所有用户生效、归 root 用户所有、并且只有 root 用户才拥有写入的权限,这就需要我们用 sudo 提升到 root 权限才能编辑它们。很容易想到用 sudo 命令去运行文本编辑器,以 vim 为例:

1
sudo vim 你要编辑的文件的路径

但是这样却不是最好的方式,因为它违反了“最小权限原则”。因为当我们用 sudo 执行一个命令时,整个进程都会获得 root 权限。也就是说,vim 的所有操作、甚至包括所有的 vim 插件都会在 root 权限下运行,这通常来说是非常危险的。有的文本编辑器甚至会在检测到自身以 root 权限运行的时候拒绝运行,以避免做出危险的操作。

反过来考虑,只是编辑一个文件不需要那么强大的权限,我们只需要拥有对这一个配置文件的读写权限就足够了。而 sudoedit(或 sudo -e,二者是完全等效的)是编辑一个系统配置文件的最佳实践。

1
EDITOR=vim sudoedit 要编辑的文件

sudoedit 命令大致是这样工作的:它会先创建一份普通用户有权编辑的临时文件,把要编辑的文件以 root 权限复制到这个临时文件中,接着根据 EDITOR 等环境变量,以普通用户的权限运行文本编辑器。在文本编辑器编辑完成并退出后,它会再次以 root 权限用这个编辑好的临时文件去覆盖掉原先的配置文件。

关于 sudoedit 的更多信息,详见 sudo 的手册

配置文件的语法高亮

严格来说这不是一个关于 sudoedit 的问题,而是一个关于文本编辑器的问题,但是它经常在用 sudoedit 编辑文件时遇到。

因为 sudoedit 会创建一个随机名称的临时文件,文本编辑器可能不认识这个文件名,不知道该启用什么语法的高亮显示。这时候就需要我们主动告诉文本编辑器该使用什么语法,以 vim 为例,可以在命令行模式下用如下设置语法:

1
:set syntax=文件的语法

另一个问题是如何知道语法的名称。一方面我们可以用搜索引擎搜索,或者在 vim 的内置插件里寻找,不过对于那些普通用户也能读取的配置文件,可以直接用 vim 去查看它,这时候 vim 会以只读模式打开文件,但是会根据文件名启用语法高亮。这样只需要在命令行模式下运行:

1
:set syntax

即可查看当前 vim 所使用的高亮语法。

编辑 sudoers 配置文件

在前面我们编辑过 sudoers 配置文件。sudoers 算是系统配置文件中的一个特例,编辑它的最佳实践不是使用 sudoedit,而是 visudo 命令。

1
2
sudo visudo  # visudo 需要使用 root 权限运行。默认编辑 /etc/sudoers
sudo visudo -f 要编辑的sudoers文件的路径 # 也可以指定文件路径

visudo 与 sudoedit 类似的是,它也会把要编辑的配置文件先复制到一个临时文件,再调用文本编辑器编辑,而不同的是,在开始编辑之前 visudo 还会锁定正在编辑的 sudoers 文件,以此避免两个人同时对它编辑;并且会在编辑完成之后检查 sudoers 的语法,如果发现错误则会拒绝这次编辑的结果。

这是因为,如果在 sudoers 文件中遇到语法错误,sudo 为了安全性,会让整个 sudoers 配置文件都不生效。这样的话,如果普通用户不慎改坏了 sudoers 文件,则有可能失去使用 sudo 命令的权限,就好像“关上了大门并把自己关在了外面”,这时候就需要直接用 root 用户登录甚至需要 live USB 急救才行。而 visudo 检查 sudoers 语法就可以很大程度上避免这种情况发生。

另一方面,visudo 需要使用 root 身份运行,这意味着它的文本编辑器实际上也是以 root 身份运行的,这一点与 sudoedit 不同。为了安全,可以配置为只使用某些受限制的“安全的”文本编辑器来编辑 sudoers 文件。详见 ArchWiki 以及 sudoers 手册中的 editor 一节和 env_editor 一节。

关于 visudo 的更多内容详见手册

文件传输与系统备份

有一点 Linux 经验读者应该知道scp这个命令。它常被用来在服务器间传输文件。但是目前它应该被更现代的工具rsync替代,其拥有即时压缩,差量传输等新特性。同时,rsync也被用来进行备份操作。

1
2
rsync foo.txt me@server:/home/me/   # 最基础的复制文件 与scp的操作完全相同
rsync -a bar/ me@server:/home/me/ # -a 标记实现目录复制等 比scp -r 能更好的处理符号链接等情况

关于全盘备份,请阅读官方文档

文件解压缩

除了众所周知的 tar 命令,我们在之前安装过的 ark 包可以配合 dolphin 文件管理器轻松的右键直接解压缩,其可选依赖提供了各个压缩格式的支持,可以自行选择安装。需要注意的是解压 windows 下的压缩包,可能会乱码,安装 ark 的可选依赖之一 unarchiver,使用 unar 可以避免这个问题。

1
2
sudo pacman -S unarchiver
unar xxx.zip

系统硬件信息检测

磁盘检测可使用 smartmontools

1
2
sudo smartctl -A /dev/sda   #硬盘
sudo smartctl -d sat -A /dev/sdc #usb设备

磁盘空间分析可直接使用 df 命令,也可使用 Filelight图形化界面直观查看磁盘占用情况

1
df -h

cpu 与显卡的信息查看可使用如下两款软件

1
2
yay -S cpu-x
yay -S gpu-viewer

使用 dmidecode 可以完整查看系统绝大部分硬件信息,包括较难得到的内存频率,主板 BIOS 等等。

1
sudo dmidecode

制作 windows10 启动盘

你可能在 linux 下,有时需要制作 win10 的启动盘。在以往,在 linux 下制作一个 win10 启动盘还是很简单的,但是随着近几年微软的更新,其 iso 安装镜像中存在一个名为install.wim的文件,其大小已经超出了 4GB,超出了 fat32 所要求的单个文件最大 4GB 的限制。这使得必须用额外的步骤才能制作一个启动盘。这里依旧使用 fat32 格式是因为其兼容性是最好的,ntfs 的 uefi 启动盘很多情况下不被识别。

首先和基础安装中的部分步骤类似,首先用 parted 命令创建 U 盘的分区 label 为 gpt。接下来用 cfdisk 命令创建新分区,在 Type 中选择 Microsoft basic data。接下来使用 mkfs.vfat 命令格式化所创建的分区。这样 U 盘就准备好了。

接下来下载 win10 的 iso 镜像并解压。在某些文件管理器中,你会得到如下错误。

1
2
This disc contains a "UDF" file system and requires an operating system
that supports the ISO-13346 "UDF" file system specification.w

这种情况下则需要手动挂载并复制出来

1
mount -o loop /path/of/windows10.iso /mnt/your/mountpoint

得到复制出来的文件后,最后要进行的就是压缩 install.wim 文件,这里需要首先安装一个包

1
sudo pacman -S wimlib

接下来进行压缩,这一步会持续较长时间,耐心等待。完成后可以看到文件已经被压缩到了 3.x GB。

1
sudo wimlib-imagex optimize install.wim --solid

最后把全部文件复制到 U 盘中即可。

Ref: [1]


功耗控制

针对散热不好的设备,功耗控制显得非常必要。这里说的功耗控制不是指直接对处理器的频率做出限制,而是对处理器的电压进行最大限度的下探,在挖掘 cpu 体质的极限的同时,起到既能降低发热,又能最大限度保持性能的效果。除了电压的下探,同时也可以尝试对处理器的功率墙(又常被称为 TDP)做出降低的限制,比如考虑这种情况,在 cpu 满睿频时,其实不需要默认的那么多功耗来维持,也许在默认功耗的基础上减几瓦,也能维持满睿频,这样就又可以进一步降低温度。对功率墙进行限制不同于对电压进行下探,若限制功率墙的参数较低,这会不可避免的损失较多的性能,但是在散热过差的设备上这也是一个好办法。

电压下探

官方参考文档

如果正常操作,降低电压一般不会损害 cpu,一般建议从 50 毫伏进行尝试,每次降压尝试多增加 10 毫伏。只要确保在降低电压前,系统中任务均被正确保存即可。网络上传言的降低 cpu 电压会”缩肛”是谣言[1]

英特尔 四代酷睿 Haswell 及更新的 cpu

如文档中所说,使用 intel-undervolt 即可降压。对于其配置文件中降压部分的五个参数含义如下:

  • 0:cpu 核心电压
  • 1:cpu 核芯显卡电压
  • 2:cpu 缓存电压
  • 3:系统周边电压,与内存等设备相关
  • 4:模拟 I/O 电压

一般来说只调整 0 和 2 两项电压即可。

在调整完电压,apply 之后,可以尝试使用 s-tui 这个工具进行烤机测试,同时观察温度、频率、TDP 的数据。

在调整到一个合适的降压配置后,开启其对应 service 即可。

1
sudo systemctl enable --now intel-undervolt

英特尔 四代酷睿 Haswell 之前的 cpu

arch 官方文档中提到,二代酷睿及以前的 cpu 可使用 PHC 的方式进行降压。经测试,在 i7-2760QM 上不能直接使用,需要在内核启动参数中加入intel_pstate=disable才能正确识别到 phc 的 driver,参考 1,可用命令cpupower frequency-info验证。接下来进行降压尝试,按照 archwiki 的操作始终不能更改 phc_vid 文件,其中内容始终为 0,即便已经用 vim 将其更改为其他值。也许是 cpu/主板 BIOS 不支持降频。翻阅了 phc-intel 的官方文档,其说明只支持酷睿,酷睿 2 及之前的 cpu 系列,不支持酷睿 i,这与 archwiki 的描述相矛盾。

对于夹在中间的三代酷睿 lvy bridge,有项目称可以使用 intel-undervolt 的原理进行降压,但是经测试失败了,尝试用 PHC 的方式依旧失败。目前应该没有什么好的办法可以降压三代酷睿。

对于此范围内的老设备降压,我将不会花费更多时间探索。如果你知道有办法可以正确降压,欢迎提交 PR,或进群讨论

ref: [1] [2]

AMD

可按照 wiki 中使用 amdctl 尝试降压。

降低功率墙

对于功率墙的调整,有些主板在 BIOS 中提供了设置项可以直接调整。对于没有设置项的主板,有的主板是锁定了瞬时和长时功率墙,这种情况就无法调整功率墙了。有的主板 BIOS 随没有提供功率墙调整项,但依旧可以通过命令行设置。通过以下的命令可以查看主板是否可以调整功率墙。

1
grep . /sys/class/powercap/intel-rapl/intel-rapl:0/*

如果在输出中看到了如下的 enable 值为 1,即可以调整。第一行的代表现有的功率墙限制。

1
2
/sys/class/powercap/intel-rapl/intel-rapl:0/constraint_0_power_limit_uw:100000000
/sys/class/powercap/intel-rapl/intel-rapl:0/enabled:1

具体的调整步骤参考这个链接。有空的时候我再翻译整理。

Ref: [1],[2],[3]

此外,intel-undervolt 也可直接进行功率墙限制。如看到package power limit is locked,则说明这台电脑不可更改功率墙。


系统美化

本文讲述如何配置以让 KDE 桌面环境看起来更加拥有美感。 原则:美化不应该付出大量的时间折腾,既没有实际用处,也没有意义。花最少的时间完成性价比最高的美化始终是第一原则。
在美化部分,需要设置代理之后再使用系统设置的功能,如下载主题等。否则网速会非常慢,甚至无法使用。 经测试,需通过 proxychains 或设置全局透明代理将网络连接重定向到代理。

1
proxychains systemsettings5 #通过代理打开系统设置

在 KDE 相关软件更新前后,出现过第三方主题不稳定/卡顿的问题,再次强调不要美化魔改的太过,这会添加更多的不确定性,让你的桌面稳定性下降。

壁纸

在桌面右键,选择配置桌面。在新出现的窗口中右下角选择添加图片可以选择你想要的图片。其中位置一项选择’缩放,保持比例’,背景一项选择’模糊’。这样你就可以拥有一个成比例,且边缘带有高斯模糊的漂亮的桌面壁纸。

系统主题

使用一个高质量的系统主题可以直线提升系统的美观程度。系统设置 > 外观 > 全局主题 > 获取新的全局主题 ,搜索主题 layan,进行设置即可。 顺便说一句,这个主题的作者 vinceliuice 是一位中国大佬,是一位设计师,他设计的主题以及图标的质量都很高,你可以去他的主页为他打分和点赞。

如果切换主题后,windows 键不能呼出菜单,可在左下角右键,配置程序启动器,在键盘快捷键中重新设置windows+F1键,windows 键会显示为 Meta 键。

窗口装饰

系统设置 > 外观 > 窗口装饰 中,获取新窗口装饰,搜索 layan,并应用即可。

系统图标

如果主题中的图标不能满足你,那么可以选择一些自定义的图标。系统设置 > 外观 > 图标 > 获取新图标主题 ,搜索图标名 Tela-icon-theme,进行安装设置即可。

SDDM 主题

你应该注意得到,输入密码时默认的登录界面是很丑的,这里也可以替换掉。系统设置 > 开机和关机 > 登录屏幕(SDDM) > 获取新登录屏幕 ,搜索 SDDM 主题 layan 并设置即可

欢迎屏幕(splashscreen)

可以对在登录界面后的欢迎屏幕进行美化。 系统设置 > 外观 > 欢迎屏幕 > 获取新欢迎屏幕 ,搜索 miku 进行设置即可。这个Snowy Night Miku是我们搜索到的最好看的二刺猿属性的初始界面了。另外,还有一个大佬做了一些二次元主题的欢迎屏幕,但是质量一般,这里是他的主页

桌面插件

在任务栏空白处右键,选择编辑面板,添加部件。

  • Netspeed widget 网速组件,这个很实用
  • todolist 任务组件

然后把你经常使用的软件固定在任务栏即可。

KDE Plasma 5.22.1 更新后,需要额外安装 ksysguard 才能确保桌面插件的正常运行。[1]

混成器

系统设置 > 显示和监控 > 混成器 开启混成器

终端样式设置

打开 konsole, 设置 > 编辑当前方案 > 外观 ,选择Red-Black 应用确认即可。

Kvantum Manager

主题配合 Kvantum Manager 可以达到更好的效果。

1
sudo pacman -S kvantum

这里下载 Layan 的 Kvantum 主题,并解压。打开 Kvantum Manager,选择主题并安装,接下来在Change/Delete Theme中选择 Layan,Use this theme。最后在系统设置,外观中的应用程序风格中选择 kvantum 即可。

如果透明的效果没有显示,确保 KDE 的全局缩放比例为整数倍。或者尝试切换混成器中 openGL 的设置。

GRUB 主题

官方文档

pling选择下载你想要的 GRUB 主题,比如这个二刺螈主题。接下来 cd 进解压出来的文件夹,打开 konsole 输入

1
sudo cp -r . /usr/share/grub/themes/Nino

以将主题放置在系统的 GRUB 默认文件夹内。 接着编辑 /etc/default/grub 文件,找到 #GRUB_THEME= 一行,将前面的注释去掉,并指向主题的 theme.txt 文件。即

1
2
#GRUB_THEME=
GRUB_THEME="/usr/share/grub/themes/Nino/theme.txt" #修改后

然后再在终端输入

1
sudo grub-mkconfig -o /boot/grub/grub.cfg

更新 GRUB ,并重启即可。

开机动画

Plymouth 是一个来自于 Fedora 社区的提供美化启动图形界面的功能的项目,如有需要,可以参考官方文档进行配置。不建议新手在此项配置上花费太多时间。


其余 KDE 桌面有很多配置项,大家可以自行探索。


常见问题排除与解决

本节描述一些在日常使用过程中你有很大概率可能遇到的问题,并提供解决方法。

使用 BIOS+GPT 模式安装 Arch Linux

虽然使用传统 BIOS 模式安装的场景已经越来越少,但是在某些特殊场景,如在 VPS 上安装 Arch Linux,可能依然需要使用到 BIOS 模式。本小节讲述在使用 BIOS+GPT 模式安装时,与 UEFI+GPT 模式安装的不同点,其中绝大多数步骤是相同的。

  • 安装前,在主板的 BIOS 设置中,或在 VPS 的启动设置中(如有),将启动模式调整为传统 BIOS 模式启动。
  • 在分区时,需要额外分出一个 2M 大小的 BIOS boot 模式的分区,此分区无需进行格式化与挂载。
  • 在安装引导程序时,对应的命令修改为: grub-install --target=i386-pc /dev/vda 以及 grub-mkconfig -o /boot/grub/grub.cfg。其中,第一条命令中的/dev/vda为安装 GRUB 的磁盘,而非分区。具体的名字根据安装者的实际情况进行更改。

静态 IP 设置

虽然使用可以自动获取 ip 地址的工具可以覆盖绝大多数场景,但是仍有部分特殊场景,如校园网,VPS 等环境下需要进行静态 IP 的设置。本小节给出一个简略的设置静态 IP 的方式。如需要设置静态 IP,需要首先禁用 dhcpcd 或 NetworkManager 等自动获取 ip 的工具。

1
2
sudo systemctl stop dhcpcd NetworkManager
sudo systemctl disable dhcpcd NetworkManager

接下来启用 systemd-networkd

1
sudo systemctl enable --now systemd-networkd

使用ip ad命令查看当前网卡的名字,如这里使用名字 ens3。随后创建配置文件/etc/systemd/network/10-static-ens3.network。接下来在其中填入内容。其中的 ip 地址和网关需要从你的网络提供商处获取。其中的 DNS 设置同样需要在/etc/resolv.conf中按照前文中的方式进行设置。

1
2
3
4
5
6
7
8
9
10
11
12
[Match]
Name=ens3

[Network]
Address=YOUR_IPV4_ADDRESS/MASK
Gateway=YOUR_IPV4_GATEWAY
DNS=8.8.8.8

[Network]
Address=YOUR_IPV6_ADDRESS/MASK
Gateway=YOUR_IPV6_GATEWAY
DNS=2001:4860:4860::8888

最后,重启服务即可。

1
sudo systemctl restart systemd-networkd

鼠标出现按键不灵敏或失灵的现象

一般来说大多数鼠标都是即插即用的,但 5.14 内核前后更新后可能遇到失灵的情况。根据自身鼠标品牌安装对应的驱动即可解决。[1]

关机时卡住很久才能关机

一般屏幕会出现形如A stop job is running for...(1m30s)的信息,这是经常会遇到的关机卡住 1 分 30 秒的问题,一般来说这种情况是出现了某个进程在关机时不愿停止,需要等到超时时间到达强行停止。通用的解决办法是调整缩短这个等待时间,建议从 1 分 30 秒调整至 30 秒,30 秒已经足够几乎所有进程正常结束。

编辑 /etc/systemd/system.conf

1
sudo vim /etc/systemd/system.conf

找到其中DefaultTimeoutStopSec一项,将其前方的井号去掉,并赋值为 30s 即可。最后执行 daemon-reload 使其生效。

1
sudo systemctl daemon-reload

上述解决方案其实只是将这个等待时间缩小了,并没有解决实际问题。如果你想排查问题真正的原因所在,在关机时如果出现了A stop job is running for...(1m30s)的信息,耐心等待其结束关机,然后重新启动电脑,执行以下命令:

1
journalctl -p5

按/(斜杠键)搜索Killing关键字,找到你关机的时间附近所在的匹配行,你可以在附近看到到底是哪一个进程导致了 timeout,然后再去排查这个进程有什么问题即可。

磁盘容量不足的处理方式

一般使用 LVM 安装 Linux 系统则不用担心这种情况发生。但是我们使用的是传统的 ext4 经典分区方式。这种情况下一般建议在安装的开始就将根目录设置的大一些,如 100G。如果/home 分区大小不够了,可以新安装一块硬盘,将其挂载到你想要的位置,再按照基础安装的步骤中重新 genfstab 一下就行了。

除此之外,如果根目录容量不足,可以不定期清理一下 pacman 的缓存,详见archwiki。太长不看的可以直接用下面这一行命令清理没有安装的所有缓存的包,和没有被使用的同步数据库。

1
sudo pacman -Sc

软件的降级

在 archlinux 上 偶尔会出现某一个包的最新版本有各种问题的情况,如某些软件过新, 而一些依赖并没有支持,比如virtualbox 在 linux5.18 内核下的崩溃,此时需要降级该包以正常使用。包可以是普通软件,也可以是内核。

1
yay -S downgrade

安装此包即可,使用方法也很简单,downgrade 后加上需要降级的包名即可,随后会提示你选择需要降级到的版本,点选即可。

升级系统时出现形如 unable to lock database 的错误

可能存在升级系统时异常关机或程序异常退出的情况,或者多个 pacman 的相关程序在同时执行。移除 pacman 的 db 锁即可

1
sudo rm /var/lib/pacman/db.lck

手动开关混成器

有时混成器会因为某些原因需要手动开启或关闭,但是目前在 KDE 下混成器在设置里无法在不关机的情况下直接关闭,下面命令提供手动开关混成器的效果。[1]

1
2
3
qdbus org.kde.KWin /Compositor suspend  #禁用

qdbus org.kde.KWin /Compositor resume #开启

屏幕溢出: overscan

在连接一些老式的显示设备时,可能与出现overscan的现象,简单来说就是电视屏幕四圈会有一圈溢出了,不显示出来。对于英特尔核芯显卡,可以选择 intel panel fitter 的方式[1]。最后就是要加入到一个 service 里开机自动启动,并且是在 DE 加载完成后执行[2]

1
sudo intel_panel_fitter -p A -x 1230 -y 700