Arch Linux 安装流程

2023/02/09

Last updated on 2025/01/06

Table of Contents

Arch Linux 的安装流程,主要参考 Arch Linux 官方文档 Installation guide - ArchWiki

1 安装前准备

1.1 下载安装镜像

Arch Linux 清华源,下载安装镜像 archlinux-version-x86_64.iso

下载完成后,可以使用 sha256sum 检查镜像文件的完整性。

1.2 刻录镜像

在 Windows 系统下,可以使用 Rufus、BalenaEtcher、Ventoy 等软件,将安装镜像刻录到 U 盘中。

在 Linux 和 MacOS 系统下,可以使用 dd 命令刻录镜像:

sudo dd if=/path/to/file.iso of=/dev/sdX bs=4M oflag=sync status=progress

2 正式安装

重启电脑,进入 BIOS 界面,设置首选启动项为 U 盘。从 U 盘启动,进入安装环境。

提示:在连接网络并更新系统时钟后,后续的安装步骤也可以使用自动化安装脚本 archinstall 来完成,对照手动安装的步骤进行配置。

2.1 验证启动模式

cat /sys/firmware/efi/fw_platform_size

如果该命令返回 64,则系统以 UEFI 模式启动,可以继续进行以下步骤。

2.2 连接网络

验证网络连接:

ping archlinux.org

如果是有线网络,应该会自动连接。

如果是无线网络,执行 iwctl 进入 iwd 提示符(执行 exit 退出),连接网络:

# 将以下命令中的 <device> 替换为你的网卡设备
# 将以下命令中的 <SSID> 替换为无线网络的 SSID
device list                     # 列出网卡设备
station <device> scan           # 扫描无线网络(无输出)
station <device> get-networks   # 显示扫描结果
station <device> connect <SSID> # 连接无线网络

2.3 更新系统时钟

在安装环境中,建立网络连接后,系统时间将自动同步。 执行以下命令,检查系统时间是否已经同步:

timedatectl

如果系统时间未同步,可以执行以下命令,设置自动同步:

timedatectl set-ntp true

2.4 硬盘分区

以下分别介绍 Ext4 和 Btrfs 两种文件系统的推荐分区方案,选择其一即可。

执行 lsblk 列出所有的硬盘设备。

使用 fdiskcfdisk 进行硬盘分区。 执行 fdisk /dev/<disk>cfdisk /dev/<disk> 进入硬盘分区界面。

2.4.1 Ext4 文件系统

参考分区表如下:

分区 Partition文件系统 File System大小 Size挂载点 Mount Point
/dev/sda1EFI System Partition512 MB/mnt/boot
/dev/sda2Ext480 GB/mnt
/dev/sda3Linux Swap16 GB[SWAP]
/dev/sda4Ext4剩余空间/mnt/home

格式化硬盘分区:

mkfs.fat -F 32 /dev/<efi_system_partition>
mkfs.ext4 /dev/<root_partition>
mkswap /dev/<swap_partition>
mkfs.ext4 /dev/<home_partition>

挂载硬盘分区:

mount /dev/<root_partition> /mnt
mount --mkdir /dev/<efi_system_partition> /mnt/boot
swapon /dev/<swap_partition>
mount --mkdir /dev/<home_partition> /mnt/home

注意:挂载硬盘分区时,必须依照挂载点的层次关系,按顺序挂载。 即首先挂载 Root 分区,然后才能挂载 EFI 和 Home 分区。

2.4.2 Btrfs 文件系统

对于 Btrfs 文件系统,可以采用扁平化布局,即除了 EFI 分区和交换分区外,其他分区都可以变成同一个分区下的子卷。

参考分区表如下:

分区 Partition文件系统 File System大小 Size挂载点 Mount Point
/dev/sda1EFI System Partition512 MB/mnt/boot
/dev/sda2Linux Swap16 GB[SWAP]
/dev/sda3Btrfs剩余空间

对于 /dev/sda3 分区,其子卷的布局如下:

子卷 Subvolume挂载点 Mount Point挂载选项 Mount Options
@/mntnoatime, compress=zstd
@home/mnt/homenoatime, compress=zstd
@var-log/mnt/var/lognoatime, compress=zstd, no CoW
@var-cache/mnt/var/cachenoatime, compress=zstd, no CoW
@var-tmp/mnt/var/tmpnoatime, compress=zstd, no CoW

