2022 Arch Linux UEFI 安装教程

安装前的准备

网络环境

在安装开始之前,请确保你现在的环境下有网络(WIFI 或者网线均可)。

安装镜像

镜像可在开源镜像站或者 Arch Linux 官方下载页面进行下载。

名称下载链接
Arch Linux 官方下载页面https://archlinux.org/download/
兰州大学开源镜像站https://mirror.lzu.edu.cn/archlinux/iso/
华为开源镜像站https://repo.huaweicloud.com/archlinux/iso/
清华大学开源软件镜像站https://mirrors.tuna.tsinghua.edu.cn/archlinux/iso/
中国科学技术大学开源镜像站https://mirrors.ustc.edu.cn/archlinux/iso/

下载好的文件应该是这样的:archlinux-20XX.XX.XX-x86_64.iso.

其中 20XX.XX.XX 指的是年/月/日,请尽量下载最新的版本。

U 盘刻录

请准备一个 2G 以上的 U 盘,并且备份好 U 盘数据。

Windows

Windows 下推荐使用以下几款软件进行 U 盘刻录。

使用方法也是非常简单,打开软件选择需刻录的 U 盘,在选择待刻录的 ISO 文件,点击开始即可。

Linux

Linux 下同样可以使用 VentoyBalenaEtcher

Ventoy Linux 安装教程

也可以直接用 DD 命令进行刻录,具体可参阅 DD 命令

1
sudo dd bs=10M if=/Downloads/archlinux.iso of=/dev/sdx status=progress oflag=sync

命令参数说明:

  • bs=10M 指定文件输入输出块大小
  • if=x.iso 指定刻录镜像
  • of=/dev/sdx 你的 U 盘设备,可以通过 df -h 查看
  • status=progress 输出刻录过程信息
  • oflag=sync 控制写入数据时的行为特征

注意 of 的参数为 sdx,不是 sdx1sdx2

其他操作

如果你的电脑带有 Bitlocker 加密的话,需先获取 Bitlocker 恢复密钥,或者先解密后在进行安装。

部分电脑需要对 BIOS 进行设置,后才可正常安装 Arch Linux

  • 关闭电脑安全启动
  • 调整启动方式为 UEFI
  • 调整硬盘启动顺序

开始 Arch Linux 安装

禁用 Reflector 服务

官方在 Arch Linux 安装镜像中加入了 Reflector 服务,它会自动更新 Mirrorlist(包管理器软件源)在国情下,它会误删有用的源。所以在这里决定将其禁用。

通过该命令将 Reflector 服务禁用:

1
systemctl stop reflector.service

查看 Reflector 服务是否被禁用(查看状态下按 Q 退出):

1
systemctl status reflector.service

确定是否为 UEFI 模式

1
ls /sys/firmware/efi/efivars

如果上面的命令输出了一堆东西(EFI 变量),则说明已在 UEFI 模式。 如果提示目录不存在,那么就是 BIOS 模式。 UEFI 模式相对于 BIOS 模式在安装过程中有些许区别。 本文主要专注于 UEFI 模式下的安装。

连接网络

由于 Arch Linux 的安装需要从网络下载文件,所以安装过程中必须依赖网络。

无线连接

因为 NetworkManager 使用起来较为复杂,所以使用了 iwctl 进行连接:

1
2
3
4
5
6
iwctl                                  # 进入交互式命令行
device list                            # 列出无线网卡设备名
station wlan0 scan                     # 扫描
station wlan0 get-networks             # 列出所有 WIFI 网络
station wlan0 connect wifi-name        # 连接
exit                                   # 连接成功后退出

因部分网卡不兼容,所以若出现无线网卡无法显示的情况,请考虑使用有线连接安装。

有线连接

正常情况下只要插上一条路由器分出的网线(DHCP)到你的电脑上,等待几秒后便可正常上网了。

1
dhcpcd &

如还是不能上网,请尝试输入以上命令重试。

测试网络连接状态

在这里可以通过 Ping 测试网络连通性,如:

