Skip to content

archlinux 基础安装

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

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

⚠️ 注意

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

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

archlinux-iso-1

  1. 在第一个选项回车

archlinux-iso-2

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

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

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

stop-reflector

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

Terminal window
ls /sys/firmware/efi/efivars

check-efi

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

使用 iwctl 进行连接:

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

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

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

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

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

Terminal window
ping www.bilibili.com

ping

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

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

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

time

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

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

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

Terminal window
vim /etc/pacman.d/mirrorlist

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

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

mirrorlist-1

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

⚠️ 注意

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

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

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

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

  • / 根目录:>= 128GB(和用户主目录在同一个 Btrfs 文件系统上)
  • /home 用户主目录:>= 128GB(和根目录在同一个 Btrfs 文件系统上)
  • /boot EFI 分区:256MB(由电脑厂商或 Windows 决定,无需再次创建)
  • Swap 分区:>= 电脑实际运行内存的 60%(设置这个大小是为了配置休眠准备)
  1. 通过 lsblk 命令,区分要安装 archlinux 的磁盘(通过观察磁盘的大小、已存在的分区情况等判断)并显示当前磁盘的分区情况:
Terminal window
lsblk # 显示当前分区情况

partition-1

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

  1. 接下来使用 cfdisk 命令对磁盘分区(对于 SATA 协议的硬盘,x 为字母 abc 等等;对于 NVME 协议的硬盘,x 为数字 012 等等,请根据实际情况判断):
Terminal window
cfdisk /dev/sdx # 对安装 archlinux 的磁盘分区

partition-2

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

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

partition-3

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

partition-4

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

partition-5

partition-6

partition-7

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

partition-8

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

partition-9

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

partition-10

partition-11

⚠️ 注意

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

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

partition-12

  1. 分区完成后,使用 fdisklsblk 命令复查分区情况:
Terminal window
fdisk -l # 复查磁盘情况

