Blog Archive

Archlinux 安装指南

Archlinux 安装指南

2026年4月30日 6 min read
Linux

获取 Archlinux ISO 镜像

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

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

校验 ISO 镜像

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

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

制作启动盘

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

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

启动 archiso

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

安装

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

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

```sh
passwd
```

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

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

格式化磁盘并挂载分区

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

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

格式化磁盘

如果磁盘支持 Memory cell clearing,请参阅 Solid_state_drive/Memory_cell_clearing 进行安全擦除操作。

或者采用删除所有分区的方式:

wipefs -af /dev/nvme0n1

分区磁盘

使用 parted 工具分区磁盘并对齐到最优sector

parted -a optimal /dev/nvme0n1

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

# 创建 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

??? note “如果在运行 mkpart "EFI system partition" fat32 1MiB 513MiB 时出现问题” 可能会遇到类似以下的警告: text Warning: The resulting partition is not properly aligned for best performance: 2048s % 768s != 0s 这时我们需要手动指定分区的起始位置: sh mkpart "EFI system partition" fat32 768s 513MiB

格式化分区

# 格式化 EFI 系统分区
mkfs.fat -F 32 /dev/nvme0n1p1 

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

创建 subvolume

# 挂载根分区
mount /dev/nvme0n1p2 /mnt

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

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

# 卸载根分区
umount /mnt

挂载分区

启用 BTRFS 的压缩功能

# 挂载根分区
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 文件。(此更改会在安装后保留)

vim /etc/pacman.d/mirrorlist

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

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

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

使用 pacstrap 安装基本系统

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

生成 fstab 文件

# 生成 fstab 文件
genfstab -U /mnt >> /mnt/etc/fstab

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

配置新系统

切换到新系统

arch-chroot /mnt

设置时间

# 设置时区为 Asia/Shanghai
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 同步硬件时钟
hwclock --systohc

设置语言

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

vim /etc/locale.gen

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

en_US.UTF-8 UTF-8

接着生成语言文件:

locale-gen

最后设置 LANG 环境变量:

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

网络配置

设置主机名

echo "archlinux" > /etc/hostname

设置网络端口

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

=== “DHCP”

```ini
[Match]
Name=en*

[Link]
RequiredForOnline=routable

[Network]
DHCP=yes
```

=== “静态 IP”

```ini
[Match]
Name=eno1

[Network]
Address=192.168.1.2/24
Gateway=192.168.1.1
DNS=192.168.1.1
```

接着启用对应的服务:

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

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

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

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

设置密码

??? note “如果需要设置 root 用户的密码” 可以使用以下命令:

```sh
passwd
```

创建新用户

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

# 创建用户并添加到 wheel 组
useradd -mG wheel user

# 设置用户密码
passwd user

配置 sudo

使用 visudo 命令编辑 sudoers 文件:

EDITOR=vim visudo

查找以下行:

# %wheel ALL=(ALL) ALL

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

%wheel ALL=(ALL) ALL

保存并退出。

安装引导加载程序

安装 GRUB

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

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

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

配置 GRUB

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

启用 SSH 服务

systemctl enable sshd.service

卸载磁盘并重新启动

# 退出 chroot 环境
exit

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

# 重新启动系统
reboot

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