1
2
3
ping baidu.com
ping bilibili.com
ping google.com

Windows 不同的是,Linux 需要按下 Ctrl + C 手动退出 Ping 命令。

更新系统时间

使用 timedatectl 命令同步系统时间,已确保系统时间的准确性:

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

更换镜像源

将官方镜像源更换为国内镜像源来加快下载速度。

1
vim /etc/pacman.d/mirrorlist

使用上面命令后就进入到 vim 文本编辑器里面,默认在 vim 的命令模式下。

在命令模式下,可用一些快捷指令来对文本进行操作,如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
:w                 # 保存
:q                 # 退出
:wq                # 保存退出
:q!                # 不保存,强制退出
dd                 # 删除一行
2dd                # 删除两行
gg                 # 回到文本第一行
G                  # 转到文本最后一行(按 Shift + G)
/xxx               # 在文中搜索 xxx 内容。回车 Enter 搜索,按 n 键转到下一个
?xxx               # 反向搜索
i                  # 编辑模式

命令模式下按 i 进入编辑模式,将仓库镜像源放到最上面,推荐的镜像源如下:

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

输入完成后按 Esc 键,即刻从编辑模式退出到命令模式。此时输入 :wq 即可保存并退出 vim

分区和格式化

分区

在这里我使用的是 Btrfs 文件系统,所以根目录(/)和用户主目录(/home)实际在一个分区上,只是在不同的子卷上而已。

1
2
lsblk   # 显示当前分区情况
df -h   # -h 选项会输出 MB 单位显示

通过以上命令,判断出你要安装 Arch Linux 的磁盘,并记录下来。接下来使用 cfdisk 命令对磁盘分区。

1
cfdisk /dev/sdx    # 安装 archlinux 的磁盘分区

进入 cfdisk 分区工具后,可通过方向键 移动,通过 来对当前选中内容进行操作。

分区大小备注类型
EFI 分区300MB启动分区EFI System
SWAP 分区>= 电脑运行内存的 60%配置休眠Linux swap
根分区其余全部空间Btrfs 文件系统Linux filesystem

首先创建 EFI 分区,先通过方向键 选中 Free space 再通过 选中 [New] 按下回车,输入分区大小 300MB 再次按下回车,创建完毕。

创建完后默认分区类型是 Linux filesystem,所以需将类型修改到与上表一致。已上面创建的 EFI 分区为例,先选中 EFI 分区,然后选中 [Type] 回车,接着找到对应类型,如这里是 EFI System,再次按下回车,修改完毕。

分区图

最后记得选中 [Write] 并按下回车,输入 yes 保存修改噢~ 选中 [Quit] 回车退出。

格式化并创建 Btrfs 分区

首先格式化 EFI 分区,请按照实际情况修改命令:

1
mkfs.vfat -F 32 /dev/sda1

其中 -F 参数是用来指定 FAT 的类型,可选的值有 12 位、16 位以及 32 位。 当未指定时,mkfs.fat 会自动选择其中最合适的。

接着使用 mkswap 命令创建一个交换分区:

1
mkswap /dev/sda2

最后在使用 mkfs.btrfs 命令创建一个 Btrfs 文件系统:

1
mkfs.btrfs -L Arch /dev/sda3

其中 -L 选项为指定分区的 LABLE(标签),这里以 Arch 为例。

创建 Btrfs 子卷

为了创建子卷,需要先将上面的 Btrfs 分区挂载到 /mnt 下:

1
mount -t btrfs -o compress=zstd /dev/sda3 /mnt

命令参数说明:

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

接着创建 Btrfs 目录子卷:

1
2
btrfs subvolume create /mnt/@       # 创建 /     目录子卷
btrfs subvolume create /mnt/@home   # 创建 /home 目录子卷

完成后可以使用以下命令检查:

1
btrfs subvolume list -p /mnt

如果显示两条尾部分别是:path @path @home 即为正常。

最后将 /mnt 卸载掉:

1
umount /mnt

挂载 Btrfs 子卷

