106. ArchLinux安装与配置

安装前的准备

双系统

  • 选择安装选项时, 在 Arch Linux install medium (x86_64, UEFI) 选项时, 按 e 键, 末尾添加 nomodeset

虚拟机

启动顺序(必选)

启动顺序 -> 高级 -> BIOS:EFI 64位

共享文件夹(可选)

选择 整个 $HOME 目录吧

应用程序(可选)

打印机(可选)

CD/DVD(可选)

隔离 linux 与 mac

不建议打开

关闭3d加速

archlinux 基础安装

⛵ 万事俱备,只欠东风

经过了上一节的准备工作,我们可以开始正式安装 archlinux 了。如果你还没有完成前面的阅读,请先仔细阅读章节 安装前的准备。如果对本节的步骤不理解或者有疑问,请阅读下一节 基础安装详解

本节从安装最基础的、无图形化界面的 archlinux 系统开始。如有需要可以参阅 ArchWiki 官方安装指南

ℹ️ 提示

本节中的截图来自虚拟机和已经安装好的 archlinux。不用担心!和你在实体机看到的是一样的。

⚠️ 注意

请按照指南的步骤一步一步进行!不要跳步、也不要在步骤中添加多余的动作!

另外,如果安装中有报错,请弄清楚报错的原因(这要求你起码能看懂有报错)!常见的原因包括但不限于输错了命令、添加了多余的步骤等。在解决了问题之后再进行下一步!

0. 进入安装环境

  1. 在第一个选项回车

  2. 进入安装环境后,便可以开始通过命令安装 archlinux 了

1. 禁用 reflector 服务