在完成硬盘分区后,格式化硬盘分区:

mkfs.fat -F 32 /dev/<efi_system_partition>
mkswap /dev/<swap_partition>
mkfs.btrfs /dev/<btrfs_partition>

然后,挂载硬盘分区。首先,挂载 Btrfs 分区:

# 创建子卷
mount /dev/<btrfs_partition> /mnt
btrfs subvolume create /mnt/@{,home,var-log,var-cache,var-tmp}
umount /mnt

# 挂载子卷
mount /dev/<btrfs_partition> /mnt -o subvol=@,noatime,compress=zstd
mount --mkdir /dev/<btrfs_partition> /mnt/home -o subvol=@home,noatime,compress=zstd
mount --mkdir /dev/<btrfs_partition> /mnt/var/log -o subvol=@var-log,noatime,compress=zstd
mount --mkdir /dev/<btrfs_partition> /mnt/var/cache -o subvol=@var-cache,noatime,compress=zstd
mount --mkdir /dev/<btrfs_partition> /mnt/var/tmp -o subvol=@var-tmp,noatime,compress=zstd

# 禁用部分子卷的 CoW 特性
chattr +C /mnt/var/{log,cache,tmp}

然后,挂载 EFI 和交换分区:

mount --mkdir /dev/<efi_system_partition> /mnt/boot
swapon /dev/<swap_partition>

2.5 安装系统基本软件包

首先,更换 pacman 的镜像源。在 /etc/pacman.d/mirrorlist 文件的开头添加:

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

然后,执行以下命令:

# 如果使用 AMD 处理器,将 intel-ucode 替换为 amd-ucode
# 可以将 neovim 替换为其他文本编辑器
# 如果不使用 Btrfs 文件系统,则删除 btrfs-progs
pacstrap -K /mnt base base-devel linux linux-firmware intel-ucode networkmanager neovim btrfs-progs

3 系统初步配置

3.1 生成 Fstab 文件

genfstab -U /mnt >> /mnt/etc/fstab

3.2 Chroot

arch-chroot /mnt

3.3 设置时区

ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc

3.4 本地化设置

/etc/locale.gen 文件中,将 en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-8 取消注释。

然后,执行以下命令:

locale-gen

新建 /etc/locale.conf 文件,并添加内容:

LANG=en_US.UTF-8

3.5 配置网络

新建 /etc/hostname 文件,添加主机名,例如:myhostname

/etc/hosts 文件中,添加以下内容(将 myhostname 替换为自己的主机名):

127.0.0.1 localhost
::1 localhost
127.0.1.1 myhostname.localdomain myhostname

3.6 修改 mkinitcpio 配置

如果使用 Btrfs 文件系统,需要修改 /etc/mkinitcpio.conf 文件,在 MODULES=() 中添加 btrfs

然后,执行命令:

mkinitcpio -P

3.7 安装 GRUB

安装 grubefibootmgr

建议:在进行后续步骤前,执行 lsblk,并检查 EFI System Partition 的挂载点,确保其已被成功挂载。如果没有成功挂载,请检查挂载硬盘分区的顺序。

执行以下命令:

# 注意:在 Chroot 后,参考挂载点下的 <esp_mount_point> 为 /boot,而不是 /mnt/boot
grub-install --target=x86_64-efi --efi-directory=<esp_mount_point> --bootloader-id=GRUB
grub-mkconfig -o <esp_mount_point>/grub/grub.cfg

3.8 设置 root 用户的密码

执行 passwd,并输入要为 root 用户设置的密码。

3.9 重启

exit
umount -R /mnt
reboot

4 重启后简单配置

4.1 连接网络

启动网络服务:

systemctl enable --now NetworkManager.service

如果是无线网络,可以执行 nmclinmtui,进行连接。

4.2 添加普通用户

添加用户名为 username 的普通用户:

useradd -G wheel -m username
passwd username

安装 sudo,并为新添加的用户设置 root 权限。 执行 visudo 命令来编辑 /etc/sudoers 文件,解除以下一行的注释:

%wheel ALL=(ALL:ALL) ALL

执行 exit 退出 root 用户的登录,并登录到 username 用户。

至此,Arch Linux 已经完成安装。