安装 Archlinux

这篇文章将演示如何安装 Archlinux。

获取 Archlinux ISO 镜像

可以从 Archlinux 官网 下载最新的 ISO 镜像。这个页面的顶部包含了 BitTorrent 下载链接,需要往下滚动才能使用 HTTP (S) 下载链接。

详细下载步骤

  1. 访问 Archlinux 下载页面
  2. 向下滚动寻找适合您的镜像站,例如 China 列表里的,点击链接。
  3. 在镜像站的页面中,寻找以 archlinux-YYYY.MM.DD-x86_64.iso 命名的文件,点击下载。

校验 ISO 镜像

下载完成后,建议校验 ISO 镜像的完整性。可以使用 sha256sum 命令来计算 SHA-256 校验和,并与 Archlinux 官方提供的校验和 进行对比。

1
sha256sum archlinux-YYYY.MM.DD-x86_64.iso

制作启动盘

使用 Ventoy 制作启动盘是一个简单的选择。Ventoy 支持多种操作系统的 ISO 镜像,可以直接将下载的 Archlinux ISO 镜像复制到 Ventoy 启动盘中。

如果 Ventoy 太花哨,也可以使用 Balena EtcherRufus 或者 dd 命令来制作启动盘。

启动 archiso

将制作好的启动盘插入电脑,重启并进入 One-Time Boot Menu (通常可以通过按 F12F11F10DelEsc 键进入,请查看对应主板的说明书或在线查找),选择 USB 启动。

安装

可以使用 SSH 连接到 Archlinux 安装环境,方便在安装过程中查看文档或进行其他操作。

需要先在 archiso 环境中更改 root 用户的密码:

1
passwd

输入两次更改后的密码(输入时不会显示,并且此密码仅用于当前会话,换句话说,重启后、安装后都会失效,所以可以使用弱密码如123等)。 请不要使用空密码,否则 SSH 连接会失败。

请不要在安装后使用弱密码

格式化磁盘并挂载分区

使用 lsblk 命令查看磁盘信息,找到要安装 Archlinux 的磁盘(对于 SATA 磁盘通常是 /dev/sda,对于 NVMe 磁盘通常是 /dev/nvme0n1)。下文以 /dev/nvme0n1 为例,使用 BTRFS 文件系统。

请确保您选择了正确的磁盘! 格式化磁盘会删除对应的硬盘中所有数据。

格式化磁盘

1
wipefs -af /dev/nvme0n1

如果磁盘支持 Memory cell clearing,请参阅 Solid_state_drive/Memory_cell_clearing#NVMe_drive 进行操作。

分区磁盘

使用 parted 工具分区磁盘:

1
parted /dev/nvme0n1

parted 命令行(以 (parted) 提示符开始)中输入以下命令:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建 GPT 分区表
mklabel gpt

# 创建 EFI 系统分区
mkpart "EFI system partition" fat32 1MiB 513MiB

# 设置第一个分区为 ESP 分区
set 1 esp on

# 创建根分区
mkpart "root partition" btrfs 513MiB 100%

# 检查分区信息
print

# 退出 parted
quit

格式化分区

1
2
3
4
5
# 格式化 EFI 系统分区
mkfs.fat -F 32 /dev/nvme0n1p1

# 格式化根分区
mkfs.btrfs -f /dev/nvme0n1p2

创建 subvolume

1
2
3
4
5
6
7
8
9
10
11
# 挂载根分区
mount /dev/nvme0n1p2 /mnt

# 创建根分区的 subvolume
btrfs subvolume create /mnt/@

# 创建 home 分区的 subvolume
btrfs subvolume create /mnt/@home

# 卸载根分区
umount /mnt

挂载分区

启用 BTRFS 的压缩功能

1
2
3
4
5
6
7
8
9
10
# 挂载根分区
mount -o compress=zstd,subvol=@ /dev/nvme0n1p2 /mnt

# 挂载 home 分区
mkdir -p /mnt/home
mount -o compress=zstd,subvol=@home /dev/nvme0n1p2 /mnt/home

# 挂载 EFI 系统分区
mkdir -p /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi

安装基本系统

更换镜像源

如果网络状况不佳,可以更换镜像源。编辑 /etc/pacman.d/mirrorlist 文件。(此更改会在安装后保留)

1
vim /etc/pacman.d/mirrorlist

之后按下 ggdG 删除所有内容,然后按下 i 进入插入模式,粘贴最近的镜像源,例如 USTC 的镜像源

1
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch

按下 Esc 键退出插入模式,然后输入 :wq 保存并退出。

使用 pacstrap 安装基本系统

1
pacstrap -K /mnt base base-devel linux-lts linux-firmware git btrfs-progs grub efibootmgr grub-btrfs inotify-tools vim openssh man sudo

生成 fstab 文件

1
2
3
4
5
# 生成 fstab 文件
genfstab -U /mnt >> /mnt/etc/fstab

# 检查文件内容
cat /mnt/etc/fstab

配置新系统

切换到新系统

1
arch-chroot /mnt

设置时间

1
2
3
4
5
# 设置时区为 Asia/Shanghai
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 同步硬件时钟
hwclock --systohc

设置语言

编辑 /etc/locale.gen 文件,取消注释所需要的语言行:

1
vim /etc/locale.gen

取消注释以下行(按下 gg 进入文件开头, / 搜索 en_US.UTF-8,按下 Enter 后,使用 X 删除行首的 #,最后 ESC 退出插入模式, :wq 保存并退出):

1
en_US.UTF-8 UTF-8

接着生成语言文件:

1
locale-gen

最后设置 LANG 环境变量:

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

网络配置

设置主机名

1
echo "archlinux" > /etc/hostname

设置网络端口

编辑 /etc/systemd/network/20-wired.network 文件,添加:

1
2
3
4
5
6
7
8
[Match]
Name=en*

[Link]
RequiredForOnline=routable

[Network]
DHCP=yes

接着启用对应的服务:

1
2
systemctl enable systemd-networkd.service
systemctl enable systemd-resolved.service

关于 systemd-networkd 的更多配置(如配置静态 IP 等),请参考 systemd-networkd

如果不想使用 systemd-networkd,可以使用 NetworkManager 或者 dhcpcd 等,他们的区别详见 Network_configuration#Network_managers

如果后续使用时,遇到 127.0.0.1:53 的 DNS 错误,请使用 adguardhome 的 docker 镜像 中提到的方法解决。

设置密码

如果需要设置 root 用户的密码,可以使用以下命令:

1
passwd

创建新用户

创建一个新的用户(例如 user)并设置密码:

1
2
3
4
5
# 创建用户并添加到 wheel 组
useradd -mG wheel user

# 设置用户密码
passwd user

配置 sudo

使用 visudo 命令编辑 sudoers 文件:

1
EDITOR=vim visudo

查找以下行:

1
# %wheel ALL=(ALL) ALL

取消注释(删除行首的 #),请保留 % 符号,这样匹配的是 wheel 组的用户而不是wheel这个用户:

1
%wheel ALL=(ALL) ALL

保存并退出。

安装引导加载程序

安装 GRUB

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

如果您的电脑使用非标准 UEFI(例如 Dell Wyse 3040),请添加 --removable 选项:

1
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --removable

配置 GRUB

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

启用 SSH 服务

1
systemctl enable sshd.service

卸载磁盘并重新启动

1
2
3
4
5
6
7
8
# 退出 chroot 环境
exit

# 卸载所有挂载的分区
umount -R /mnt

# 重新启动系统
reboot

之后就可以使用新安装的 Archlinux 系统了。