2020 年,archlinux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist(软件包管理器 pacman 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。

  1. 通过以下命令将该服务禁用:

    1
    systemctl stop reflector.service
  2. 通过以下命令查看该服务是否被禁用,按下 q 退出结果输出:

    1
    systemctl status reflector.service

ℹ️ 提示

在命令行中你可以使用如下命令清屏:

1
clear

同时,你可以使用 Tab 键在输入命令的时候对命令、参数或文件路径进行自动补全,提高效率的同时降低输入错误的风险。

2. 再次确认是否为 UEFI 模式

禁用 reflector 服务后,我们再来确认一下是否为 UEFI 模式:

1
ls /sys/firmware/efi/efivars

若输出了一堆东西(efi 变量),则说明已在 UEFI 模式。否则请确认你的启动方式是否为 UEFI

3. 连接网络

ℹ️ 提示

archlinux 的安装必须要求网络环境。

ℹ️ 提示

若为虚拟机且按照上一节 虚拟机安装前的准备 进行了配置;同时宿主机连接了网络,那么虚拟机应该已经连接网络了。

若使用无线连接

使用 iwctl 进行连接:

1
2
3
4
5
6
iwctl # 进入交互式命令行
device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出所有 wifi 网络
station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可
exit # 连接成功后退出

ℹ️ 提示

若无线网卡无法显示,请按照上一节 确保网络环境 的说明确保你的无线网卡硬件开关处于打开状态

你可以使用如下命令查看内核是否加载了你的无线网卡驱动。

1
lspci -k | grep Network

以我的硬件为例,输出如下:

1
00:14.3 Network controller: Intel Corporation Wi-Fi 6 AX201 (rev 20)

如果你的 BIOS 没有开启无线网卡的开关可以参考下列的命令来开启 WIFI

1
2
rfkill list #查看无线连接 是否被禁用(blocked: yes)
ip link set wlan0 up #比如无线网卡看到叫 wlan0

若看到类似Operation not possible due to RF-kill的报错,继续尝试rfkill unblock wifi来解锁无线网卡。

1
rfkill unblock wifi

部分无线网卡不兼容,请考虑使用有线连接安装 archlinux。

若使用有线连接

正常来说,只要插上一个已经联网的路由器分出的网线(DHCP),直接就能联网。

可以等待几秒等网络建立连接后再进行下一步测试网络的操作。

若笔记本没有网线接口请使用带网线接口的扩展坞。

4. 测试网络连通性

通过 ping 命令测试网络连通性:

1
ping www.bilibili.com

稍等片刻,若能看到数据返回,即说明已经联网。与 Windows 不同的是,需要按下 Ctrl + C 手动退出 ping 命令。

ℹ️ 提示

如果无线网络还是无法连接,请使用 ip link 命令查看无线网卡设备,使用 ip link set <设备名> up 命令激活对应的无线网卡。若看到类似 Operation not possible due to RF-kill 的报错,继续尝试 rfkill unblock wifi 来解锁无线网卡。

如有需要,可以参考 ArchWiki 相关内容

5. 更新系统时钟

使用 timedatectl 确保系统时间是准确的。这一步不是可选的,正确的系统时间对于部分程序来说非常重要:

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

6. 更换国内软件仓库镜像源加快下载速度

使用 vim 编辑器修改 /etc/pacman.d/mirrorlist 文件。将 pacman 软件仓库源更换为国内软件仓库镜像源:

1
vim /etc/pacman.d/mirrorlist

ℹ️ 提示

如果不会使用 vim 编辑器,请参阅 这里

vim 编辑器在安装和配置系统的过程中还需要使用多次。

放在最上面的是会使用的软件仓库镜像源,推荐的镜像源如下:

1
2
3
4
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站
Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站
Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站

修改完成的 /etc/pacman.d/mirrorlist 文件如图所示。

ℹ️ 提示

如果发现 /etc/pacman.d/mirrorlist 是如图这个样子的,那么说明你禁用 reflector 服务晚了。reflector 已经自动帮你生成了新的软件仓库镜像源列表。不过没有关系,手动将国内软件仓库镜像源放在最前面即可。

⚠️ 注意

前车之鉴 —— 请不在这一步中添加 archlinuxcn 源!如果你在 /etc/pacman.conf 中添加了内容,请将它们删掉。

7. 分区和格式化(使用 Btrfs 文件系统)

7-1. 分区

ℹ️ 提示

虚拟机安装请同时参阅步骤 🆕 全新安装

分区步骤对于有些人来说是个难点,如果有不理解的地方请参阅下一节 基础安装详解

同时,分区其它说明也会在下一节 基础安装详解 详细列出。

☢️ 警告

分区操作的部分命令具有危险性!除非你知道每一个命令在干什么,否则请不要执行!

同时,请提前做好数据备份,防止数据丢失!

本指南考虑到多数情况,在这里首先介绍 win10 和 archlinux 在一个磁盘上双系统的分区配置。

  • / 根目录:>= 128GB(和用户主目录在同一个 Btrfs 文件系统上)
  • /home 用户主目录:>= 128GB(和根目录在同一个 Btrfs 文件系统上)
  • /boot EFI 分区:256MB(由电脑厂商或 Windows 决定,无需再次创建)
  • Swap 分区:>= 电脑实际运行内存的 60%(设置这个大小是为了配置休眠准备)

ℹ️ 提示

因为采用 Btrfs 文件系统,所以根目录和用户主目录实际在一个分区上,只是在不同的子卷上而已。这里根目录和用户主目录的大小仅为参考,一般来说日常使用的 linux 分配 128GB 已经够用了。

  1. 通过 lsblk 命令,区分要安装 archlinux 的磁盘(通过观察磁盘的大小、已存在的分区情况等判断)并显示当前磁盘的分区情况:

    1
    lsblk # 显示当前分区情况

    此处要分区和安装 archlinux 的磁盘即为 sda。请根据你的实际情况判断!

    ℹ️ 提示

    为了模拟真实的环境,笔者手动创建了三个分区分别代表:

    1. sda1 —— EFI 分区
    2. sda2 —— win10 下的 C 盘(象征性的分了 1GB
    3. sda3 —— win10 下的 D 盘(象征性的分了 1GB

    ℹ️ 提示

    注意此处并不会显出出未分配的磁盘空间!只有在使用 cfdisk 执行分区操作后才会显示出来。

    ℹ️ 提示

    如果你的硬盘是 NVME 协议的固态硬盘,那么将不是 sdx 而是 nvmexn1

  2. 接下来使用 cfdisk 命令对磁盘分区(对于 SATA 协议的硬盘,x 为字母 abc 等等;对于 NVME 协议的硬盘,x 为数字 012 等等,请根据实际情况判断):

    • SATA

      1
      cfdisk /dev/sdx # 对安装 archlinux 的磁盘分区
    • NVME

      1
      cfdisk /dev/nvmexn1 # 对安装 archlinux 的磁盘分区

    进入 cfdisk 分区工具之后,你会看到如图所示的界面。通过方向键 可以在要操作磁盘分区或空余空间中移动;通过方向键 在对当前高亮的磁盘分区或空余空间要执行的操作中移动。

  3. 首先创建 Swap 分区。选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建 swap 分区(类似 Windows 的交换文件)

  4. 按下回车后会提示输入 分区大小,Swap 分区建议为**电脑内存大小的 60%**,或者和内存大小相等 -> 然后按下回车 Enter

    ℹ️ 提示

    单位可以自行输入,如 GBMB 等等。

  5. 默认新建的类型是 Linux filesystem,我们需要将类型更改为 Linux swap。选中操作 [Type] > 然后按下回车 Enter > 通过方向键 选中 Linux swap > 最后按下回车 Enter

  6. 我们再只需要一个分区即可(因为使用 Btrfs 文件系统,所以根目录和用户主目录在一个分区上),所以类似的:选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建分区

  7. 输入 分区大小(默认是剩余的全部空间。请根据实际情况输入)> 然后按下回车 Enter

  8. 分区类型默认即可,无需更改。接下来选中操作 [Write] 并回车 Enter > 输入 yes 并回车 Enter 确认分区操作

    ⚠️ 注意

    只有写入了操作分区表才会更改。

  9. 选中操作 [Quit] 并回车 Enter 以退出 cfdisk 分区工具

    ☢️ 警告

    再次提醒!请仔细检查命令和操作的正确性,否则将出现不可预料的情况。最危险的是可能造成数据丢失!

    常见的错误包括不小心把 Windows 的分区删掉了 😥。

  10. 分区完成后,使用 fdisklsblk 命令复查分区情况:

    1. fdisk

      1
      fdisk -l # 复查磁盘情况
    2. lsblk

      1
      lsblk # 复查磁盘情况

7-2. 格式化并创建 Btrfs 子卷

7-2.0. 格式化 EFI 分区

  • SATA

    1
    mkfs.fat -F32 /dev/sdxn
  • NVME

    1
    mkfs.fat -F32 /dev/nvmexn1pn

⚠️ 注意

如果目标是双系统(Win10/Win11 + Arch Linux),并且 Win10/Win11 和 Arch Linux 将要共存在一个硬盘上的话,不要重新格式化原有的 EFI 分区,因为它可能包含启动其他操作系统所需的文件。

7-2-1. 格式化 Swap 分区

通过以下命令格式化对应的 Swap 分区,请按照实际情况替换 xn(下同):

  • SATA

    1
    mkswap /dev/sdxn
  • NVME

    1
    mkswap /dev/nvmexn1pn

7-2-2. 格式化 Btrfs 分区

  1. 首先我们需要将整一个分区格式化为 Btrfs 文件系统。使用如下命令进行格式化:

    • SATA

      1
      mkfs.btrfs -L myArch /dev/sdxn
    • NVME

      1
      mkfs.btrfs -L myArch /dev/nvmexn1pn

    📑 命令参数说明:

    • -L 选项后指定该分区的 LABLE,这里以 myArch 为例,也可以自定义,但不能使用特殊字符以及空格,且最好有意义
  2. 为了创建子卷,我们需要先将 Btrfs 分区挂载到 /mnt 下:

    • SATA

      1
      mount -t btrfs -o compress=zstd /dev/sdxn /mnt
    • NVME

      1
      mount -t btrfs -o compress=zstd /dev/nvmexn1pn /mnt

    📑 命令参数说明:

    • -t 选项后指定挂载分区文件系统类型

    • -o 选项后添加挂载参数:
      - compress=zstd —— 开启透明压缩

  3. 使用 df 命令复查挂载情况:

    1
    df -h # -h 选项会使输出以人类可读的单位显示

7-2-3. 创建 Btrfs 子卷

  1. 通过以下命令创建两个 Btrfs 子卷,之后将分别挂载到 / 根目录和 /home 用户主目录:

    1
    2
    btrfs subvolume create /mnt/@ # 创建 / 目录子卷
    btrfs subvolume create /mnt/@home # 创建 /home 目录子卷

    ⚠️ 注意

    除非你清楚你的操作产生的后果,否则请保持子卷名称和结构与本指南一致,因为在后面我们会设置的快照工具 timeshift 只支持这种子卷布局。

  2. 通过以下命令复查子卷情况:

    1
    btrfs subvolume list -p /mnt
  3. 子卷创建好后,我们需要将 /mnt 卸载掉,以挂载子卷:

    1
    umount /mnt

8. 挂载

  1. 在挂载时,挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:

    • SATA

      1
      2
      3
      4
      5
      6
      mount -t btrfs -o subvol=/@,compress=zstd /dev/sdxn /mnt # 挂载 / 目录
      mkdir /mnt/home # 创建 /home 目录
      mount -t btrfs -o subvol=/@home,compress=zstd /dev/sdxn /mnt/home # 挂载 /home 目录
      mkdir -p /mnt/boot # 创建 /boot 目录
      mount /dev/sdxn /mnt/boot # 挂载 /boot 目录
      swapon /dev/sdxn # 挂载交换分区
    • NVME

      1
      2
      3
      4
      5
      6
      mount -t btrfs -o subvol=/@,compress=zstd /dev/nvmexn1pn /mnt # 挂载 / 目录
      mkdir /mnt/home # 创建 /home 目录
      mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvmexn1pn /mnt/home # 挂载 /home 目录
      mkdir -p /mnt/boot # 创建 /boot 目录
      mount /dev/nvmexn1pn /mnt/boot # 挂载 /boot 目录
      swapon /dev/nvmexn1pn # 挂载交换分区
  2. 使用 df 命令复查挂载情况:

    1
    df -h
  3. 使用 free 命令复查 Swap 分区挂载情况:

    1
    free -h # -h 选项会使输出以人类可读的单位显示

9. 安装系统

  1. 通过如下命令使用 pacstrap 脚本安装基础包:

    1
    2
    pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
    # 如果使用btrfs文件系统,额外安装一个btrfs-progs包

    📑 命令参数说明:

    • base-devel —— base-develAUR 包的安装过程中是必须用到的
    • linux —— 内核软件包,这里建议先不要替换为其它内核

    如果提示 GPG 证书错误,可能是因为使用的不是最新的镜像文件,可以通过更新 archlinux-keyring 解决此问题

    1
    pacman -S archlinux-keyring
  2. 通过如下命令使用 pacstrap 脚本安装其它必要的功能性软件:

    1
    pacstrap /mnt networkmanager vim sudo zsh zsh-completions

    📑 命令参数说明:

    • zsh —— zsh-completions 如果你是 bash 的爱好者,请把这两个包换成bash-completion
    • 如果你是第一次接触*nix 系统的新手,不建议换成 bash

    经过一系列安装时提示信息的刷屏,这些包就安装好了。

    ⚠️ 注意

    在执行命令前,请仔细检查命令的拼写正确;同时注意不要漏装东西。

    很多人在后续的步骤中报错就是因为这里漏装了东西。

    如果报错,请检查拼写,同时请确保之前的步骤 更换国内软件仓库镜像源加快下载速度没有添加 archlinuxcn 源。

10. 生成 fstab 文件

  1. fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:

    1
    genfstab -U /mnt > /mnt/etc/fstab
  2. 复查一下 /mnt/etc/fstab 确保没有错误:

    1
    cat /mnt/etc/fstab

    若为 NVME 协议的硬盘,输出结果应该与此类似:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # /dev/nvme0n1p6  /  btrfs  rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=256,subvol=/@,subvol=@ 0 0
    UUID=d01a3ca5-0798-462e-9a30-97065e7e36e1 / btrfs rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=256,subvol=/@,subvol=@ 0 0

    # /dev/nvme0n1p1 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
    UUID=522C-80C6 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2

    # /dev/nvme0n1p6 /home btrfs rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=257,subvol=/@home,subvol=@home 0 0
    UUID=d01a3ca5-0798-462e-9a30-97065e7e36e1 /home btrfs rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=257,subvol=/@home,subvol=@home 0 0

    # /dev/nvme0n1p5 none swap defaults 0 0
    UUID=8e40dbed-590f-4cb8-80de-5cef8343a9fc none swap defaults 0 0

11. change root

使用以下命令把系统环境切换到新系统下:

1
arch-chroot /mnt

此时,原来安装盘下的 /mnt 目录就变成了新系统的 / 目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。

12. 设置主机名与时区

  1. 首先在 /etc/hostname 设置主机名:

    1
    vim /etc/hostname

    加入你想为主机取的主机名,这里比如叫 myarch。

    ℹ️ 提示

    主机名不要包含特殊字符以及空格。

  2. 接下来在 /etc/hosts 设置与其匹配的条目:

    1
    vim /etc/hosts

    加入如下内容:

    1
    2
    3
    127.0.0.1   localhost
    ::1 localhost
    127.0.1.1 myarch.localdomain myarch

    ℹ️ 提示
    你可以使用 Tab 对齐。

    ℹ️ 提示
    某些情况下如不设置主机名,在 KDE 下可能会存在网络情况变更时无法启动 GUI 应用的问题,在终端中出现形如 No protocol specified qt.qpa.xcb: could not connect to display 的错误。这种情况极为少见。
    但不管如何,即使没有问题,我们都应该设置好主机名。

  3. 随后设置时区,在 /etc/localtime 下用 /usr 中合适的时区创建符号链接:

    1
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

    🍧 碎碎念

    不要找北京啦!这里没有北京,只有上海啦!🚀

    ℹ️ 提示

    同时,你也可以使用其它时区:

13. 硬件时间设置

使用如下命令将系统时间同步到硬件时间:

1
hwclock --systohc

14. 设置 Locale

Locale 决定了软件使用的语言、书写习惯和字符集。

  1. 编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#):

    1
    vim /etc/locale.gen

    ℹ️ 提示

    有几个选项极具迷惑性,请不要取消注释错了。

  2. 然后使用如下命令生成 locale

    1
    locale-gen
  3. /etc/locale.conf 输入内容:

    1
    echo 'LANG=en_US.UTF-8'  > /etc/locale.conf

    ⚠️ 注意

    不推荐在此设置任何中文 locale,会导致 tty 乱码。

15. 为 root 用户设置密码

1
passwd root

ℹ️ 提示

根据提示操作即可。注意输入密码时不会显示哦,不要以为 ⌨ 键盘坏了。

16. 安装微码

通过以下命令安装对应芯片制造商的微码:

1
2
pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD

ℹ️ 提示

🎉 恭喜你!这是你在新系统中第一次使用 pacman 软件包管理器安装软件!在这里一路回车完成安装即可。

如果你不会使用,请参阅 这里

17. 安装引导程序

如有需要可以参阅 ArchWiki 相关内容

  1. 安装相应的包:

    1
    pacman -S grub efibootmgr os-prober

    📑 命令参数说明:

    • -S选项后指定要通过

      1
      pacman

      包管理器安装的包:

      • grub —— 启动引导器
      • efibootmgr —— efibootmgrgrub 脚本用来将启动项写入 NVRAM
      • os-prober —— 为了能够引导 win10,需要安装 os-prober 以检测到它
  2. 安装 GRUB 到 EFI 分区:

    1
    grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH

    📑 命令参数说明:

    • --efi-directory=/boot —— 将 grubx64.efi 安装到之前的指定位置(EFI 分区)
    • --bootloader-id=ARCH —— 取名为 ARCH
  3. 接下来使用 vim 编辑 /etc/default/grub 文件:

    1
    vim /etc/default/grub

    进行如下修改:

    • 去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数

    • loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错

    • 加入 nowatchdog 参数,这可以显著提高开关机速度

    • 为了引导 win10,则还需要添加新的一行 GRUB_DISABLE_OS_PROBER=false

      1
      2
      3
      4
      5
      6
      7
      8
      9
      #GRUB boot loader configuration

      GRUB_DEFAULT=0
      GRUB_TIMEOUT=5
      GRUB_DISTRIBUTOR="Arch"
      GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog"
      GRUB_CMDLINE_LINUX=""
      GRUB_DISABLE_OS_PROBER=false
      ...
  4. 最后生成 GRUB 所需的配置文件:

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

    若引导了 win10,则输出应该包含倒数第二行:

    若 win10 安装在另一个硬盘中则不会输出 可在进入系统后挂载硬盘并重新执行该命令, 具体步骤见这里

    ℹ️ 提示

    1.在某些主板安装完成后,你会发现没有启动条目。这是因为某些主板的 UEFI 固件在显示 UEFI NVRAM 引导条目之前,需要在特定的位置存放可引导文件,不支持自定义存放 efi 文件(如微星 Z170-A Gaming PRO)。解决方案是在默认启动路径下安装 GRUB。重新插入安装优盘,按原先顺序挂载目录(不需要再次创建文件夹了),chroot/mnt,然后你可以直接把已经生成好的 efi 文件移动到默认目录下,如下命令所示。只有安装完成后你的主板不出现启动条目才需要尝试如下命令,正常安装无需执行。如有需要可以参考 ArchWiki 对应内容

    1
    2
    mv /boot/EFI/grub /boot/EFI/BOOT
    mv /boot/EFI/GRUB/grubx64.efi /boot/EFI/BOOT/BOOTX64.EFI

    2.os-prober 在 chroot 环境中可能无法正常运作。如果遇到这种情况,重启并引导进入系统后再次尝试生成配置文件。

18. 完成安装

  1. 输入以下命令:

    1
    2
    3
    exit # 退回安装环境
    umount -R /mnt # 卸载新分区
    reboot # 重启

    注意,重启前要先拔掉优盘,否则你重启后还是进安装程序而不是安装好的系统。

    ℹ️ 提示

    虚拟机直接重启即可。

    如图即为 GRUB 引导界面。

    ℹ️ 提示

    若引导了 win10 也会显示出来。

    ℹ️ 提示

    若 win10 分区使用了 🔐 Bitlocker 加密,则第一次从 GRUB 进入需要输入解锁密钥。

    你应该在步骤 5. 获取 Bitlocker 恢复密钥 中已经知晓了 Bitlocker 解锁密钥。

    若无法从 aka.ms 相关页面 获取解锁密钥,请尝试在 BIOS 中将 Windows Boot Manager 移动到启动顺序首位再尝试进入 win10。

  2. 重启后使用 root 账户登录系统:

  3. 设置开机自启并立即启动 networkmanager 服务,即可连接网络:

    1
    2
    systemctl enable --now NetworkManager # 设置开机自启并立即启动 NetworkManager 服务
    ping www.bilibili.com # 测试网络连接
  4. 若为无线连接,则需要在启动 networkmanager 后使用 nmcli 连接网络:

    1
    2
    nmcli dev wifi list # 显示附近的 Wi-Fi 网络
    nmcli dev wifi connect "Wi-Fi名(SSID)" password "网络密码" # 连接指定的无线网络

    也可以使用 nmtui 来配置网络

    1
    nmtui
  5. neofetch 可以将系统信息和发行版 logo 一并打印出来。通过 pacman 安装 neofetch

    1
    pacman -S neofetch

    使用 neofetch 打印系统信息:

    1
    neofetch

    🍧 碎碎念

    又到了 neofetch 的时间了吗?

祝贺!

到此为止,一个基础的、无图形界面的 archlinux 已经安装完成了!这时你应该可以感到满满的满足感(即使你还没有见到图形化的界面)。好好享受一下成功安装 archlinux 的喜悦吧!

如果你对本节的部分步骤不理解,请仔细阅读下一节 基础安装详解。在此之后,我们来安装图形界面。

ℹ️ 提示

你可以使用以下命令关机:

1
2
3
shutdown -h now
# 或者
poweroff

ℹ️ 提示

archlinux 在 2021 年 4 月在安装镜像中内置了一个 安装脚本,类似一个一键安装脚本,提供一些选项,即可快速安装(填问卷安系统)。和所有一键安装脚本类似,提供自动化,但不灵活的安装过程。缺陷包括但不限于:

  1. 只提供有限的文件系统格式
  2. 只可限定在一个磁盘
  3. 不能指定软件仓库镜像源
  4. 只提供有限的桌面选择
  5. 自动分区不可手动干预
  6. 输入错误直接崩溃退出
  7. 仅支持 UEFI 等

不建议使用这个安装脚本,除了以上各种原因,初学者也无法在这种安装过程中学到任何东西。如果你因为某些原因需要快速启动一个基础的 archlinux 环境,那么可以尝试此脚本。

显卡驱动

近年来,archlinux 的显卡驱动安装已经变得非常容易。本小节区分集成显卡、独立显卡和双显卡(集显 + 独显)三大类讨论 archlinux 显卡驱动的安装

所有 AMD 显卡建议使用开源驱动,英伟达显卡建议使用闭源驱动。

  1. 进行本小节内容时建议按照步骤 12. 设置 Timeshift 快照 设置了 Timeshift 快照,并且已经有至少一张快照。
  2. 虚拟机不需要安装显卡驱动。
  3. 若在设置过程中导致黑屏无法进入桌面,请尝试使用使用 Ctrl + Alt + F1 ~ F6tty1 ~ tty6 之间切换。将导致黑屏的配置删掉或使用快照恢复后重新启动电脑。

请确保已经按照本指南之前的章节安装配置好系统再向下进行,不要多个教程混着看(尤其是一些过时的教程)。因为可能导致漏掉本指南前置步骤中的某些操作,从而造成问题。

集成显卡

Intel 核芯显卡

如有需要可以参阅 ArchWiki 相关内容

通过以下命令安装如下几个包即可:

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

不建议安装 xf86-video-intel,而应使用 Xorg 的 modesetting 驱动(也就是什么都不用装的意思)
注意,只有 Intel HD 4000 及以上的集显才支持 vulkan。

AMD 集成显卡

如有需要可以参阅 ArchWiki 相关内容

选择驱动

对于具有集成显卡的 AMD 处理器,需要先确定集显架构(Architecture)是什么,再决定安装什么驱动。

推荐在 TECHPOWERUP 进行查询,信息非常全面。在确定了显卡架构后,再根据架构对照下表决定安装什么驱动。

GPU 架构 Radeon 显卡 开源驱动 非开源驱动
GCN 4 及之后 多种* AMDGPU* AMDGPU PRO*
GCN 3 多种 AMDGPU AMDGPU PRO
GCN 2 多种 AMDGPU/ ATI* 不支持
GCN 1 多种 AMDGPU / ATI 不支持
TeraScale 2&3 HD 5000 - HD 6000 ATI 不支持
TeraScale 1 HD 2000 - HD 4000 ATI 不支持
旧型号 X1000 及之前 ATI 不支持

*多种

*AMDGPU

*AMDGPU PRO

*ATI

对于 GCN 2.0 及以下架构的老显卡,直接安装开源 ATI 驱动即可,原本老旧的闭源 Catalyst 驱动在 2021 年已被废弃。
GCN 2.0 及以下架构的老显卡也不要使用开源 AMPGPU 驱动,因为其仅处于实验性质,需要各种自定义内核编译选项与配置,非常麻烦、得不偿失。
对于新型号(GCN 3 架构及更新)的集成显卡,直接安装开源驱动 AMDGPU 即可

下面是一些例子:

  • 你的笔记本 cpu 是目前常见的 AMD Ryzen™ 7 4800U,它的集显为 Vega 8。通过查询,可知其为 GCN 5.0 架构,那么对照上表,你应该安装 AMDGPU 开源驱动。

  • 你的台式机 cpu 是目前常见的 AMD Ryzen™ 5 3400G,它的集显为 Vega 11。通过查询,可知其为 GCN 5.0 架构,那么对照上表,你应该安装 AMDGPU 开源驱动。

  • 再老一些的 7th Gen A10-9700 APU 处理器 ,它的集显为 Radeon R7。通过查询,可知其为 GCN 2.0 架构,那么对照上表,你应该安装 ATI 开源驱动。

安装驱动

通过以下命令安装如下几个包即可:

[开源驱动 AMDGPU]
1
sudo pacman -S mesa lib32-mesa xf86-video-amdgpu vulkan-radeon lib32-vulkan-radeon
[开源 ATI 驱动]
1
sudo pacman -S mesa lib32-mesa xf86-video-ati

独立显卡

NVIDIA 独立显卡

部分 NVIDIA 独立显卡目前在 archlinux 下体验非常不好,存在以下问题:

  1. 部分桌面特效(如窗口惯性晃动)很卡
  2. 游戏无法正常运行
  3. 画面撕裂

若遇到了上述问题,建议在 archlinux 中还是单独使用集成显卡(如果有)吧(还可以节省电量)。如果要 🎮 打游戏不妨重启到 win10。

如有需要可以参阅 ArchWiki 相关内容

  • 对于 Turing (NV160/TUXXX) 系列或更新的显卡,需要安装 nvidia-open 驱动

    该驱动的质量目前处于 ‘alpha quality’ 状态,所以也许会有问题。并且它暂时不适用于具有 AMD 集成 GPU 的系统。

    [linux]
    1
    sudo pacman -S nvidia-open nvidia-settings lib32-nvidia-utils # 必须安装
    [others]
    1
    sudo pacman -S nvidia-open-dkms nvidia-settings lib32-nvidia-utils # 必须安装
  • 其他较新型号的独立显卡使用以下命令直接安装如下几个包即可:

    [linux]
    1
    sudo pacman -S nvidia nvidia-settings lib32-nvidia-utils # 必须安装
    [others]
    1
    sudo pacman -S nvidia-dkms nvidia-settings lib32-nvidia-utils # 必须安装
  • 如果是 GeForce 630 以下到 GeForce 400 系列的老卡,使用以下命令安装 nvidia-390xx-dkmsaur 及其 32 位支持包:

    1
    yay -S nvidia-390xx-dkms nvidia-settings lib32-nvidia-390xx-utils
  • 再老的显卡直接使用以下命令安装 开源驱动 即可:

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

安装 NVIDIA 官方的驱动之后,需要编辑 /etc/mkinitcpio.conf,在 HOOKS 一行删除 kms 并保存,然后执行 mkinitcpio -P 重新生成一次镜像。这能防止 initramfs 包含 nouveau 模块,避免 nouveau 和官方驱动的冲突。

AMD 独立显卡

AMD 独立显卡的驱动安装步骤实际上和 AMD 集成显卡是相同的,都需要先确定架构,然后选定正确的驱动安装即可。参考步骤 AMD 集成显卡

双显卡(集显 + 独显)

如有需要可以参阅 ArchWiki 相关内容

NVIDIA 独立显卡

optimus-manager 已经支持 AMD 集成显卡 + NVIDIA 独立显卡组合。

如有需要可以参考 optimus-manager 官方文档

同时拥有集成显卡与独立显卡的笔记本电脑,同样需要按照上述步骤先安装各个对应的软件包。除此之外还需要安装 optimus-managercn / aur 以及其图形前端 optimus-manager-qtaur。通过该程序可以在集成显卡和独立显卡间轻松切换。optimus-manager 提供三种模式 —— 分别为仅用独显、仅用集显以及 hybrid 动态切换模式。

  1. 使用以下命令安装相关软件包:

    [cn]
    1
    yay -S optimus-manager optimus-manager-qt
    [aur]
    1
    yay -S aur/optimus-manager optimus-manager-qt
  2. 安装完成后重启即可使用。optimus-manager 安装完成后会默认设置 optimus-manager.service 服务自动启动,但建议还是通过以下命令手动设置一下:

    1
    sudo systemctl enable optimus-manager.service
  3. 重启后在在菜单栏打开 optimus-manager 即可使用。可在其设置中设置开机自动启动:

此时你应该已经可以进行显卡切换了。

如果有问题,请详细阅读 optimus-manager 的文档,里面有详细的描述。由于各类问题太多,本文不再赘述。此处仅列出几项较为重要的注意事项:

  • 如果需要在独显和集显模式间切换,要注意你没安装各类 GPU 监控插件,它们会阻止显卡切换,导致不可预料的错误
  • 不要使用 Nvidia Control Panel 中的 Save to X Configuration file ,会导致配置冲突
  • 在显卡之间的切换时,重新登陆后如在 splash screen 卡住或者黑屏,可以尝试按照上述提示在 tty1 ~ tty6 之间进行切换

动态切换

hybrid 动态切换模式并不是自动的(类似 win10),需要手动添加环境变量。

hybrid 动态切换模式本质上是使用针对使用闭源驱动的双显卡 PRIME 方法进行切换 —— 这需要设置三个环境变量。有两种方法:

  1. 通过命令手动添加前缀,也可直接添加环境变量在全局环境下(不推荐)。如果加在了全局环境中,在从 hybrid 动态切换模式切换到其他模式之前一定要去掉这三个环境变量,否则会黑屏

  2. 用 nvidia-prime 包提供的命令 prime-run

prime-run 方法

prime-run 部分应用可以不需要安装 optimus-manager,直接运行。

但不推荐这样,因为除了部分应用会报错之外也无法使用仅独立显卡模式。

  1. 通过以下命令安装 nvidia-prime 包:

    1
    sudo pacman -S nvidia-prime
  2. 通过以下命令(请将 %command% 替换为要运行的命令)以使用 NVIDIA 独立显卡运行程序:

    1
    prime-run %command%

运行 steam 游戏的例子:

1
2
prime-run steam steam://rungameid/570 # 运行 Dota 2
prime-run steam steam://rungameid/730 # 运行 CS:GO

steam 游戏的启动参数 steam://rungameid/xxx 可通过以下方式查找:

  1. 右键需要运行的游戏图标 > 点击 编辑应用程序...

  2. 应用程序 选项卡 > 命令 处查看:

环境变量方法
手动输入

通过以下命令(请将 %command% 替换为要运行的命令)以使用 NVIDIA 独立显卡运行程序:

1
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME="nvidia" __VK_LAYER_NV_optimus="NVIDIA_only" %command%

运行 steam 游戏的例子:

1
2
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME="nvidia" __VK_LAYER_NV_optimus="NVIDIA_only"  steam steam://rungameid/570 # 运行 Dota 2
__NV_PRIME_RENDER_OFFLOAD=1 __GLX_VENDOR_LIBRARY_NAME="nvidia" __VK_LAYER_NV_optimus="NVIDIA_only" steam steam://rungameid/730 # 运行 CS:GO
全局变量

optimus-manager 官方文档 中不推荐将此环境变量添加到全局环境。

It is not recommended to set those variables system-wide (like in /etc/environment), since it would defeat the point of hybrid mode, and can also break desktop compositing on some environment (resulting in a black screen).
也就是说会遇到这些问题:

  1. Kwin / 显示特效混合器(混成器)奔溃(毛玻璃效果消失,原本是透明或毛玻璃效果的背景变黑)
  2. 黑屏
  1. 使用 vim 编辑 /etc/environment 文件:

    1
    sudo vim /etc/environment

    加入以下内容:

    1
    2
    3
    __NV_PRIME_RENDER_OFFLOAD=1
    __GLX_VENDOR_LIBRARY_NAME="nvidia"
    __VK_LAYER_NV_optimus="NVIDIA_only"
  2. 保存并退出 vim

电源管理

如果不是强烈追求能效控制以及注重电池寿命的用户,那么可以略过此段。配置电源管理需要针对你的硬件以及笔记本型号尝试正确的电源管理方式。

此部分的设置可能导致黑屏,并且尝试过程可能较长,也可能会遇到各类问题。请根据自身需求和能力选择是否操作。

电源管理做的事情是,在只用集显的模式下,确保正确关闭独立显卡;而在混合模式下,绝大多数情况下 NVIDIA 模块实际是始终开启的,电源管理并不生效

这件事情其实很复杂,因为对于不同的显卡型号,以及笔记本型号的组合,可行的方案都是不同的。笼统来说,最广泛适用的办法是 Bbswitch。但不建议上来就按照此方式安装使用,因为某些特定的硬件就是会出问题(黑屏)。

建议按照 optimus-manager 官方文档 一步步尝试,最后找到属于你自己电脑合适的电源管理方式。此文档必须详细阅读!

针对大多数笔记本适用的 Bbswitch,此处进行安装使用的讲解。

  1. 通过以下命令安装包 bbswitch;若使用其它内核,则安装包 bbswitch-dkms

    [linux]
    1
    sudo pacman -S bbswitch
    [others]
    1
    sudo pacman -S bbswitch-dkms
  2. 右键 optimus-manager 的托盘图标 > 点击 设置 > 在 Optimus 选项卡中的 switch method 中选择 Bbswitch 即可:

  3. 重启之后,若使用仅集显模式使用如下命令验证 NVIDIA 独立显卡是否被禁用:

    1
    lspci | grep NVIDIA

    若有 rev ff 字样,则表示独显已经成功禁用。

AMD 独立显卡

虽然 AMD 独立显卡无法使用 optimus-manager,但可以使用针对使用开源驱动的双显卡 PRIME 方法进行切换。也就是使用 DRI_PRIME=1 前缀使用独立显卡(可能还更简单了?🤔)。

  • 通过以下命令(请将 %command% 替换为要运行的命令)以使用 AMD 独立显卡运行程序:

    1
    DRI_PRIME=1 %command%

    运行 steam 游戏的例子:

    1
    2
    DRI_PRIME=1 steam steam://rungameid/570 # 运行 Dota 2
    DRI_PRIME=1 steam steam://rungameid/730 # 运行 CS:GO
  • 可以使用以下命令分别对集成显卡和独立显卡进行性能测试,选择分数更高的一个使用:

    [集成显卡]
    1
    glmark2
    [独立显卡]
    1
    DRI_PRIME=1 glmark2

    关于 glmark2 的说明请参阅 glmark2

  • 可以在 steam 游戏的启动前缀中加入 DRI_PRIME=1 mangohud %command% 来使用独显的同时显示帧数等信息。关于 mangohudaur 的使用请参阅 这里

性能测试

如有需要可以参考 ArchWiki 相关内容

glxgears

最传统和广为人知的方式是使用 glxgears 命令进行测试,其属于 mesa-utils 包。

  1. 通过以下命令安装 mesa-utils 包(可能已经安装了):

    1
    sudo pacman -S mesa-utils
  2. 通过以下命令进行测试:

    1
    glxgears

    随后会弹出一个小窗口运行测试程序:

    帧数会打印在终端中:

  3. 使用 Ctrl + C 退出测试

    glxgears 仅仅只能提供简单的测试场景及帧数显示,只测试了当前 OpenGL 功能的一小部分,功能明显不足。笔者推荐如下两种工具。

glmark2

glmark2 提供了一系列丰富的测试,涉及图形单元性能(缓冲、建筑、照明、纹理等)的不同方面,允许进行更全面和有意义的测试。每次测试单独计算帧速率。最终,程序根据之前的所有测试给出一个最终分数。在 archlinux 上属于包 glmark2cn / aur

  1. 使用以下命令安装 glmark2:

    [cn]
    1
    sudo pacman -S glmark2
    [aur]
    1
    yay -S aur/glmark2
  2. 使用以下命令启动 glmark2:

    1
    glmark2

    随后会弹出一个小窗口运行测试程序:

    以笔者的硬件为例(集成显卡),测试结果如下:

Unigine benchmark

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

  • superpositionEULA(2017)
  • valleyEULA(2013)
  • heavenEULA(2009)
  • tropicsEULA(2008)
  • sanctuaryEULA(2007)
  1. 可以使用以下命令从 AUR 下载全部版本(选一个即可):

    1
    2
    3
    4
    5
    yay -S unigine-superposition
    yay -S unigine-valley
    yay -S unigine-heaven
    yay -S unigine-tropics
    yay -S unigine-sanctuary
  2. 使用以下命令启动 Unigine benchmark(输入对应安装的版本):

    1
    2
    3
    4
    5
    unigine-superposition
    unigine-valley
    unigine-heaven
    unigine-tropics
    unigine-sanctuary
  3. 调整参数后,点击 RUN 即可进入测试,帧数会显示在右上角

  4. 点击左上角 基准 开始基准测试

  5. 点击左上角 退出确定 即可退出测试

此基准测试工具拥有实时的环境遮挡、来自不同来源的相互关联的灯光、HDR 效果图、逼真的水和具有大气光散射的动态天空。此外还可以设置抗锯齿级别、纹理质量和滤波、各向异性和着色器质量。

显卡信息查看

NVIDIA 独立显卡

nvidia-settings 这个包即可全面的展示显卡相关信息(在步骤 NVIDIA 独立显卡 中已经安装)。

AMD 独立显卡 / 集成显卡

  1. 通过以下命令安装 radeon-profile-gitaur 包以及其依赖 radeon-profile-daemon-gitaur

    1
    yay -S radeon-profile-git radeon-profile-daemon-git
  2. 使用以下命令启动这个进程,即可以图形化的方式查看 AMD 显卡信息:

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

不要对左下角的 auto low high 进行更改,有 bug 会导致卡死。

同时,显存占用在某些型号显卡上展示可能有误。

基础安装详解

🔭 知其然,知其所以然

这一节对 [archlinux 基础安装](#archlinux 基础安装) 中关键的几步做出了更进一步的解释,知其然知其所以然。此节没有特定顺序,可根据需要选择性阅读

需要说明的是,本指南假定你有一定的 Linux 基础知识,基础知识相关的话题不会被讨论

分区和格式化

  1. 因本指南介绍使用的文件系统是 Btrfs,很多萌新可能有些不理解。这里有必要说明一下
  2. 执意要用传统的 ext4 文件系统,本指南也给出了示例
  3. 对于全盘格式化后全新安装的(单 archlinux 系统)同学,这里也给出了需要做的额外步骤的说明
  4. 对于 Swap 分区还是 Swap 文件 的话题,也会在此讨论

为什么要用 Btrfs 文件系统

纵观 Btrfs 的历史,可以说 Btrfs 未来的发展是道阻且长的。也让我们感受到开源社区也并不是一根绳上的蚂蚱 —— 开源社区之间也有着各种各样的分歧。

但不管怎么说,Btrfs 的未来现在来看是光明的;我们也可以在 archlinux 上享受到 Btrfs 文件系统的特性带来的好处:

  1. 快照 —— archlinux 作为滚动发行版,若滚挂了可以使用 Btrfs 的快照特性快速回滚

    若使用传统的 ext4 文件系统,我们可以使用 timeshiftRSYNC 模式进行增量备份。但是,一般来说 RSYNC 方式的快照大小略大于当前实际使用大小,也就是说实际上开启了 timeshiftRSYNC 模式快照相当于磁盘可用空间直接少了一半多。因为虽然 RSYNC 方式的快照是增量的,但历史最久远的快照依然是完整备份,随后才是增量的

  2. 透明压缩 —— 可以大大减少磁盘的使用空间(压缩率大概在 10% 左右)

ℹ️ 提示

更多 Btrfs 文件系统介绍和操作请参阅 Btrfs 介绍与相关操作

传统 ext4 文件系统说明

若执意使用传统的 ext4 文件系统,那么分区的建议为:

  1. 若 archlinux 安装分区小于 256GB
    • / 根目录:全部空间(用户主目录不单独分区)
    • /boot EFI 分区:256MB
    • Swap 分区:>= 电脑实际运行内存的 60%
  2. 若 archlinux 安装分区大于 256GB
    • / 根目录:128GB
    • /home 用户主目录:剩余的全部空间
    • /boot EFI 分区:256MB
    • Swap 分区:>= 电脑实际运行内存的 60%

分区同样使用 cfdisk 工具,具体操作类似上一节 [7-1. 分区](#7-1. 分区) 所述,这里不再赘述。

  • 使用以下命令格式化 ext4 分区:

    • SATA

      1
      mkfs.ext4 /dev/sdax
    • NVME

      1
      mkfs.ext4 /dev/nvmexn1pn
  • 使用以下命令挂载 ext4 分区:

    • SATA

      1
      2
      3
      4
      5
      mount /dev/sdxn /mnt
      mkdir /mnt/home # 若 /home 目录单独分区
      mount /dev/sdxn /mnt/home # 若 /home 目录单独分区
      mkdir -p /mnt/boot
      mount /dev/sdxn /mnt/boot
    • NVME

      1
      2
      3
      4
      5
      mount /dev/nvmexn1pn /mnt
      mkdir /mnt/home # 若 /home 目录单独分区
      mount /dev/nvmexn1pn /mnt/home # 若 /home 目录单独分区
      mkdir -p /mnt/boot
      mount /dev/nvmexn1pn /mnt/boot

全新安装

若为全新安装(单 archlinux 系统),首先要对磁盘建立新的 GPT 分区表;同时,由于没有现存的 EFI 分区,所以我们还需要手动创建它(这一步在 [7. 分区和格式化(使用 Btrfs 文件系统)](#7. 分区和格式化(使用 Btrfs 文件系统)) 步骤之前):

1. 建立新的 GPT 分区表

  1. 同样的,先通过 lsblk 命令,区分要全新安装 archlinux 的磁盘(通过观察磁盘的大小等判断):

    1
    lsblk # 显示当前分区情况
  2. 通过以下命令将磁盘转换为 gpt 类型:

    • SATA

      1
      2
      3
      4
      parted /dev/sdx # 执行 parted,进行磁盘类型变更
      (parted) mktable # 输入 mktable
      New disk label type? gpt # 输入 gpt,将磁盘类型转换为 GPT 类型。如磁盘有数据会警告,输入 Yes 即可
      (parted) quit # 退出 parted 命令行交互
    • NVME

      1
      2
      3
      4
      parted /dev/nvmexn1 # 执行 parted,进行磁盘类型变更
      (parted) mktable # 输入 mktable
      New disk label type? gpt # 输入 gpt,将磁盘类型转换为 GPT 类型。如磁盘有数据会警告,输入 Yes 即可
      (parted) quit # 退出 parted 命令行交互

☢️ 警告

重建分区表会使磁盘所有数据丢失,请事先确认。

2. 建立 EFI 分区

进入 cfdisk 分区工具之后,类似上一节步骤 7-1. 分区 的分区说明,建立 EFI 分区:

  1. 选中 Free space > 再选中操作 [New] > 然后按下回车 Enter 以新建 EFI 分区
  2. 输入 分区大小(建议 >= 256MB、<= 1024MB;推荐 512MB)> 然后按下回车 Enter
  3. 选中操作 [Type] > 然后按下回车 Enter > 通过方向键 选中 EFI System > 最后按下回车 Enter
  4. 接下来可以按照上一节 7-1. 分区 的步骤创建其它分区

3. 格式化 EFI 分区

  • SATA

    1
    mkfs.vfat /dev/sdxn
  • NVME

    1
    mkfs.vfat /dev/nvmexn1pn

Swap 分区和 Swap 文件

如果希望使用 Swap 文件替换 Swap 分区,那么在分区和挂载中不必创建和开启 Swap 分区。

ℹ️ 提示

但是,使用 Swap 文件会更加复杂。因为若使用 Swap 文件在 Btrfs 文件系统中设置休眠(hibernate)的时候需要额外的步骤,而且可能有兼容性问题。若没有动态改变 Swap 大小的需求,建议使用 Swap 分区。

通过以下步骤创建和挂载 Swap 文件(这一步在 18. 完成安装 步骤之后):

  1. 通过以下命令创建 Swap File:

    1
    2
    3
    4
    sudo dd if=/dev/zero of=/swapfile bs=1M count=16384 status=progress # 创建 16G 的交换空间(大小 >= 电脑实际运行内存的 60%)
    sudo chmod 600 /swapfile # 设置正确的权限
    sudo mkswap /swapfile # 格式化 Swap 文件
    sudo swapon /swapfile # 挂载 Swap 文件
  2. 通过以下命令挂载 Swap 文件:

    1
    swapon /swapfile
  3. 使用 free 命令复查 Swap 文件挂载情况:

    1
    free -h # -h 选项会使输出以人类可读的单位显示
  4. 最后,向 /etc/fstab 中追加如下内容:

    1
    /swapfile  none  swap  defaults  0 0

安装环境和新系统的关系

理解安装环境和新系统的关系,对于理解 archlinux 安装时所做的步骤具有重大意义。可以说,理解了它们的关系基本上就理解了 archlinux 的安装

为了生动形象的理解安装环境和新系统的关系,我们可以将安装系统的过程想象成搬家 🏠。

1. 建房子

我们可以将安装环境比喻成一个临时的家。为了住进新家,我们需要先把新家的房子建起来。这个过程就是 7. 分区和格式化。在磁盘上建立新的分区并格式化,就好比在空余的土地上建立起新的房子。

2. 建立通道

新房建好了,我们首先还要建立一条联通旧家和新家之间的通道 —— 不然我们怎么走到新家去呢!更不要提将家具什么的安置到新家去了。这个步骤就是 8. 挂载。通过将新的分区挂载到 /mnt 下,我们才能对新的分区进行操作。

3. 添置家具

光有一个空荡荡的房子是没有用的。为了变成一个能够生活的温馨小窝,我们还需要添置家具。这个步骤就是 9. 安装系统。在执行 pacstrap 脚本的过程中,其实就是将系统运行需要的一些基础的东西安装到新的系统中 —— 类似把家具放到新的家里。

4. 搬进新家

最后,新家建好了,装修啊、家具啊也弄好了,我们可以搬进新家了!这一步骤就是 11. change rootarch-chroot 脚本是软件包 arch-install-scripts 的一部分,但本质上只是在 chroot 命令的基础上添加了一些功能,简化了“搬家”的流程。其类似(注意,只是类似,arch-chroot 还会做一些其它的工作,安装时请使用 arch-chroot)以下命令:

1
2
3
4
mount -t proc none /mnt/proc
mount -t sysfs none /mnt/sys
mount -o bind /dev /mnt/dev
chroot /mnt bash

chroot 顾名思义,就是 change root 的意思。chroot 命令把根目录换成指定的目录。通常,切换根目录一般的目的是为了系统维护,例如重装引导程序或者重置遗忘的密码;而在安装时则是为了安装(大雾 🌫️。在安装过程中,新的根目录就是 /mnt。这个过程就好比从原来的家搬到了新的家一样,是不是这样理解起来就简单一点了呢?

多系统配置引导程序

  1. 查看系统的安装的磁盘:

    使用命令 lsblkfdisk -l 可以列出系统中所有的硬盘和分区信息。找到你想要挂载的硬盘和分区。

    使用 fdisk -l, 找到固态盘的分区情况

  2. 挂载磁盘

    1
    2
    mount /dev/nvme0n1p1 /mnt/win/
    mount /dev/nvme0n1p4 /mnt/ubuntu/

    提示:

    1. 你可以使用 blkid 命令来查看系统上的块设备(包括硬盘和分区)以及它们的文件系统类型。如: sudo blkid /dev/sda1

    2. archlinux unkonwn fillesystem type ntfs

      系统缺少对 NTFS 文件系统的支持。在Arch Linux中,通常可以通过安装 ntfs-3g 包来添加对 NTFS 文件系统的支持。

      1
      2
      sudo pacman -Sy
      sudo pacman -S ntfs-3g
  3. 安装引导程序: grub-mkconfig -o /boot/grub/grub.cfg

  4. 卸载磁盘

    1
    umount -R /mnt/*
  5. 重启: reboot

杂七杂八 + QAs

其它琐碎的问题不在一一展开叙述,这里通过列表统一说明:

  1. EFI 分区(又称 esp 分区)不一定要挂载在 /boot 目录下;也可以是 /efi 或者其他非常见路径(当然一般推荐挂载在 /boot 下,方便引导程序读取同样在这个目录下的内核、微码等启动系统的必要文件)

  2. 若为联想小新 Pro14 / YOGA 14s 2021 机型,发现安装前后键盘都无法正常工作。此时安装时请使用外接键盘。为了解决该问题,在 17. 安装引导程序 步骤中编辑 /etc/default/grub 文件时添加额外的 GRUB 参数 —— 在 GRUB_CMDLINE_LINUX_DEFAULT 这一行中添加参数 i8042.dumbkbd

    修改后复查:

    1
    head /etc/default/grub

    输出如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # GRUB boot loader configuration

    GRUB_DEFAULT_SUBMENU=y
    GRUB_DEFAULT=saved
    GRUB_SAVEDEFAULT=true
    GRUB_TIMEOUT=2
    GRUB_DISTRIBUTOR="Arch"
    GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog i8042.dumbkbd"
    GRUB_CMDLINE_LINUX=""
  3. Q: EFI分区写入失败: EFI扩容

    1. 右键单击EFI盘并选择“调整分区大小”。

    2. 通过向右拖动滑块来扩展系统分区。

    3. 返回主菜单,点击“提交”执行挂起的操作。

桌面环境与常用应用安装

两岸猿声啼不住,轻舟已过万重山

没有图形界面的 archlinux 显然作为日常使用的操作系统是不合适的。但经过这一节的安装和配置后,我们的系统就可以当作日常的操作系统使用了

这一小节,我们开始着手安装桌面环境和一些常用的软件。如有需要可以参阅 ArchWiki 一般性建议

ℹ️ 提示

指南中带有 aur 角标的软件代表是在 AUR(Arch User Repository)中用户自行打包的软件。不在 arch 官方支持范围内,可能会出现各种问题如更新不及时、无法安装、使用出错等。

指南中带有 cn 角标的软件代表是在 archlinuxcn(Arch Linux 中文社区仓库)中用户自行打包的软件。不在 arch 官方支持范围内,可能会出现各种问题如更新不及时、无法安装、使用出错等。

指南中带有 EULA 角标的软件代表是 专有软件。请自行斟酌是否使用。

确保系统为最新

如果你在做完章节 archlinux 基础安装 的内容后,关机并放置过一段时间,那么需要先按照 18. 完成安装 中连接网络的方法重新连网,然后使用以下命令更新系统:

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

配置 root 账户的默认编辑器

默认情况下,archlinux 在一些终端编辑场景调用 vi 编辑器,但是我们使用 vim 编辑器。

如果不做额外配置且不显式的指定编辑器,在一些终端场景下(如下面的 visudogit 等)调用编辑器时会出错。

  1. 使用 vim 编辑 ~/.bash_profile 文件:
1
vim ~/.bash_profile

在适当位置加入以下内容:

1
export EDITOR='vim'

ℹ️ 提示

也可以添加到 ~/.bashrc 中,但是(如果不做其它配置或显式的执行)在登录命令行 tty 后不会被执行,也就失去了意义。

一般来说我们登录 root 账户时很可能是在命令行 tty 登录的(有时也会 su)。

  1. 保存并退出 vim

准备非 root 用户

  1. 通过以下命令添加用户,比如新增加的用户叫 myusername

    1
    useradd -m -G wheel -s /bin/bash myusername

    📑 命令参数说明:

    • -m 创建用户的同时创建用户家目录

    • -G选项后指定附加组

      • wheel —— wheel 附加组可 sudo 进行提权
    • -s 选项后指定 shell 程序

    • myusername —— 用户名(请自定义,但不要包含空格和特殊字符)

  2. 通过以下命令根据提示设置新用户 myusername 的密码:

    1
    passwd myusername

    ℹ️ 提示

    弱密码已经不被接受,请设置一个较为复杂的密码,如 i_love_archlinux

  3. 使用 vim 编辑器通过 visudo 命令编辑 sudoers 文件:

    1
    EDITOR=vim visudo # 这里需要显式的指定编辑器,因为上面的环境变量还未生效
  4. 找到如下这样的一行,把前面的注释符号 # 去掉:

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

    📑 这里稍微解释一下:

    • %wheel —— 用户名或用户组,此处则代表是 wheel 组,% 是用户组的前缀
    • ALL= —— 主机名,此处则代表在所有主机上都生效(如果把同样的 sudoers 文件下发到了多个主机上)
    • (ALL:ALL) —— (任意用户:任意用户组),此处则代表可以成为任意目标用户/用户组
    • 最后的 ALL —— 代表可以执行任意命令

    几个更详细的例子:

    1. mailadmin 组里的用户可以作为 root 用户,在 snowrain 这两台主机执行一些邮件服务器控制命令(命令之间用 , 分隔):
    1
    %mailadmin  snow,rain=(root)  /usr/sbin/postfix, /usr/sbin/postsuper, /usr/bin/doveadm
    1. 用户 whoami 可以在所有主机上以 root 用户不输入密码执行 rndc reload 这条命令(正常来说 sudo 都是要求输入调用方的密码的):

    sudoers

    1
    whoami  ALL=(root)  NOPASSWD: /usr/sbin/rndc reload
    1. 当在 users 组里的用户以 sudo passwd 或者 sudo passwd root 方式运行命令的时候,可以直接把 root 用户的密> 码 改掉,这真是太危险了!必须要把这两条命令禁止掉,但我们又希望用户可以通过 sudo passwd 修改其它用户的密码。那么我们可以在命令前面加上 ! 来表示不可执行的命令:
    1
    %users  ALL=(root)  !/usr/bin/passwd, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root

    总结一下,语法如下:

    1
    用户名/%用户组名 主机名=(目标用户名) 命令1, 命令2, !命令3
  5. 保存并退出 vim 编辑器

开启 32 位支持库与 Arch Linux 中文社区仓库(archlinuxcn)

  1. 编辑 /etc/pacman.conf 文件:

    1
    vim /etc/pacman.conf
  2. 去掉 [multilib] 一节中两行的注释,来开启 32 位库支持

  3. 在文档结尾处加入下面的文字,来添加 archlinuxcn 源。推荐的镜像源(选一个即可)也一并列出:

    1
    2
    3
    4
    5
    [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 官方 Github Repo 列出,可以根据自己实际情况另行选择。

    archlinuxcn 仓库服务器位于欧洲,在中国大陆、中国香港、美国有镜像。

    1. 保存并退出 vim 编辑器
    2. 通过以下命令刷新 pacman 数据库并更新:
    1
    pacman -Syyu

安装 KDE Plasma 桌面环境

ℹ️ 提示

新手推荐安装 KDE Plasma 桌面环境,此外有 GNOME、 Xfce 等桌面环境和一众窗口管理器可供选择。本教程仅列出 KDE 安装使用教程。

  1. 通过以下命令安装相关软件包:

    1
    pacman -S plasma-meta konsole dolphin # plasma-meta 元软件包、konsole 终端模拟器和 dolphin 文件管理器
  2. kde 默认安装的是xorg,如果想使用wayland的话安装以下包:

    1
    2
    3
    4
    pacman -S  plasma-wayland-session xdg-desktop-portal
    # N卡用户需要额外安装egl-wayland,xdg-desktop-portal包是为了如obs此类工具录制屏幕使用
    # xdg-desktop-portal包组提供了不同环境下使用的软件包
    # 例如kde用户可选择xdg-desktop-portal-kde包
  3. 安装完成后,可以在后续登录时选择使用 xorg 还是 wayland

配置并启动 greeter sddm

  1. 开启 sddm.service 守护进程:

    1
    systemctl enable sddm
  2. 通过以下命令启动显示管理器或重启电脑,即可看到欢迎界面:

    1
    systemctl start sddm  # 直接启动显示管理器,与以下reboot命令二选一即可
    1
    reboot

    sign-in

  3. 输入新用户的密码并回车 Enter 即可登录桌面

    ℹ️ 提示

    若虚拟机下在 sddm 输入密码登录后无法进入桌面,只有黑屏和光标,请确认在步骤 3. 配置 VirtualBox没有勾选 启用3D加速

    ℹ️ 提示

    值得注意的是此时操作系统尚未安装相应的显卡驱动。如在进入桌面环境时遭遇闪退花屏等意外情况,建议尝试安装相应的显卡驱动。详情请参阅显卡驱动

安装基础功能包

  1. 进入桌面后,在开始菜单搜索并打开 Konsole。它是 KDE 桌面环境默认的终端模拟器

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

    1
    ping www.bilibili.com # 测试网络连通性

    KDE 桌面环境中连接网络和 win10 一样,这里不再赘述。

  3. 接下来安装一些基础功能包:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    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 noto-fonts-cjk noto-fonts-emoji noto-fonts-extra # 安装谷歌开源字体及表情
    sudo pacman -S firefox chromium # 安装常用的火狐、chromium 浏览器
    sudo pacman -S ark # 压缩软件。在 dolphin 中可用右键解压压缩包
    sudo pacman -S packagekit-qt5 packagekit appstream-qt appstream # 确保 Discover(软件中心)可用,需重启
    sudo pacman -S gwenview # 图片查看器
    sudo pacman -S steam # 游戏商店。稍后看完显卡驱动章节再使用
  4. 最后执行安装 archlinuxcn 源所需的相关步骤:

    1
    2
    sudo pacman -S archlinuxcn-keyring # cn 源中的签名(archlinuxcn-keyring 在 archlinuxcn)
    sudo pacman -S yay # yay 命令可以让用户安装 AUR 中的软件(yay 在 archlinuxcn)

    ℹ️ 提示

    若安装 archlinuxcn-keyring 时报错,是由于密钥环的问题。可先按照 archlinuxcn 官方说明 执行其中的命令,再安装 archlinuxcn-keyring

    archlinuxcn 社区源的 keyringarchlinuxcn-keyringfarseerfc 的 key 签署验证,而 Arch Linux 官方 keyring 中包含了 farseerfc 的 key 。自 12 月初 archlinux-keyring 中删除了一个退任的 master key 导致 farseerfc 的 key 的信任数不足,由 GnuPGweb of trust 推算为 marginal trust,从而不再能自动信任 archlinuxcn-keyring 包的签名。

    如果你在新系统中尝试安装 archlinuxcn-keyring 包时遇到如下报错:

    1
    error: archlinuxcn-keyring: Signature from "Jiachen YANG (Arch Linux Packager Signing Key) <farseerfc@archlinux.org>" is marginal trust

    请使用以下命令在本地信任 farseerfc 的 key 。此 key 已随 archlinux-keyring 安装在系统中,只是缺乏信任:

    1
    sudo pacman-key --lsign-key "farseerfc@archlinux.org"

    之后继续安装 archlinuxcn-keyringsudo pacman -S archlinuxcn-keyringhttps://www.archlinuxcn.org/archlinuxcn-keyring-manually-trust-farseerfc-key/

检查家目录

检查家目录下的各个常见目录是否已经创建,若没有则需通过以下命令手动创建:

1
2
3
cd ~
ls -hl
mkdir Desktop Documents Downloads Music Pictures Videos

配置非 root 账户的默认编辑器

  1. 使用 vim 编辑 ~/.bashrc 文件:
1
vim ~/.bashrc
  1. 在适当位置加入以下内容:
1
export EDITOR='vim'

ℹ️ 提示

也可以添加到 ~/.bash_profile 中。

设置系统为中文

  1. 打开 System Settings > Language and Regional Settings > 在 Language 中点击 Add languages... > 选择中文加入 ADD,再拖拽到第一位 > 点击 Apply

  2. 注销并重新登陆即可生效

ℹ️ 提示

很多人会错误的更改 System Settings > Regional Settings > Formats 中的值为中文蒙古、默认或者其他值。这会导致系统中一半英文一半中文。这里的值要保持默认的 en_USzh_CN,或者改为你在 locale.gen 中添加的任意一种语言。

安装输入法

如有需要可以参阅 Fcitx5 官方文档

  1. 通过以下命令安装相关软件包:

    1
    2
    3
    4
    5
    sudo pacman -S fcitx5-im # 输入法基础包组
    sudo pacman -S fcitx5-chinese-addons # 官方中文输入引擎
    sudo pacman -S fcitx5-anthy # 日文输入引擎
    sudo pacman -S fcitx5-pinyin-moegirl # 萌娘百科词库。二刺猿必备(archlinuxcn)
    sudo pacman -S fcitx5-material-color # 输入法主题
  2. 此外,我们还需要设置环境变量。通过 vim 编辑文件 /etc/environment

    1
    sudo vim /etc/environment
  3. 在文件中加入以下内容并保存退出:

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

    Konsole 以及 Dolphin 都需要这些环境变量,倒是 Firefox 和 Chromium 都不需要就可以输入中文。

    ℹ️ 提示

    1. 如果使用 Wayland 而非 X11,请参照如下方式进行配置而非上面的配置方法:

    在「系统设置 - 输入设备 - 虚拟键盘」中选中 Fcitx 5;environment 仅保留 XMODIFIERS=@im=fcitx 一行;在基于 Chromium 的程序(包括浏览器和使用 Electron 的程序)中加入 --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime 启动参数。

    1. 检查一下是否有拼写错误,如果输入法无法正常切换,可尝试执行 fcitx5-diagnose 命令来诊断问题的原因。

    由于存在安全性问题,自 2022 年 10 月 21 日起,Arch Linux 默认不再读取 ~/.pam_environment 文件中的设置。

  4. 打开 系统设置 > 区域设置 > 输入法

  5. 点击提示信息中的 运行 Fcitx

  6. 点击 添加输入法 > 找到简体中文下的 Pinyin > 点击 添加 即可加入拼音输入法:

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

  8. 回到输入法设置 > 点击 配置附加组件 > 找到 Classic User Interface > 在主题里选择一个你喜欢的颜色 > 最后点击 应用

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

ℹ️ 提示

通过 Ctrl + 空格 切换中英文输入。

启动蓝牙(若有)

通过以下命令开启蓝牙相关服务并设置开机自动启动:

1
sudo systemctl enable --now bluetooth

设置 Timeshift 快照

  1. 通过以下命令安装 Timeshiftcn / aur:

    • cn

      1
      sudo pacman -S timeshift
    • aur

      1
      yay -S aur/timeshift

    ℹ️ 提示

    若安装 AUR 时无法正常下载,请先参照章节 透明代理 配置透明代理。

  2. 打开 Timeshift,第一次启动会自动启动设置向导

若使用 Btrfs 文件系统

若按照步骤 7. 分区和格式化(使用 Btrfs 文件系统) 使用的 Btrfs 文件系统,则进行如下操作。

  1. 快照类型选择 BTRFS,点击 下一步

  2. 快照位置选择 BTRFS 分区,点击 下一步

    ℹ️ 提示

    Timeshift 只支持快照操作系统安装在具有 Ubuntu 类型的子卷布局(@@home 子卷)的 BTRFS 分区。

    若此处提示不支持的子卷布局,请确保按照步骤 7. 分区和格式化(使用 Btrfs 文件系统) 的说明分区。

  3. 选择快照计划,点击 下一步

    ℹ️ 提示

    由于 BTRFS 类型快照占用空间相对较小,可以适当提高快照数量。

  4. 若希望 /home 用户主目录也快照,则勾选在备份中包含 @home 子卷,然后点击 下一步

  5. 点击 完成 结束配置

    ⚠️ 注意

    完成后建议执行下述指令删除 subvolid

    1
    sudo sed -i -E 's/(subvolid=[0-9]+,)|(,subvolid=[0-9]+)//g' /etc/fstab

    否则,恢复 BTRFS 类型快照时,可能因子卷 ID 改变导致无法正常进入系统,参阅 恢复后无法挂载目录

若使用 ext4 文件系统

若使用的为传统的 ext4 文件系统,则进行如下操作。

  1. 快照类型选择 RSYNC,点击 下一步
  2. 快照位置选择较大的分区,快照将保存在此分区的 /timeshift 目录下
  3. 选择快照计划,点击 下一步

ℹ️ 提示

由于 RSYNC 类型快照占用空间较大,请不要保存过多的历史快照。

  1. /home 用户主目录可选全部包含,或者选择排除一切,在下一项中进行更详细配置。其中 root 默认全备份(即使选择排除一切)
  2. 若用户主目录选择排除一切,在包含/排除模式中建议进行如下配置(注意顺序,可拖拽移动顺序):
    • + /home/user/.config/***(注意是 ***
    • + /home/user/.local/***
    • - /home/user/.**
    • - /home/user/**
    • - /root/**
  3. 点击 完成 结束配置

自此,Timeshift 快照已经成功设置。Timeshift 将按照计划快照系统并删除久远的快照。Timeshift 快照为系统增加了一层保障。

太棒了

自此,一个可以当作日常系统使用的 archlinux 已经基本配置完成了!KDE 桌面环境经过了多年的迭代更新,已经非常完善和强大了,将 archlinux 作为日常使用的主力系统不在话下。

参考自arch.icekylin.online