受@林长枫709的视频教程和wiki启发,我打算将ArchLinux作为日常使用的操作系统。自11月16日安装完成至今过去了大概1个月,期间我只启动了Windows两次,而且都是因为Office的问题,ArchLinux应该是完全能胜任日常使用的工作的。
Ventoy可以在一块U盘上存放多个ISO镜像,多余的空间可以作为一般的U盘使用,十分方便。插入Ventoy U盘时,要启动到已安装的系统,可以按F2浏览硬盘,找到EFI分区中对应的EFI文件回车即可。
Btrfs支持增量快照、透明压缩、Copy-on-Write、管理子卷,相比ext4有更多功能。自Fedora 33 (2021-02-03)起,Fedora默认使用btrfs作为文件系统。openSUSE也默认使用btrfs作为文件系统,并通过snapper管理快照。
磁盘分区
主板如果是UEFI模式,就需要有ESP(EFI System
Partition),用于安装Bootloader。Windows的系统盘里有一块大概100M的分区就是EFI分区,如果电脑只有一块磁盘就需要和Windows共用这个EFI分区,在下一步跳过EFI分区的格式化。通过cfdisk分区时,需要将ESP的分区类型设置为EFI System,剩余空间创建为Linux System的分区即可。
格式化分区
在格式化分区前,可以通过fdisk -l或lsblk查看分区情况。
将ESP格式化为FAT32: 1
mkfs.fat -F 32 /dev/sdxY
将另一个分区格式化为btrfs: 1
mkfs.btrfs /dev/sdxY
管理btrfs子卷
如果不想系统快照包含某些路径,可以将这些路径创建为单独的子卷,比如/home、/var/log、/var/tmp、/var/cache、/var/lib/docker、/var/lib/libvirt等。snapper会自动在/.snapshots创建子卷,不需要手动创建。
### 创建子卷
挂载分区: 1
mount -t btrfs -o compress=zstd /dev/sdxY /mnt
在分区中创建子卷: 1
2
3
4
5
6btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@swap
btrfs subvolume create /mnt/@var-log
btrfs subvolume create /mnt/@var-tmp
btrfs subvolume create /mnt/@var-cache
关闭@swap和@var-cache子卷的CoW属性:(待考证)
1
2chattr +C /tmp/btrfs-full/@swap
chattr +C /tmp/btrfs-full/@var-cache
查看子卷: 1
btrfs subvolume list -p /mnt
挂载子卷
挂载子卷前先把上一步挂载的分区取消挂载: 1
umount /mnt
挂载子卷: 1
2
3
4
5
6mount -t btrfs -o subvol=/@,compress=zstd /dev/sdxY /mnt
mount --mkdir -t btrfs -o subvol=/@home,compress=zstd /dev/sdxY /mnt/home
mount --mkdir -t btrfs -o subvol=/@swap,compress=zstd /dev/sdxY /mnt/swap
mount --mkdir -t btrfs -o subvol=/@var-log,compress=zstd /dev/sdxY /mnt/var/log
mount --mkdir -t btrfs -o subvol=/@var-tmp,compress=zstd /dev/sdxY /mnt/var/tmp
mount --mkdir -t btrfs -o subvol=/@var-cache,compress=zstd /dev/sdxY /mnt/var/cache
顺便挂载ESP: 1
mount --mkdir /dev/sdxY /mnt/efi
删除子卷
查看子卷ID: 1
btrfs subvolume list /mnt
1
btrfs inspect-internal rootid /mnt
挂载分区: 1
mount -t btrfs -o subvolid=0 /dev/sdxY /mnt
查看子卷: 1
2ls -a /mnt
# . .. @ @home @swap @xxx ...
删除子卷: 1
btrfs subvolume delete /mnt/@xxx
创建swap文件
与其他文件系统不同,在btrfs上创建swapfile需要使用btrfs命令。
在btrfs上创建swapfile: 1
btrfs filesystem mkswapfile --size 32g --uuid clear /mnt/swap/swapfile
在其他文件系统上创建swapfile: 1
mkswap -U clear --size 4G --file /swapfile
swap分区则无法动态调整大小。格式化swap分区: 1
mkswap /dev/sdxY
开启、关闭swap: 1
2swapon /swap/swapfile
swapoff /swap/swapfile
设置镜像
pacman
备份当前mirrorlist: 1
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
用reflector自动设置镜像: 1
2
3
4
5
6
7
8reflector -a 24 -c cn -f 10 --sort score --save /etc/pacman.d/mirrorlist --v
-a(age) 24 指定最近24小时更新过的源
-c(country) cn 指定国家为中国(可以增加邻国)
-f(fastest) 10 筛选出下载速度最快的10个
--sort score 按照下载速度和同步时间综合评分并排序,比单纯按照下载速度排序更可靠
--save /etc/pacman.d/mirrorlist 将结果保存到/etc/pacman.d/mirrorlist
--v(verbose) 过程可视化
archlinuxcn
添加archlinuxcn源: 1
2
3
4
5
6# /etc/pacman.conf
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch
Server = https://repo.huaweicloud.com/archlinuxcn/$arch
安装archlinuxcn-keyring: 1
sudo pacman -Sy archlinuxcn-keyring
pip
upgrade pip: 1
python -m pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --upgrade pip
设置pypi镜像: 1
pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
设置多个镜像: 1
pip config set global.extra-index-url "https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple"
取消设置: 1
pip config unset <config-name>
uv
1 | # ~/.config/uv/uv/toml or /etc/uv/uv.toml |
git
全局自动替换url: 1
git config --global url."https://gh-proxy.org/https://github.com/".insteadOf "https://github.com/"
取消设置: 1
git config [--local | --global | --system] --unset <key>
snapper管理快照
安装snapper: 1
sudo pacman -S snapper snap-pac btrfs-assistant
自动生成快照启动项: 1
2sudo pacman -S grub-btrfs inotify-tools
sudo systemctl enable --now grub-btrfsd
设置overlayfs: 1
2# /etc/mkinitcpio.conf
HOOKS= ( ...... grub-btrfs-overlayfs )
重新生成initramfs和grub启动项: 1
2sudo mkinitcpio -P
sudo grub-mkconfig -o /boot/grub/grub.cfg
软件列表
KDE Integrated
KDE的系统设置里如果缺少软件包会提示支持哪些软件,直接按照名字安装即可。
电源管理: 1
yay -S power-profiles-daemon
固件信息等: 1
yay -S fwupd
Tencent
1 | yay -S linuxqq-appimage # wechat-appimage 微信有时会在后台闪退,换flatpak版就没有问题了 |
Dolphin Integrated
显示视频缩略图: 1
yay -S ffmpegthumbs
文件压缩: 1
yay -S ark
Input Method
1 | yay -S fcitx5-im fcitx5-rime rime-ice-double-pinyin-flypy-git fcitx5-mozc |
1 | # /etc/environment |
1 | # ~/.local/share/fcitx5/rime/default.custom.yaml |
Local ArchWiki
1 | yay -S arch-wiki-docs |
添加一个应用,命令和参数为firefox /usr/share/doc/arch-wiki/html/en/Main_page.html。在KDE上可以设置成“其他”分类里的archlinux-logo图标。
所有软件
1 | yay -Qe |
alsa-firmware 1.2.4-4 alvr-nvidia 20.14.1-3 android-tools 35.0.2-23 arch-wiki-docs 20251202-1 archlinuxcn-keyring 20250531-1 ark 25.12.0-1 aurorae 6.5.4-1 baobab 49.1-1 base 3-2 base-devel 1-2 bluedevil 1:6.5.4-1 breeze 6.5.4-1 breeze-gtk 6.5.4-1 breeze-plymouth 6.5.4-1 btop 1.4.5-1 btrfs-assistant 2.2-4 btrfs-progs 6.17.1-1 clang 21.1.6-1 cmatrix 2.0-4 cuda 13.0.2-3 discord 1:0.0.119-1 discover 6.5.4-1 distrobox 1.8.2.2-1 docker-compose 5.0.0-1 dolphin 25.12.0-1 dosfstools 4.2-5 downgrade 11.5.5-1 drkonqi 6.5.4-1 easyeffects 8.0.8-1 efibootmgr 18-3 evtest 1.36-1 exfatprogs 1.3.1-1 eza 0.23.4-1 f2fs-tools 1.16.0-3 fastfetch 2.56.0-1 fcitx5 5.1.16-1 fcitx5-configtool 5.1.11-1 fcitx5-gtk 5.1.4-2 fcitx5-mozc 2.32.5994.102.g7cd777dbb-1 fcitx5-qt 5.1.11-3 fcitx5-rime 5.1.12-1 festival-english 2.5-3 festival-freebsoft-utils 0.10-2 ffmpegthumbs 25.12.0-1 firefox 146.0.1-1 firejail 0.9.76-3 fish 4.2.1-1 fisher 4.4.5-1 flatpak-kcm 6.5.4-1 flatseal 2.4.0-3 foliate 3.3.0-2 fwupd 2.0.19-1 gamemode 1.8.2-1 git-lfs 3.7.1-1 gnome-disk-utility 46.1-2 grub 2:2.14rc1.r54.g29f3131a-2 grub-btrfs 4.14-1 grub-theme-minegrub 3.1.0-2 gwenview 25.12.0-1 haruna 1.6.0-1 inotify-tools 4.25.9.0-1 intel-gpu-tools 2.2-1 intel-media-driver 25.3.4-1 intel-ucode 20251111-1 joyutils 1.8.1-3 jre-openjdk 25.0.1.u8-1 jstest-gtk-git 0.1.0.r127.g92bdf8e-1 kactivitymanagerd 6.5.4-1 kate 25.12.0-1 kcalc 25.12.0-1 kde-cli-tools 6.5.4-1 kde-gtk-config 6.5.4-1 kdeconnect 25.12.0-1 kdecoration 6.5.4-1 kdeplasma-addons 6.5.4-1 kfind 25.12.0-1 kgamma 6.5.4-1 kglobalacceld 6.5.4-1 kinfocenter 6.5.4-1 kmenuedit 6.5.4-1 knighttime 6.5.4-1 konsole 25.12.0-1 kpipewire 6.5.4-1 krdp 6.5.4-1 kscreen 6.5.4-1 kscreenlocker 6.5.4-1 ksshaskpass 6.5.4-1 ksystemlog 25.12.0-1 ksystemstats 6.5.4-1 kubectl 1.34.3-1 kwallet-pam 6.5.4-1 kwalletmanager 25.12.0-1 kwayland 6.5.4-1 kwin 6.5.4-3 kwin-x11 6.5.4-1 kwrited 6.5.4-1 layer-shell-qt 6.5.4-1 lazygit 0.57.0-1 less 1:685-1 lib32-gamemode 1.8.2-1 lib32-nvidia-utils 580.119.02-1 lib32-vulkan-icd-loader 1.4.335.0-1 lib32-vulkan-intel 1:25.3.2-1 libkscreen 6.5.4-1 libksysguard 6.5.4-1 libplasma 6.5.4-1 libreoffice-still 25.2.7-4 libreoffice-still-zh-cn 25.2.7-1 libva-utils 2.22.0-1 libvpl-tools 1.5.0-1 linux 6.18.1.arch1-2 linux-firmware 20251125-2 linux-headers 6.18.1.arch1-2 linuxqq-appimage 3.2.22_20251203-1 localsend 1.17.0-2 man-db 2.13.1-1 man-pages 6.16-1 mangohud 0.8.2-2 micromamba 2.4.0-1 milou 6.5.4-1 mission-center 1.1.0-1 ncdu 2.9.2-1 neovim 0.11.5-1 networkmanager 1.54.3-1 ninja 1.13.2-1 noto-fonts-cjk 20240730-1 npm 11.6.4-1 ntfs-3g 2022.10.3-2 nvidia 580.119.02-2 nvidia-container-toolkit 1.18.1-1 nvidia-prime 1.0-5 nvidia-settings 580.119.02-1 nvidia-utils 580.119.02-1 nvidia-vaapi-driver-git 0.0.14.r16.g2e204c6-1 obsidian 1.10.6-1 ocean-sound-theme 6.5.4-1 openssh 10.2p1-2 os-prober 1.83-1 oxygen 6.5.4-1 oxygen-sounds 6.5.4-1 pacseek 1.8.6-1 pandoc-cli 3.5-2 perl-image-exiftool 13.44-1 pipewire-alsa 1:1.4.9-2 pkgfile 25-1 plasma-activities 6.5.4-1 plasma-activities-stats 6.5.4-1 plasma-browser-integration 6.5.4-1 plasma-desktop 6.5.4-1 plasma-disks 6.5.4-1 plasma-firewall 6.5.4-1 plasma-integration 6.5.4-1 plasma-nm 6.5.4-1 plasma-pa 6.5.4-1 plasma-sdk 6.5.4-1 plasma-systemmonitor 6.5.4-1 plasma-thunderbolt 6.5.4-1 plasma-vault 6.5.4-1 plasma-welcome 6.5.4-1 plasma-workspace 6.5.4-1 plasma-workspace-wallpapers 6.5.4-1 plasma5support 6.5.4-1 plymouth-kcm 6.5.4-1 podman 5.7.1-1 podman-desktop 1.23.1-1 polkit-kde-agent 6.5.4-1 power-profiles-daemon 0.30-1 powerdevil 6.5.4-1 print-manager 1:6.5.4-1 protontricks 1.13.1-1 protonup-qt 2.14.0-1 qqc2-breeze-style 6.5.4-1 qt5-multimedia 5.15.18+kde+r2-1 rime-ice-double-pinyin-flypy-git r859.d93e60b-1 rustdesk-bin 1.4.4-1 rustup 1.28.2-4 scrcpy 3.3.4-1 sddm 0.21.0-6 sddm-kcm 6.5.4-1 sl 5.05-5 snap-pac 3.0.1-3 snapper 0.13.0-2 sof-firmware 2025.12-1 spectacle 1:6.5.4-1 speech-dispatcher 0.12.1-2 sshfs 3.7.3-3 starship 1.24.1-1 steam 1.0.0.85-1 stow 2.4.1-1 swaylock-effects 1.7.0.0-4 systemsettings 6.5.4-1 telegram-desktop 6.3.9-1 tldr 3.4.3-2 ttf-firacode-nerd 3.4.0-1 udftools 2.3-2 ufw 0.36.2-5 unzip 6.0-23 usbutils 019-1 uv 0.9.18-2 v2rayn-bin 7.16.6-1 vdpauinfo 1.5-2 vim 9.1.1975-1 visual-studio-code-bin 1.107.1-1 vkmark 1:2025.01-2 vr-video-player r137.0410062-1 vulkan-intel 1:25.3.2-1 vulkan-validation-layers 1.4.335.0-1 wacomtablet 6.5.4-1 waybar 0.14.0-5 webkit2gtk 2.50.4-1 wemeet-bin 3.26.10.401-1 wemeet-wayland-screenshare-git 3.19.2.400_hooked.r57.ga5d252d-1 wireless-regdb 2025.10.07-1 wqy-zenhei 0.9.45-10 xdg-desktop-portal-kde 6.5.4-1 xfsprogs 6.17.0-2 xmcl-launcher 0.53.2-1 xpadneo-dkms 0.9.7-2 yay 12.5.7-1 yazi 25.5.31-2 zerotier-one 1.16.0-2 zotero-bin 7.0.27-1 zoxide 0.9.8-2
其他
Coredump设置
查看特定软件崩溃信息: 1
coredumpctl info /usr/bin/wechat
禁用coredump: 1
2
3
4# /etc/systemd/coredump.conf.d/disable-coredump.conf
[Coredump]
Storage=none
ProcessSizeMax=0
限制corefile大小: 1
2
3
4
5
6# /etc/systemd/coredump.conf.d/limit.conf
[Coredump]
Storage=external
MaxUse=2G
ProcessSizeMax=100M
KeepFree=1G
通过systemd-tmpfiles定期删除corefiles: 1
2# /etc/tmpfiles.d/systemd-coredump.conf
D /var/lib/systemd/coredump 0755 root root 7d
zswap
ArchLinux默认启用zswap。查看zswap设置: 1
2
3cat /sys/module/zswap/parameters/enabled
grep -R . /sys/module/zswap/parameters
管理软件包
| 功能 | Arch (pacman + extra 工具) | Debian/Ubuntu (apt/dpkg) | Fedora (dnf) | openSUSE (zypper) |
|---|---|---|---|---|
| 安装包 | pacman -S pkg |
apt install pkg |
dnf install pkg |
zypper install pkg |
| 搜索包(名称) | pacman -Ss keyword |
apt search keyword |
dnf search keyword |
zypper search keyword |
| 查看包信息 | pacman -Si pkg |
apt show pkg |
dnf info pkg |
zypper info pkg |
| 列出已安装包 | pacman -Q |
dpkg -l 或 apt list --installed |
dnf list installed |
zypper search -i |
| 查找文件属于哪个包 | pacman -Qo /path/file |
dpkg -S /path/file |
dnf provides /path/file |
zypper search --provides --match-exact file |
Arch 特有工具 vs 其他发行版对应功能
| Arch 工具 | 功能 | Debian/Ubuntu 对应命令 |
|---|---|---|
pkgfile |
快速查找文件属于哪个包(即使未安装) | apt-file search filename(需先
apt install apt-file && apt-file update) |
pactree |
显示包的依赖树 | apt-rdepends pkg(需安装 apt-rdepends)或
debtree(图形化) |
paccache |
清理 pacman 缓存(保留最新 N 个版本) | apt autoclean(仅删旧缓存)
apt clean(全删) 无直接保留 N 版本功能,需脚本实现 |
pacman -Qtd |
列出孤立包(orphan packages) | `apt list --installed |
Steam
添加multilib源后安装: 1
yay -S steam
VR
Linux 版的 SteamVR 无法在不受支持的 Steam Snap 或 Steam Flatpak 程序包中正常运行,因为它们破坏了直接渲染管理器(DRM)借用和异步再投影(asynchronous reprojection)。 应改用原生发行包。Linux 版 SteamVR 支持
SteamVR + ALVR + PhoneVR + Google Cardboard 可以实现相对低成本的VR方案,但是软件兼容性不如Windows,视觉体验受无线传输码率和手机屏幕质量影响很大,如果视频参数设置不对可能出现拖影等现象,而且我暂时没找到用普通手柄完全实现VR手柄功能的方法。
手柄
How to Set Up Game Controllers on Arch Linux
新的Xbox手柄在无线接收器模式下可能出现连接不上的情况,在Windows上连接一次后才能正常使用。Xbox Wireless Controller
通过proton启动的游戏如果出现按键映射错误的问题,可以开启Steam输入,再通过winetricks禁用wine的手柄输入。Is there a way to hide a controller from a game and use steam input?
安全
防火墙
1 | yay -S ufw |
沙盒
1 | yay -S firejail flatseal |