如果 archlinux 需要和 Windows 共存在一个硬盘上,需要通过 DiskGenius 或其他分区软件检查 EFI 分区容量不小于 256MB,如果小于,可能需要扩容(推荐,但可能不太好

partition-13

partition-14

Terminal window
mkfs.fat -F32 /dev/sdxn

⚠️ 注意

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

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

Terminal window
mkswap /dev/sdxn

mkswap

  1. 首先我们需要将整一个分区格式化为 Btrfs 文件系统。使用如下命令进行格式化:
Terminal window
mkfs.btrfs -L myArch /dev/sdxn

📑 命令参数说明:

  • -L 选项后指定该分区的 LABLE,这里以 myArch 为例,也可以自定义,但不能使用特殊字符以及空格,且最好有意义

mkbtrfs_step-1

  1. 为了创建子卷,我们需要先将 Btrfs 分区挂载到 /mnt 下:
Terminal window
mount -t btrfs -o compress=zstd /dev/sdxn /mnt

📑 命令参数说明:

  • -t 选项后指定挂载分区文件系统类型
  • -o 选项后添加挂载参数:
    • compress=zstd —— 开启透明压缩
  1. 使用 df 命令复查挂载情况:
Terminal window
df -h # -h 选项会使输出以人类可读的单位显示

mkbtrfs_step-2

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

mkbtrfs_step-3

⚠️ 注意

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

  1. 通过以下命令复查子卷情况:
Terminal window
btrfs subvolume list -p /mnt

mkbtrfs_step-4

  1. 子卷创建好后,我们需要将 /mnt 卸载掉,以挂载子卷:
Terminal window
umount /mnt

mkbtrfs_step-5

  1. 在挂载时,挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:
Terminal window
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 # 挂载交换分区

mount_step-1

mount_step-2

  1. 使用 df 命令复查挂载情况:
Terminal window
df -h

mount_step-3

  1. 使用 free 命令复查 Swap 分区挂载情况:
Terminal window
free -h # -h 选项会使输出以人类可读的单位显示

mount_step-4

关于采用双 EFI 分区的双系统安装

Section titled “关于采用双 EFI 分区的双系统安装”

双 EFI 分区策略的时候, 需要将 Windows 的 EFI 分区 挂载到 Archlinux 的根目录下 , 这样后续安装 GRUB 的时候才能被正确的识别到。

Terminal window
mkdir /mnt/efi
mount nvmexn1pn /mnt/efi # nvmexn1pn 是 Windows 的 EFI 文件
  1. 通过如下命令使用 pacstrap 脚本安装基础包:
Terminal window
pacstrap /mnt base base-devel linux linux-firmware btrfs-progs
# 如果使用btrfs文件系统,额外安装一个btrfs-progs包

📑 命令参数说明:

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

pacstrap_step-1

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

Terminal window
pacman -S archlinux-keyring
  1. 通过如下命令使用 pacstrap 脚本安装其它必要的功能性软件:
Terminal window
pacstrap /mnt networkmanager vim sudo zsh zsh-completions

📑 命令参数说明:

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

pacstrap_step-2

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

⚠️ 注意

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

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

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

  1. fstab 用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用 genfstab 自动根据当前挂载情况生成并写入 fstab 文件:
Terminal window
genfstab -U /mnt > /mnt/etc/fstab
  1. 复查一下 /mnt/etc/fstab 确保没有错误:
Terminal window
cat /mnt/etc/fstab

fstab

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

# /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

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

Terminal window
arch-chroot /mnt

arch-chroot

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

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

set-name-and-timezone_step-1

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

  1. 接下来在 /etc/hosts 设置与其匹配的条目:
Terminal window
vim /etc/hosts

加入如下内容:

Terminal window
127.0.0.1 localhost
::1 localhost
127.0.1.1 myarch.localdomain myarch

set-name-and-timezone_step-2

  1. 随后设置时区,在 /etc/localtime 下用 /usr 中合适的时区创建符号链接:
Terminal window
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

set-name-and-timezone_step-3

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

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

Terminal window
hwclock --systohc

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

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

locale_step-1

locale_step-2

  1. 然后使用如下命令生成 locale
Terminal window
locale-gen

locale_step-3

  1. /etc/locale.conf 输入内容:
Terminal window
echo 'LANG=en_US.UTF-8' > /etc/locale.conf

⚠️ 注意

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

Terminal window
passwd root

password

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

Terminal window
pacman -S intel-ucode # Intel
pacman -S amd-ucode # AMD

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

  1. 安装相应的包:
Terminal window
pacman -S grub efibootmgr os-prober

📑 命令参数说明:

  • -S 选项后指定要通过 pacman 包管理器安装的包:
    • grub —— 启动引导器
    • efibootmgr —— efibootmgrgrub 脚本用来将启动项写入 NVRAM
    • os-prober —— 为了能够引导 win10,需要安装 os-prober 以检测到它
  1. 安装 GRUB 到 EFI 分区:
Terminal window
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH

📑 命令参数说明:

  • --efi-directory=/boot —— 将 grubx64.efi 安装到之前的指定位置(EFI 分区)
  • --bootloader-id=ARCH —— 取名为 ARCH

grub_step-1

  1. 接下来使用 vim 编辑 /etc/default/grub 文件:
Terminal window
vim /etc/default/grub

进行如下修改:

  • 去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数
  • loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错
  • 加入 nowatchdog 参数,这可以显著提高开关机速度

grub_step-2

  • 为了引导 win10,则还需要添加新的一行 GRUB_DISABLE_OS_PROBER=false
# 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
...
  1. 最后生成 GRUB 所需的配置文件:
Terminal window
grub-mkconfig -o /boot/grub/grub.cfg

grub_step-3

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

os-prober-1

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

  1. 输入以下命令:
Terminal window
exit # 退回安装环境
umount -R /mnt # 卸载新分区
reboot # 重启

finish-install

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

last-step-1

如图即为 GRUB 引导界面。

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

last-step-2

  1. 设置开机自启并立即启动 networkmanager 服务,即可连接网络:
Terminal window
systemctl enable --now NetworkManager # 设置开机自启并立即启动 NetworkManager 服务
ping www.bilibili.com # 测试网络连接

last-step-3

  1. 若为无线连接,则需要在启动 networkmanager 后使用 nmcli 连接网络:
Terminal window
nmcli dev wifi list # 显示附近的 Wi-Fi 网络
nmcli dev wifi connect "Wi-Fi名(SSID)" password "网络密码" # 连接指定的无线网络

也可以使用 nmtui 来配置网络

Terminal window
nmtui
  1. fastfetch 可以将系统信息和发行版 logo 一并打印出来。通过 pacman 安装 fastfetch
Terminal window
pacman -S fastfetch

使用 fastfetch 打印系统信息:

Terminal window
fastfetch

fastfetch

又到了 fastfetch 的时间了吗?

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

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