注意,挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# 挂载 / 目录
mount -t btrfs -o subvol=/@,compress=zstd /dev/sda3 /mnt

# 创建&挂载 /home 目录
mkdir /mnt/home
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sda3 /mnt/home

# 创建&挂载 /boot/efi 目录
mkdir -p /mnt/boot/efi
mount /dev/sda1 /mnt/boot/efi

 # 开启交换分区
swapon /dev/sda2

检查挂载状态

完成后可以使用以下命令查看挂载状态:

1
2
df -h     # 查看挂载情况
free -h   # 查看 Swap 分区挂载情况

其中 df -h 应该会显示如下内容:

1
2
3
4
Filesystem Mounted on
/dev/sda3  /
/dev/sda3  /home
/dev/sda1  /boot/efi

free -h 应该会显示如下内容:

1
2
3
      total  used  free
Mem:  1.9Gi 348Mi 921Mi
Swap: 2.0Gi  81Mi 1.9Gi

安装系统

接着使用 pacstrap 脚本安装 Arch Linux

1
pacstrap /mnt base base-devel linux linux-firmware

安装其它必要的功能性软件:

1
pacstrap /mnt dhcpcd vim sudo iwd

生成 Fstab 文件

fstab 用来定义磁盘分区,使用 genfstab 会自动根据当前挂载情况生成 fstab 文件:

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

可以通过以下命令检查一下有没有问题:

1
cat /mnt/etc/fstab

配置新系统

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

1
arch-chroot /mnt

这个时候原来安装盘的 /mnt 目录就变成了新系统的 / 目录。

同时,命令行的提示符颜色和样式也发生了改变。

设置主机名与时区

首先先设置下主机名称:

1
vim /etc/hostname

在里面设置你想为这台机器取的名称,不推荐使用中文。比如叫 computer

或者也可以使用以下命令快捷输入:

1
echo "computer" > /etc/hostname

接下来还要配置下 /etc/hosts

1
vim /etc/hosts

在里面输入如下内容,注意这里的 [name] 要和你上面的主机名称一样:

1
2
3
4
5
6
7
8
9
# 模板:
127.0.0.1   localhost
::1         localhost
127.0.0.1   [name].localdomain	[name]

# 例子:
127.0.0.1   localhost
::1         localhost
127.0.0.1   computer.localdomain	computer

配置好 hosts 后,在配置时区,在 /usr/share/zoneinfo/ 里找到合适的时区并创建链接到 /etc/localtime

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

这里我直接使用上海作为时区。或者也可以使用以下命令来查找到你的时区:

1
ls /usr/share/zoneinfo/

最后使用以下命令将系统时间同步到硬件时间就完成啦~

1
hwclock --systohc

设置 Locale

1
vim /etc/locale.gen

去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号 #,在这里可以使用 /xxx 进行搜索快速找到位置,最后使用 :wq 保存。

1
locale-gen

以上命令生成 Locale

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

以上命令设置默认 Locale 配置。

设置 root 密码

1
passwd root

按照提示输入两次密码即可。

安装微码

1
2
pacman -S amd-ucode    # AMD
pacman -S intel-ucode  # Intel

安装对应芯片制造商的微码。

安装引导程序

1
pacman -S grub efibootmgr

安装说明:

  • grub 启动引导器
  • efibootmgr 将启动项写入 NVRAM

安装 GRUBEFI 分区:

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

命令参数说明:

  • --efi-directory=/boot/efigrubx64.efi 安装 EFI 分区
  • --bootloader-id=ARCH 取名为 ARCH

使用 vim 编辑 /etc/default/grub 文件:

1
vim /etc/default/grub

进行如下修改:

  • 去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中最后的 quiet 参数
  • 加入 nowatchdog 参数,这可以显著提高开关机速度

生成 GRUB 所需的配置文件:

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

检查 GRUB 配置文件:

1
cat /boot/grub/grub.cfg

安装完成

1
2
3
exit             # 退回安装环境
umount -R /mnt   # 卸载新分区
reboot           # 重启

恭喜,到这里你已经完全安装好了属于你的 Arch Linux~