基础系统安装

Arch Linux 是一个轻量、灵活、滚动更新的 Linux 发行版,Arch Linux 仅提供了一个很简洁的安装环境,安装流程尽可能遵循 ArchWiki 安装指南

下载安装镜像

Arch Linux 下载页 下载最新的 Arch Linux 安装镜像。

可在以下国内镜像站下载安装镜像

验证安装镜像

为确保下载的文件没有损坏,需要计算文件的 SHA256 值。

在 Windows 系统中,打开镜像所在文件夹。按住 SHIFT 键的同时右键空白处,点击“在此处打开 PowerShell 窗口”。在打开的 PowerShell 窗口中,输入

1
certutil -hashfile .\archlinux-xxxx.xx.xx-x86_64.iso SHA256

Arch Linux 下载页 中找到 Checksums 部分,对照其中的 SHA256 值如果不同,请重新下载。

启动安装环境

使用 Ventoy 制作安装介质,以 UEFI 模式启动安装镜像,在随后弹出的 GRUB 引导界面中,选择第一项。

1
Arch Linux install medium (x86_64, UEFI)

连接互联网

Arch Linux 镜像只提供一个基本的安装环境,安装过程需要连接互联网,通过有线连接可自动连接互联网。

1
ping bilibili.com

安装映像在启动时已经预先配置好并启用了 systemd-networkd、systemd-resolved、iwd 和 ModemManager。

禁用 reflector 服务

2020 年,Arch Linux 安装镜像中加入了 reflector 服务,它会自己更新 mirrorlist(软件包管理器 pacman 的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。

1
systemctl stop reflector.service

使用SSH登录

为了方便复制粘贴命令,可使用其它电脑通过 SSH 登录安装环境。使用SSH登陆前需要设置 root 密码。

1
passwd

更新系统时钟

在 Live 环境中 systemd-timesyncd 默认启用,也就是说当系统已经创建互联网连接后,系统时间将自动同步,也可以手动进行时间同步。

1
timedatectl set-ntp true

检查服务状态

1
timedatectl status

分区和格式化

创建分区

通过 lsblkfdisk -l 命令,区分要安装 Arch Linux 的磁盘,并显示当前磁盘的分区情况:

1
lsblk

使用parted命令将磁盘转换为 gpt 类型:

1
2
3
4
5
6
7
8
9
10
root@archiso ~ # parted /dev/nvme0n1
GNU Parted 3.6
Using /dev/nvme0n1
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mktable
New disk label type? gpt
Warning: The existing disk label on /dev/nvme0n1 will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? Yes
(parted) quit

使用 cfdisk 进行分区

1
cfdisk /dev/nvme0n1

分区情况

1
2
3
4
Device            Size     Type
/dev/nvme0n1p1 800M EFI System
/dev/nvme0n1p2 20G Linux swap
/dev/nvme0n1p3 217.7G Linux filesystem

格式化 EFI 分区

1
mkfs.fat -F32 /dev/nvme0n1p1

格式化 Swap 分区

1
mkswap /dev/nvme0n1p2

格式化 Btrfs 分区

  1. 将整一个分区格式化为 Btrfs 文件系统。使用如下命令进行格式化:
1
mkfs.btrfs -L archos /dev/nvme0n1p3
  1. 为了创建子卷,我们需要先将 Btrfs 分区挂载到 /mnt 下:
1
mount -t btrfs -o compress=zstd /dev/nvme0n1p3 /mnt

命令参数说明:

  • -t 选项后指定挂载分区文件系统类型
  • -o 选项后添加挂载参数:
  • compress=zstd 开启透明压缩

创建 Btrfs 子卷

  1. 通过以下命令创建两个 Btrfs 子卷,之后将分别挂载到 / 根目录和 /home 用户目录:
1
2
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
  1. 通过以下命令复查子卷情况:
1
btrfs subvolume list -p /mnt
  1. 子卷创建好后,我们需要将 /mnt 卸载掉,以挂载子卷:
1
umount /mnt

挂载分区

  1. 在挂载时,挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:
1
2
3
4
5
6
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p3 /mnt
mkdir /mnt/home
mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p3 /mnt/home
mkdir -p /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
swapon /dev/nvme0n1p2
  1. 使用 df 命令复查挂载情况:
1
df -h
  1. 使用 free 命令复查 Swap 分区挂载情况:
1
free -h

更换软件仓库镜像源

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

1
vim /etc/pacman.d/mirrorlist

放在最上面的是会使用的软件仓库镜像源,如使用中科大镜像源:

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

安装系统

  1. 更新镜像的Keyring
1
pacman -Sy archlinux-keyring
  1. 使用如下命令安装基础包
1
pacstrap -K /mnt base base-devel linux linux-firmware btrfs-progs
  • base : Arch Linux 核心包,必须安装
  • base-devel : 在 AUR 包的安装过程中是必须用到的
  • linux : 内核软件包
  • linux-firmware : 一些驱动相关的软件包
  • btrfs-progs : 使用btrfs文件系统,需要安装
  1. 通过如下命令使用 pacstrap 脚本安装其它必要的功能性软件:
1
pacstrap -K /mnt dhcpcd networkmanager vim

生成 fstab 文件

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

change root

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

1
arch-chroot /mnt

以下操作在新系统环境中进行。

设置主机名与时区

  1. 编辑 /etc/hostname 设置主机名:
1
vim /etc/hostname

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

  1. 接下来编辑 /etc/hosts 设置与其匹配的条目:
1
vim /etc/hosts

加入如下内容:

1
2
3
127.0.0.1   localhost
::1 localhost
127.0.1.1 archlinux.localdomain archlinux
  1. 随后设置时区,在 /etc/localtime 下用 /usr 中合适的时区创建符号链接:
1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

同步时间到硬件时间

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

1
hwclock --systohc

设置 Locale

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

  1. 编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#):
1
vim /etc/locale.gen
  1. 然后使用如下命令生成 locale:
1
locale-gen
  1. 向 /etc/locale.conf 输入内容
1
echo 'LANG=en_US.UTF-8'  > /etc/locale.conf

设置 root 账号密码

1
passwd root

安装微码

1
pacman -S intel-ucode

安装引导程序

  1. 安装相应的包:
1
pacman -S grub efibootmgr
  1. 安装 GRUB 到 EFI 分区:
1
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
  1. 接下来使用 vim 编辑 /etc/default/grub 文件:
1
vim /etc/default/grub

进行如下修改:

  • 去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数
  • 把 loglevel 的数值从 3 改成 5。这样是为了后续如果出现系统错误,方便排错
  • 加入 nowatchdog 参数,这可以显著提高开关机速度
  1. 最后生成 GRUB 所需的配置文件:
1
grub-mkconfig -o /boot/grub/grub.cfg