哎,上学期原本想着写给我弟的archlinux传教指南完善到等他高考完再发,谁知道我下学期就跳nixos了呢?在这里发一下吧。
raw
你已经是一个成熟的有时间管理系统的大人了,该从Windows和Mac OS这些围墙花园里出去看看了
为什么archlinux:
1.桌面体验逐渐成熟,上车的最好时机。Steamdeck的投入,游戏不是问题。NVIDIA开源内核驱动,不稳定性降低。hyprland等wayland合成器以及基于wayland的桌面环境逐渐成熟
2.arch版本新,还有aur,可以统一管理整个系统的软件包,都受到pacman的管理和更新,不用添加第三方源,不用担心软件包仓库太旧,不用下载deb包自己手动安装,而且pkgbuild十分好写
3.Windows逐渐臃肿,强塞用户不需要的东西,不作为 4.archlinux对学习计算机十分有帮助,节约你装依赖的时间
安装与理解: 最好的朋友:archwiki
LiveCD:每月发布一次,有小修小改和最新的软件包,是一个可以启动的archlinux,一切的起点。
Linux系统结构:FHS,根和home,虚拟文件系统proc,sys,dev,其中根底下的文件大多都要root权限,对桌面用户,home是大多数桌面软件数据的储存地 包管理器:我的建议,系统级软件pacman,大型闭源桌面软件flatpak,结合开发需要可以上nix。
一般启动流程:通电自检,uefi从GPT分区找到efi可执行文件进入系统引导(一般是grub),grub找到Linux内核并传参,Linux内核加载initramfs加载必要的驱动以及系统初始化,initramfs找到真正的根文件系统并挂载,然后chroot并启动init(现在是systemd),systemd完成剩余的初始化。
根据启动流程安装一个可启动的Linux: (保证全程联网!使用iwctl或者插网线) 先timedatectl保证时间同步 首先要作分区,格式化成GPT,用cfdisk /dev/xxx,建议分三个区,efi启动分区,用fat32格式,swap交换分区,一般是内存大小(如果需要睡眠还得更多点)。根分区(根据需要可以独立home分区,建议选择btrfs,有许多高级特性)
分区完后,挂载你的分区,pacstrap安装软件包到根分区,你必须要base,systemd,base-devel,linux,linux-firmware,btrfs-progs(如果使用btrfs的话) 另外还可以pacstrap 入zsh sudo networkmanager vim zsh-completions。
接着,你可以arch-chroot进入到这个系统里,此时我们缺什么呢?主机名和时区,以及引导程序。hostnamectl或者直接编辑etc/hostname,用ln链接usr/share/timezone的时区文件到etc/localtime,修改locale.gen然后生成语言与地区选项,然后pacman安装grub,genfstab告诉linux要挂载哪些目录,hwclock --systohc同步硬件时间, (安全性:給root设置密码,安装CPU微码) 接着可以reboot试试能不能进系统啦。 进入系统后的优化:桌面环境,个人用户加入sudoer组,ssh,添加软件源,btrfs自动快照,用systemd管理…… )
装完之后,你肯定对linux启动流程,各个组件之间的关系了如指掌啦,再去玩玩容器化,这是编程和试验的绝佳场所。具体的cgroups,namespace,syscall也可以去了解了解。
总之,欢迎开启你的archlinux之旅,这会是一个你想做什么就能做什么,完全由你管理的系统,不用怕莫名其妙的拒绝访问,后台莫名其妙的进程吃你的CPU和内存,写的自动化任务不会因为自动更新或安全策略而突然失效,数据之间的流动十分快捷(管道和dbus),不会莫名其妙强塞一些需要联网才能用的进程,容器化让你不用担心搞坏系统。组件之间是拆开的让你可以用奇特的方式把他们组合起来(比如脚本用notify_send发消息,不用额外预装,不用写复杂的系统调用)系统行为可预测,可定制,在一定程度上可复现(完全复现请看nixos),所以,完全可以把经验带到服务器上用,帮助会非常大!
你已经是一个成熟的有时间管理系统的大人了,该从 Windows 和 macOS 这些围墙花园里出去看看了。外面的世界没有强行塞给你的全家桶,没有隔三差五自动更新毁掉你跑到一半的实验,只有一个完全由你定义的操作系统。而 Arch Linux,可能是打开这扇门最好的钥匙。
为什么是 Arch Linux?
在动手之前,先说说为什么值得你投入一个周末。
桌面体验已经成熟,现在是上车的最佳时机
Steam Deck 的投入让 Linux 游戏不再是折腾的代名词;NVIDIA 开源内核驱动让显卡不再动不动就抽风;Hyprland 等 Wayland 合成器以及各类基于 Wayland 的桌面环境,丝滑而且现代。滚动更新 + AUR = 统一的软件管理
不用添加五花八门的第三方源,不用去官网下载 .deb 手动安装。整个系统的软件(系统级、用户级,甚至一些冷门工具)都被 pacman 和 AUR 管着,PKGBUILD 写起来也非常简单。你上次为了装一个依赖折腾了多久?Arch 里通常就是一句yay -S <包名>。Windows 越来越臃肿,而且不尊重你的选择
强塞广告、Copilot、你不需要的“建议”,后台跑着一堆你不知道的进程。你花钱买的硬件,却要听微软的调度。对学计算机的人来说,Arch 是绝佳的老师
它会让你亲手经历一个系统从引导到桌面的全过程,理解依赖、文件系统层次、内核模块、init 系统……这些知识会直接变成你未来在服务器上排查问题、优化性能的肌肉记忆。
第一性原理:一个 Linux 系统到底是怎么启动的?
不想装完只会复制粘贴命令,就必须从「系统如何启动」反推出我们需要做什么。这是整件事的骨架。
一台 x86 机器开机的大致流程如下:
通电自检 → UEFI 固件
固件从 GPT 分区表中寻找 EFI 系统分区(ESP),执行其中的 .efi 引导文件。引导加载器(比如 GRUB)
GRUB 找到 Linux 内核镜像并传递参数,然后启动内核。内核 + initramfs
内核加载 initramfs(一个临时的小文件系统),里面有必要的驱动和脚本,负责挂载真正的根文件系统。根文件系统挂载 → 执行 init(systemd)
initramfs 找到并挂载根分区,然后 chroot 过去启动 systemd。systemd 完成剩余初始化
挂载其他分区、启动服务、网络、登录管理器……最后来到你的桌面。
所以,如果我们想从零组装一个能启动的 Arch Linux,就必须依次准备好:
正确的磁盘分区(ESP + 根分区,可能加上 swap)
一个基础文件系统树(内核、systemd、shell、基础工具)
配置信息(主机名、时区、语言、挂载表)
一个可被 UEFI 找到的引导加载器
安装过程,不过是按照这个顺序把零件放进硬盘罢了。
🔍 EFI 小课堂:主板到底怎么找到引导程序?
上面的第一步里,UEFI 固件会去硬盘上找一个叫 EFI 系统分区(ESP) 的特殊分区。这里有几个关键点:
文件系统必须是 FAT 系列(通常用 FAT32)。UEFI 固件天生只认识 FAT,读不懂 ext4、btrfs 这些 Linux 文件系统。所以 ESP 我们一定会格式化成
vfat。ESP 里放着一个个
.efi文件,每个对应一个引导加载器(比如 GRUB 的grubx64.efi、Windows 的bootmgfw.efi)。主板并不会“探测”所有文件,而是去看 NVRAM 里记录的启动项列表——每个启动项指向某个 ESP 里的某个.efi文件。我们装 GRUB 时用的efibootmgr就是在往 NVRAM 里写入“GRUB”这个启动项。如果 NVRAM 坏了或者空的,主板通常会使用一个默认路径:
\EFI\BOOT\BOOTX64.EFI。所以万一引导项丢了,把 GRUB 的.efi文件重命名放到这个位置也能救命。
有了这个概念,你就知道为什么分区那一步必须单独划一个几百兆的 ESP,格式化成 FAT32,并且挂载到 /boot——因为后续 grub-install 会直接把 .efi 文件装进去,让主板找到它。
推导安装:每一步都不是魔法
最好的朋友:ArchWiki
没有一本教材能比官方 Wiki 更准确。遇到任何“为什么这样不行”的念头,先去 wiki.archlinux.org。
Step 0:活在 Live 环境里
下载的 ISO 本身就是一个完整的、运行在内存里的 Arch Linux。它是所有动作的起点。
联网是必须的——用 iwctl 连 Wi-Fi 或直接插网线。
有线网络
直接插网线就行,通常会自动获取 IP。用 ping archlinux.org 测试一下,能通就跳过本步。
无线网络(Wi-Fi)
Live 环境里自带了 iwctl,一个交互式的 Wi-Fi 管理工具。按顺序来:
# 1. 进入 iwctl 交互界面
iwctl
# 2. 查看你的无线网卡名称(通常是 wlan0)
device list
# 3. 扫描附近的 Wi-Fi 网络(假设网卡叫 wlan0)
station wlan0 scan
station wlan0 get-networks
# 4. 连接到你的 Wi-Fi(把 YOUR-SSID 换成你的 Wi-Fi 名)
station wlan0 connect YOUR-SSID
# 5. 输入 Wi-Fi 密码,回车
# 6. 退出 iwctl
exit验证联网:
ping archlinux.org如果能收到回复,恭喜,你已经跨过了第一道坎。
然后立刻同步时间:
timedatectl set-ntp true
因为后续签名验证、HTTPS 连接都依赖正确的时间。
📀 认识你的硬盘:/dev 下的命名规则
在正式分区之前,你需要先搞清楚硬盘在 Linux 里是怎么命名的。看一眼 /dev 目录(ls /dev),里面一堆文件,但对硬盘来说规则很简单:
/dev/sda:第一块 SATA 硬盘(整个磁盘)/dev/sda1:第一块 SATA 硬盘上的第一个分区/dev/sda2:第一个 SATA 硬盘上的第二个分区/dev/nvme0n1:第一块 NVMe 固态硬盘(整个磁盘)/dev/nvme0n1p1:第一块 NVMe 固态硬盘上的第一个分区/dev/nvme0n1p2:第一块 NVMe 固态硬盘上的第二个分区/dev/mmcblk0: 第一块SD/MMC储存卡/dev/sr0:第一块SCSI/SATA 光驱/dev/hda:不是吧,现在还有人在用IDE硬盘?/dev/fd0:更古老了,这是软驱💾
规律很简单:没有数字的是整个磁盘,带数字的是分区。SATA 盘用 sd*,NVMe 盘用 nvme*,U 盘通常也会被识别为 /dev/sdb 或 /dev/sdc 这样的 SATA 设备。
先确认一下你要操作的硬盘是哪个:
lsblk这会列出所有磁盘和分区,根据容量就能认出你的目标硬盘。后面所有操作里,请把 /dev/sda 换成你自己的硬盘名(比如 /dev/nvme0n1),分区名也跟着变(比如 /dev/nvme0n1p1、/dev/nvme0n1p2、/dev/nvme0n1p3)。
Step 1:给磁盘打上骨架——分区
根据启动流程,UEFI 需要 ESP,所以使用 GPT 分区表,用 cfdisk /dev/xxx 划出三块地。建议把 EFI 分区放在磁盘的最开头,某些老旧主板对 ESP 的位置比较敏感,放在首位最稳妥,也避免了日后调整分区时可能带来的引导问题。
EFI 分区:第一个分区,格式化成 FAT32,通常 512 MiB 就够,将来放 GRUB 的 .efi 文件。
swap 分区:大小约等于内存,如果需要休眠还得更大。
根分区:剩下的所有空间。文件系统建议选 btrfs,为后续自动快照、子卷等高级特性留好后路。
Step 1.5:为 btrfs 创建子卷(分离 /home),并开启透明压缩
如果你选择了 btrfs,强烈建议把 /home 作为单独子卷,这样以后快照、回滚系统时可以轻松保留你的个人文件,不会一起被覆盖。
另外,btrfs 支持透明压缩,读写文件时会自动压缩/解压,节省大量空间且对性能影响极小。关键是要在第一次挂载时就通过 mount 选项开启,否则在未打开compress的mount状态下写入的数据不会自动压缩,已存在的文件也不会自动转换。
先在已格式化的 btrfs 分区上创建两个子卷,一个作为根,一个作为 home:
# 假设根分区已挂载到 /mnt
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
然后卸载临时挂载的顶层,重新挂载我们刚创建的 @ 子卷作为真正的根,并同时加上 compress=zstd:
umount /mnt
mount -o subvol=@,compress=zstd /dev/sda2 /mnt
zstd 是目前推荐的压缩算法,速度快且压缩率高。你也可以用 compress=zstd:3 指定压缩级别(1-15,默认是 3,3 已是非常平衡的选择)。
接下来,关键的一步来了:一定要先挂载根子卷,再在其内部创建 home 挂载点,然后挂载 home 子卷。
很多新手会掉进一个陷阱:先挂载了 home 子卷到一个空目录,结果却发现之前的文件都“消失”了。Linux 的挂载逻辑是“盖上去”:它只是把新的文件系统叠在已有目录上,原有内容并没有丢失,只是暂时被遮蔽。如果你先把 @home 挂到 /mnt/home,然后再往 /mnt 里挂 @,那 @ 会把 @home 的挂载点一起盖掉,导致 home 找不到了。
正确的做法:
# 1. @ 已挂载到 /mnt(且已有 compress=zstd)
# 2. 在 /mnt 下创建 home 目录(此时它属于 @ 子卷)
mkdir /mnt/home
# 3. 挂载 @home 子卷到 /mnt/home,同样加入 compress=zstd
mount -o subvol=@home,compress=zstd /dev/sda2 /mnt/home
然后再挂载 ESP:
mkdir /mnt/boot
mount /dev/sda1 /mnt/boot
swap 照常启用:
mkswap /dev/sda3
swapon /dev/sda3
这样你的 btrfs 布局就成了:根是 @,home 是 @home,各自独立却又在同一个分区里共享空间,并且所有写入的数据都会被 zstd 透明压缩,优雅又安全。
Step 2:把系统种进硬盘——pacstrap(最小化原则)
现在 /mnt 里已经有了空的 btrfs 子卷结构。我们需要把一套最小可运行系统“解压”进去。思考启动流程:内核、initramfs、systemd、基础工具链缺一不可,所以我们先装最核心的包:
pacstrap /mnt base linux linux-firmware systemd btrfs-progs
base-devel 一般是给 AUR 编译用的,sudo、vim、networkmanager、zsh 这些完全可以等到 chroot 进去后再装,这样你能更清晰地感受一个系统是哪些部分让它“能启动”,哪些是后来为了舒适才加上去的。
紧接着,生成文件系统挂载表,告诉未来的系统“开机时把我这些分区和子卷挂上”:
genfstab -U /mnt >> /mnt/etc/fstab
genfstab 会自动识别你当前的挂载选项(包括 subvol=@ 和 compress=zstd),所以你在上一步挂载时指定的压缩参数会被如实写入 /etc/fstab,以后每次启动都会自动应用。如果安装时没加 compress,事后想加就需要手动 remount 并对已有文件进行碎片整理才能压缩,非常麻烦,因此务必一开始就做好。
Step 3:进入新世界——arch-chroot 并补齐基础工具
arch-chroot /mnt 把我们“转移”到刚刚安装好的系统内部。现在,我们还缺一些让操作体验变好的软件,以及正确的系统身份。
先在 chroot 里把刚才省掉的工具装上:
pacman -S base-devel sudo vim networkmanager zsh zsh-completions
接着配置系统感知:
时区:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime硬件时钟同步:
hwclock --systohc语言环境:编辑
/etc/locale.gen,去掉en_US.UTF-8 UTF-8前面的注释,运行locale-gen,再echo "LANG=en_US.UTF-8" > /etc/locale.conf主机名:
echo "your-hostname" > /etc/hostname
Step 4:让内核能被找到——引导加载器
内核和 initramfs 已经躺在 /boot 里了,但 UEFI 不知道怎么启动它们。现在安装 GRUB,并提前把 CPU 微码装上,让引导加载器在最早的时刻就把微码交给内核。
pacman -S grub efibootmgr amd-ucode # 或 intel-ucode
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB
grub-mkconfig -o /boot/grub/grub.cfg
生成的 grub.cfg 会自动把微码和内核、initramfs 串联起来。
Step 5:人机接口——用户与网络
出于安全,Linux 并不鼓励日常使用 root 登录,因为用它犯一个小错就可能删掉整个系统。我们必须给 root 设置一个密码,并为你自己创建一个日常使用的账户:
passwd
useradd -m -G wheel yourname
passwd yourname
让 wheel 组的用户能用 sudo 提权:运行 visudo,找到 %wheel ALL=(ALL) ALL 那行,去掉注释。
网络在重启后必须自动可用:
systemctl enable NetworkManager
至此,一个能独立启动、联网、被你控制的系统已经完成。退出 chroot,umount -R /mnt,reboot,拔掉 U 盘——你应该会见到 GRUB 菜单,然后顺利登录。
装完之后的世界:从黑框框到生产力
🖥️ 安装桌面环境:选择你的交互方式
重启后你面对的是一个纯文字终端,这不是 bug,而是因为你还没装图形界面。Arch 不会替你决定用什么桌面,这正是自由。
你可以安装一个完整的桌面环境(Desktop Environment),它提供一整套窗口管理器、面板、文件管理器、设置中心等。新手推荐这两个:
KDE Plasma:功能强大、可定制性极高,界面传统亲切,Wayland 支持良好。安装:
sudo pacman -S plasma-meta,再安装显示管理器 SDDM 并启用:sudo systemctl enable sddm。GNOME:设计现代简洁,操作逻辑独特,生态完善。安装:
sudo pacman -S gnome,启用 GDM:sudo systemctl enable gdm。
也可以不走完整桌面环境,先装一个窗口管理器(比如 i3、Hyprland)再慢慢攒组件——那是进阶玩法。
无论选哪个,重启后就能看到图形登录界面,输入你之前创建的用户名和密码,就会进入桌面。
🔤 拯救方块字:安装中文字体
进入桌面后,你很可能会发现浏览器里、文件管理器里中文都是方框或者乱码——别慌,这不是系统坏了,只是缺字体。
Linux 桌面和字体是分离的,你需要手动安装中文字体包。推荐这几个:
sudo pacman -S noto-fonts-cjk adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts
然后刷新字体缓存:
fc-cache -fv
重新打开应用程序,中文就能正常显示了。
🎨 防止日文变体字形(进阶小修)
有时安装了 Noto CJK 或思源字体后,个别汉字会显示成日文的写法(比如“门”看起来不对劲)。这是因为 fontconfig 默认优先匹配了日文字体。解决办法很简单,创建用户级字体配置:
mkdir -p ~/.config/fontconfig
编辑 ~/.config/fontconfig/fonts.conf,填入以下内容(以 Noto 字体为例):
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
<alias>
<family>sans-serif</family>
<prefer>
<family>Noto Sans</family>
<family>Noto Sans CJK SC</family>
<family>Noto Sans CJK TC</family>
<family>Noto Sans CJK JP</family>
</prefer>
</alias>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Noto Serif CJK SC</family>
<family>Noto Serif CJK TC</family>
<family>Noto Serif CJK JP</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Noto Sans Mono</family>
<family>Noto Sans Mono CJK SC</family>
<family>Noto Sans Mono CJK TC</family>
<family>Noto Sans Mono CJK JP</family>
</prefer>
</alias>
</fontconfig>
保存后再执行 fc-cache -fv,注销重新登录,中文就乖乖按简体优先显示了。
⌨️ 中文输入法:从安装到理解(含 Wayland 与环境变量科普)
能显示中文了,但还得能打字。Linux 的输入法框架和 Windows 不一样,它是一个独立的服务,需要你主动安装和配置。推荐使用 Fcitx5,它是目前最活跃的输入法框架。
安装
sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-configtool fcitx5-qt fcitx5-gtk解释一下每个包的作用:
fcitx5:输入法框架本体fcitx5-chinese-addons:中文输入引擎(拼音、双拼等)fcitx5-configtool:图形化配置工具fcitx5-qt和fcitx5-gtk:让 Qt 和 GTK 应用程序能使用输入法的输入法模块
配置
启动 fcitx5:
fcitx5 &然后打开配置工具(在应用菜单里搜 "Fcitx5"),在 "Input Method" 里添加 "Pinyin"(或你喜欢的输入法)。现在按 Ctrl+Space 应该能在中英文之间切换了。
自启动
装好之后需要让它在登录时自动启动。如果你的桌面环境支持 XDG 自启动(KDE、GNOME 都支持),把以下命令加到自启动列表即可:
fcitx5 -d在 GNOME 中,使用 GNOME Tweaks 或手动创建 .desktop 文件。
在 KDE 中,虽然可以通过 System Settings > Startup and Shutdown > Autostart 添加,但是,对于使用了wayland的KDE Plasma请看特别说明
KDE Wayland 特别说明:如果你用 KDE Plasma + Wayland,需要在 System Settings > Keyboard > Virtual Keyboard 里选择 "Fcitx 5",让 KWin 来管理输入法进程,而不是手动自启动。否则可能会报 "Fcitx should be launched by KWin" 的错误。
可能遇到的问题与环境变量
到这里你可能已经能打字了,但有时输入法在某些应用里不工作。这就引出了一个重要概念:应用程序怎么知道要跟哪个输入法对话?
答案是通过环境变量。当一个程序启动时,它会检查几个关键变量:
GTK_IM_MODULE=fcitx:告诉 GTK 程序(Firefox、GIMP、GNOME 应用等)使用 fcitx 输入法模块QT_IM_MODULE=fcitx:告诉 Qt 程序(KDE 应用、VLC、VirtualBox 等)使用 fcitxXMODIFIERS=@im=fcitx:告诉旧的 X11 程序使用 fcitxSDL_IM_MODULE=fcitx:告诉 SDL 游戏(很多独立游戏)使用 fcitx
你需要把这些变量写进 /etc/environment(对所有用户生效),这样所有程序启动时都能找到输入法:
sudo vim /etc/environment加入:
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=@im=fcitx
SDL_IM_MODULE=fcitx注销重新登录后生效。
关于 Wayland:上面设的这些环境变量主要针对 X11 和 XWayland 应用。如果你用的是 Wayland 原生环境(比如 GNOME Wayland、KDE Plasma Wayland),Wayland 有一套自己的
text-input协议来跟输入法通信,理论上不需要这些变量。但实际情况比较复杂,不同桌面环境对 Wayland 输入法协议的支持程度不一样:
KDE Plasma Wayland:需要选 "Fcitx 5" 虚拟键盘,见上面的说明
GNOME Wayland:原生不支持 fcitx5 的 Wayland 前端,需要安装
gnome-shell-extension-kimpanel-git(AUR)来桥接Sway / Hyprland:通常开箱即用
如果你在 Wayland 下输入法不工作,最稳妥的办法还是把上面的环境变量设好,大部分应用在 XWayland 模式下就能正常用输入法了。
诊断工具
如果搞了半天还是不工作,fcitx5 自带一个诊断命令:
fcitx5-diagnose它会列出当前环境变量、已安装的模块、运行的进程等信息,并给出具体的修复建议。学会看这个输出,以后遇到类似"某个程序不认输入法"的问题你都能自己排查。
📦 不只是 pacman:安装桌面应用的三种方式
有桌面了,怎么装软件?在 Arch 里你有三层选择,各司其职:
第一层:pacman + AUR——系统级和开源软件
这是你用得最多的方式。Arch 官方仓库有大量开源软件,一条命令搞定:
bash
sudo pacman -S firefox vlc gimp如果官方仓库没有(比如一些冷门工具或专有软件),AUR(Arch User Repository)几乎什么都有。你需要一个 AUR 助手,推荐 yay:
bash
# 安装 yay
sudo pacman -S --needed git base-devel
git clone https://aur.archlinux.org/yay.git
cd yay
makepkg -si
# 然后用 yay 装东西,语法跟 pacman 一样
yay -S google-chrome visual-studio-code-binAUR 的好处是社区维护了大量 PKGBUILD 脚本,自动处理依赖、下载、编译和打包,装完后的软件同样受 pacman 管理,更新一起走。
第二层:Flatpak——大型闭源桌面应用的隔离区
有些商业软件(比如 Slack、Zoom、Spotify、Steam)闭源且依赖复杂。用 Flatpak 安装它们,可以与系统隔离,不会污染你的 Arch 环境,权限也受控(比如文件系统访问、网络访问都可以单独管理)。
先装 Flatpak 框架:
bash
sudo pacman -S flatpak然后添加 Flathub 软件源(这是最大的 Flatpak 应用商店):
bash
flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo重启后就可以装软件了:
bash
flatpak install flathub com.spotify.Client
flatpak install flathub us.zoom.Zoom
flatpak install flathub com.valvesoftware.SteamFlatpak 应用会出现在你的应用菜单里,跟普通软件一样启动。更新也简单:
bash
flatpak update第三层:AppImage——无需安装,双击运行
有些软件直接提供 .AppImage 文件,这是一个打包好的单体可执行文件,包含应用及其所有依赖,不需要安装、不需要 root 权限,下载下来给个可执行权限就能跑:
bash
chmod +x SomeApp-*.AppImage
./SomeApp-*.AppImage它的哲学有点像 Windows 上的"绿色软件":你把它放哪儿都行,删掉就是卸载,不会在系统里留残留。常见于一些开发工具、设计软件的 Linux 发行版(比如 BalenaEtcher、Kdenlive 等都有 AppImage 版本)。
三种方式的选用指南:
三种方式互不冲突,甚至可以共存(比如系统装 Firefox 用 pacman,同时装个 Flatpak 版的 Steam 用来隔离游戏环境)。这就是 Linux 的自由:没有人替你做决定,你根据需要自己选。
现在,你的 Arch 已经拥有了一个舒适的图形环境、清晰的中文显示,以及由你亲手搭建的整个底层骨架,而且文件系统已经在底层默默为你节省空间。接下来就是在这个地基上继续盖房子:
包管理三件套:系统软件用 pacman,大型闭源桌面应用用 Flatpak 隔离,开发环境可以引入 Nix 做可复现的依赖管理。
系统保护:利用 btrfs 的快照功能,结合 snapper 或 timeshift,滚挂了大不了一键回滚,而且因为
/home是独立子卷,回滚系统绝不会动你的个人数据。自动化与通讯:systemd 管理服务,管道和 dbus 让数据在程序间流动,用
notify-send从脚本发系统通知——所有组件都是自由组合的积木。
再进一步,去玩容器化吧。你刚才已经看到 cgroups、namespace、syscall 的影子了。在你的 Arch 里开一个容器,就是最好的编程和试验场所,而且完全不用担心搞坏系统。
欢迎开启你的 Arch Linux 之旅
这会是一个你想做什么就能做什么,完全由你管理的系统。
不会再有无缘无故的“拒绝访问”,后台不会冒出一堆吃 CPU 的神秘进程;你写的自动化任务不会因为自动更新或安全策略而突然失效;数据流动快捷而透明,系统行为可预测、可定制、在一定程度上可复现(追求极致复现请看 NixOS)。
你今天在桌面上学到的一切,明天就能几乎原封不动地用在服务器上。
去探索吧,围墙外的世界很大,而且一切都听你的。
参考资料
archlinux简明教程:https://arch.icekylin.online/guide/rookie/basic-install
archlinux 中文维基:https://wiki.archlinuxcn.org/wiki/