200字
【安装解说】用图文流的方式逐步教你安装Arch Linux
2025-12-17
2025-12-17

前记

"I use Arch btw"

每当你在互联网上看到这句话时,你就知道又有一个 Arch 用户要 拿自己穿长筒袜的图片来传教了 (bushi)。

如果你不知道什么是 Arch Linux请停止阅读此文因为你很可能更适合继续使用 Windows 而非 Arch Linux

而对于许多具有一定计算机操作能力而愿意装个 Arch 尝尝鲜的电脑用户来说,他们往往会被 Arch 安装界面劝退。这也确实,毕竟就算官方安装教程摆在那里,大部分人还是会对纯黑色的命令行界面感到非常陌生而无所适从,而且很容易一不小心就漏掉几步,前功尽弃。

所以,这次让我们用一个安装实战的图文流解说来一步步啃掉这些硬骨头,最终得到一个能用的 Arch 系统,进而三生万物,不断扩展定制可能。

注意

  • 本解说基于 UEFI 模式下对一台挂载 480G 硬盘、有线网络连接、AMD CPU 的虚拟机全新安装
  • 本解说会大量引用 Arch Linux 中文维基的内容,但我不保证这篇文章能随中文维基更新同步更新。如果两者间有冲突,请以 Arch Linux 中文维基的内容为准。
  • 请在继续阅读前先阅读一遍官方中文维基安装指南,这样你才能至少部分读懂下文到底在讲什么。
  • 不建议初学者用 archinstall 走捷径。[^1]

安装准备

  1. 前往官方下载页面获取 ISO 镜像。
  2. 准备一个 U 盘,然后按官方教程弄一个安装介质。

以使用 rufus 为例:

  1. 插入 U 盘
  2. 在以下界面点击选择按钮,选择你下载好的镜像,然后其他设置按照下图就行,最后点击开始

rufus.png

然后等完成之后,安装介质就准备好了。

把 U 盘插到你要进行安装的电脑上,然后进 BIOS 更改开机选项,如果正确的话你应该能看到下图:

VirtualBox_Arch test_16_12_2025_15_19_28.png

不要动,或者以第一个选项启动,然后安装就正式开始了。

安装过程

如果一切正常,你应该会看到这个界面:

VirtualBox_Arch test_16_12_2025_15_21_15.png

正常而言,如果用的是有线连接,那么你已经连上互联网了。

连接到互联网

要在 Live 环境中配置网络连接,请遵循以下步骤:

  1. 确保系统已经列出并启用了网络接口,用 ip-link(8) 检查:
    # ip link
    
  2. 对于无线局域网(Wi-Fi)和无线广域网(WWAN),请确保网卡未被 rfkill 禁用。
  3. 连接到网络:
    • 有线以太网——连接网线。
    • WiFi——使用 iwctl 认证无线网络。
    • 移动宽带调制解调器(移动网卡) - 使用 mmcli 连接到移动网络。
  4. 配置网络连接:
  5. ping 检查网络连接:
    # ping ping.archlinux.org
    

** 注意:** 默认情况下,安装映像在启动时已经预先配置好并启用了 systemd-networkdsystemd-resolvediwdModemManager。但在已经安装完成了的系统之中并非如此。

然后更新下系统时间,输入:

timedatectl

之后再用

fdisk -l	#此处为小写字母l

来查看硬盘设备(见下图)

VirtualBox_Arch test_16_12_2025_15_25_45.png

可以看到,我们的硬盘应该是 /dev/sda

结果中以 romloop 或者 airootfs 结尾的设备可以被忽略。结果中以 rpmbboot0 或者 boot1 结尾的 mmcblk* 设备也可以被忽略。

接下来我们就该给硬盘分区了。

对于一个选定的设备,以下分区是必需的:

请使用分区工具(fdiskpartedcfdisk 等等)修改分区表。例如:

# cfdisk /dev/要被分区的磁盘

注意:

  • 花时间规划一个长期的分区方案,以避免将来需要有风险和复杂的转换或重新分区。

  • 如果您想为 LVM系统加密RAID 创建任何堆叠块设备,请立即执行。

  • 如果要从中启动的磁盘已经有一个 EFI 分区,请不要创建另一个 EFI 分区,而是使用现有分区。

  • Swap 交换空间可以在 Swap# 交换文件 上为支持它的文件系统设置。或者,你也可以在安装完毕后配置基于 zram 的 swap 以避免使用基于磁盘的 swap。

    ………

另请参阅布局示例

在这个示例中,我们应该给硬盘创造以下分区:

  • 1GB EFI 分区

  • 4GB SWAP

  • 475GB / 挂载点

    输入

    cfdisk /dev/sda
    

    你应该看到这个界面:

VirtualBox_Arch test_16_12_2025_15_26_14.png

选择 gpt 选项,按 Enter,你应该会看到这个界面:

VirtualBox_Arch test_16_12_2025_15_26_21.png一般你已经在 New 选项下了,那就按 Enter ,然后在提示行里输入 1G ,再次按 Enter ,你就会看到分出了一个 /dev/sda1 分区。使用方向键切换磁盘空间和选项,把剩余的区都分了,你应该会看到下图的画面,使用方向键移动到 Write 选项,按 Enter 。

VirtualBox_Arch test_16_12_2025_15_26_56.png在接下来的提示里输入 yes ,按 Enter :

VirtualBox_Arch test_16_12_2025_15_27_04.png

然后区就分好了,移动到 Quit 选项按 Enter 退出到命令行。

VirtualBox_Arch test_16_12_2025_15_27_16.png

接下来应该格式化分区

格式化分区

创建分区后,必须使用合适的文件系统对每个新创建的分区进行格式化。详情请参阅文件系统 #创建文件系统

** 注意:** 对于堆叠式块设备(stacked block devices)请使用恰当的块设备路径替换下文中的 /dev/<i>*_partition</i> 处。

例如,要在根分区 /dev/<i>root_partition</i> 上创建一个 Ext4 文件系统,请运行:

# mkfs.ext4 /dev/root_partition(根分区)

如果你要创建一个 EFI 系统分区,使用 mkfs.fat(8) 将其格式化为 Fat32。

** 警告:** 只有在分区步骤中创建 EFI 系统分区时才需要格式化。如果这个磁盘上已经有一个 EFI 系统分区了,将它重新格式化会破坏其他已安装操作系统的引导加载程序。

# mkfs.fat -F 32 /dev/efi_system_partition(EFI 系统分区)

如果创建了交换分区,请使用 mkswap(8) 将其初始化:

# mkswap /dev/swap_partition(交换空间分区)

我们输入:

mkfs.ext4 /dev/sda3
mkfs.fat -F 32 /dev/sda1
mkswap /dev/sda2

系统会格式化分区,用于后续操作(见下图)。

VirtualBox_Arch test_16_12_2025_15_29_24.png

然后我们应该挂载分区

挂载分区

将根磁盘卷挂载/mnt,例如:

# mount /dev/root_partition(根分区) /mnt

然后使用 mkdir(1)/mnt 下创建任何剩余的挂载点(例如,为 /boot 而创建 /mnt/boot),并按相应的层级顺序挂载相应的磁盘卷。

** 提示:** 使用 --mkdir 选项运行 mount(8) 来创建指定的挂载点。或者,先使用 mkdir(1) 创建挂载点再挂载。

** 注意:** 挂载分区一定要遵循顺序,先挂载根(root)分区(到 /mnt),再挂载引导(boot)分区(到 /mnt/boot/mnt/efi,如果单独分出来了的话),最后再挂载其他分区。否则您可能遇到安装完成后无法启动系统的问题。参见 en:Talk:Installation guide#Clarify root mount

对于 UEFI 系统,挂载 EFI 系统分区:

# mount --mkdir /dev/efi_system_partition /mnt/boot

如果创建了交换空间卷,请使用 swapon(8) 启用它:

# swapon /dev/swap_partition(交换空间分区)

稍后 genfstab 将自动检测挂载的文件系统和交换空间。

我们输入:

mount /dev/sda3 /mnt
mount --mkdir /dev/sda1 /mnt/boot
swapon /dev/swap_partition(交换空间分区)

系统会挂载分区,用于核心安装(见下图)。

VirtualBox_Arch test_16_12_2025_15_30_41.png

关键的一步:安装软件包

开始安装系统

选择镜像站

需安装的软件包会从文件 /etc/pacman.d/mirrorlist 中所列的镜像站下载。下载软件包时,列表中越靠前的镜像站会拥有越高的优先级。

在从 LiveCD 启动的系统中,所有未注释的 HTTPS 镜像站都会启用,位于顶端的全球镜像站对大多用户来说应当足够快,但仍请您检查 /etc/pacman.d/mirrorlist 文件,看看列出的镜像站的顺序是否合适。如果不合适,可以手动编辑文件,将离您所处地理位置最近的镜像移到文件的头部,同时也应该考虑一些其他的评判标准。此外,您可使用 reflector 根据几种不同的评判标准来创建新的 mirrorlist 文件。

如果 /etc/pacman.d/mirrorlist 文件中没有合适的镜像站,可以手动从 archlinux 官方网站的镜像站列表下载一份。这需要您所在的网络能够正常访问 Arch Linux 官方网站。例如,使用 curl(1) 下载位于中国大陆的 HTTPS 镜像站:

# curl -L 'https://archlinux.org/mirrorlist/?country=CN&protocol=https' -o /etc/pacman.d/mirrorlist

或者,也可以通过安装 pacman-mirrorlist 来获取按国家分列的原始镜像列表。这么做的缺点是,pacman 仍然会使用当前配置中的镜像站来下载软件包数据库和 pacman-mirrorlist,这可能会很慢。在挑选了能用的镜像之后,可以执行

# pacman -Sy pacman-mirrorlist

再将 /etc/pacman.d/mirrorlist.pacnew 复制到 /etc/pacman.d/mirrorlist 并进行编辑。

或者,如果您记得想要使用的镜像站的 URL,那么可以手动编辑 /etc/pacman.d/mirrorlist 文件并手动输入 URL。

这个文件接下来还会被 pacstrap 拷贝到新系统里,所以请您确保设置正确。

安装必需的软件包

/etc/pacman.d/mirrorlist 之外的配置不会从 Live 环境传递到安装的系统中。因此,若您在 Live 环境的 /etc/pacman.conf 里启用了非官方用户仓库(如 archlinuxcn 仓库),请在新安装的系统手动启用之。base 是唯一的必需软件包,其不包含来自 Live 系统的所有工具,因此需要安装其他的软件包。

请着重关注并按需选择下述软件包:

文件 pkglist.x86_64.txt 中包含 Live 系统安装的软件包列表。

要安装您选择的其他软件包或软件包组,请将它们的名字追加到下面的 pacstrap(8) 命令后(以空格分隔),或者也可以在 Chroot 进入新系统后使用 pacman 手动安装

例如,一个包含 Linux 内核和常见硬件固件的基本安装:

# pacstrap -K /mnt base linux linux-firmware

** 注意:** 有时,由于安装映像中的软件包版本过旧,会导致在运行 pacstrap 的时候无法正常安装软件包(提示为文件签名损坏)。 请参阅 Pacman/ 软件包签名 #手动更新密钥环 中提到的解决方案。 如果您启用了中文社区仓库或其他非官方用户仓库,也不要忘了一同更新其密钥环。

提示:

  • 您可将 linux 软件包替换为内核页面中介绍的其他内核软件包,而在容器中安装时可将其忽略。
  • 在虚拟机或容器中安装时可以不需要固件包。
  • 使用 pacstrap 安装的软件包只需保证系统能够启动即可,其他软件包可以之后再行安装或替换。
  • 参见 Pacman 以增强您的 pacman 使用体验。

我们输入(一定别打错了!):

curl -L 'https://archlinux.org/mirrorlist/?country=CN&protocol=https' -o /etc/pacman.d/mirrorlist
nano /etc/pacman.d/mirrorlist

VirtualBox_Arch test_16_12_2025_15_32_46.png

然后按 Enter ,会进入如下界面:

VirtualBox_Arch test_16_12_2025_15_33_24.png

解释:按方向键控制光标随便到下面哪个 “Server” 字段上,按退格键把一个 Server 前的 # 删掉,然后按下 Ctrl + S 保存,再按下 Ctrl + X 退出。

然后我们就可以下载软件包了。

假设这场安装是用 AMD CPU 和有线网络连接的,那我们就输入:

pacstrap -K /mnt base linux linux-firmware amd-ucode nano networkmanager

当然,你也可以随意定制这条指令来安装你要安装的软件包。

VirtualBox_Arch test_16_12_2025_15_38_18.png

然后按 Enter 。

你会看到命令行输出一大堆,过一段时间后又可以输入了(见下图)。

VirtualBox_Arch test_16_12_2025_15_49_27.png

然后我们就得配置系统了。

配置系统

生成 fstab 文件

生成 fstab 文件以使需要的文件系统(如启动目录 /boot)在启动时被自动挂载,用 -U-L 选项分别设置 UUID 或卷标:

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

强烈建议在执行完以上命令后,检查一下生成的 /mnt/etc/fstab 文件是否正确。如果有问题,最好在现在手动修改。对于熟练者,可以自行编辑 /mnt/etc/fstab 文件。

可以手动修改 /mnt/etc/fstab 添加挂载选项(参见 mount(8) § FILESYSTEM-INDEPENDENT_MOUNT_OPTIONSext4(5) § MOUNT_OPTIONS)。例如,给固态硬盘ext4 文件系统添加 discard 选项以启用 TRIM

** 警告:** 在启用 TRIM 功能前,请确保 SSD 支持 TRIM,否则可能导致数据丢失!

chroot 到新安装的系统

接下来的步骤需要像启动到新安装的系统一样直接与其环境、工具和配置进行交互,请 chroot 到新安装的系统:

# arch-chroot /mnt

** 提示:** 此处使用的是arch-chroot而不是直接使用chroot,注意不要输错了。

设置时间和时区

为顺应人类习惯(如显示正确的当地时间及处理夏令时),请设置时区

# ln -sf /usr/share/zoneinfo/地区名/城市名 /etc/localtime

** 提示:** 例如,在中国大陆需要将时区设置为北京时间,那么请运行 # ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime。时区名称是上海而非北京,是因为上海是该时区内人口最多的城市

然后运行 hwclock(8) 以生成 /etc/adjtime

# hwclock --systohc

这个命令假定已设置硬件时间为 UTC 时间。详细信息请查看系统时间 #时间标准

为了防止时钟漂移并确保时间准确,请手动启用 NTP(网络时间协议,Network Time Protocol)客户端(例如 systemd-timesyncd)设置时间同步

区域和本地化设置

程序和库如果需要本地化文本,都依赖区域设置,后者明确规定了地域、货币、时区日期的格式、字符排列方式和其他本地化标准。

需要设置这两个文件:locale.genlocale.conf

编辑 /etc/locale.gen,然后取消掉 en_US.UTF-8 UTF-8 和其他需要的 UTF-8 区域设置前的注释(#)。

接着执行 locale-gen 以生成 locale 信息:

# locale-gen

然后创建 locale.conf(5) 文件,并编辑设定 LANG 变量,比如:

/etc/locale.conf
LANG=en_US.UTF-8

另外对于中文用户:

提示:

  • 用户可以设置自己的 locale,详情请参阅 在用户会话中覆盖系统区域设置设置当前区域
  • 将系统 locale 设置为 en_US.UTF-8 ,系统的日志就会用英文显示,这样更容易判断和处理问题;
    • 也可以设置为 en_GB.UTF-8[英语(英国)]或 en_SG.UTF-8[英语(新加坡)],附带以下特点:
      • 进入桌面环境后以 24 小时制显示时间;
      • LibreOffice 等办公软件的纸张尺寸会默认为 A4 而非 Letter(US)
      • 可尽量避免不必要且可能造成处理麻烦的英制单位。
    • 设置的 LANG 变量需与 locale 设置一致,否则会出现以下错误:

Cannot set LC_CTYPE to default locale: No such file or directory

** 警告:** 并不推荐在此设置任何中文 locale,这可能会导致 tty 上中文显示为方块(因为 TTY 下没有 CJK 字体)。如果您不经常使用 tty ,或是稍后需要安装桌面环境,则在不使用 tty 后可以设置为中文的 locale 。为了使 TTY 显示中文,也可以使用打了补丁的内核,如 linux-lilyCNRepo

如果需要修改#控制台键盘布局和字体,可编辑 vconsole.conf(5) 使其长期生效,以德语键盘(qwertz)为例:

/etc/vconsole.conf
KEYMAP=de-latin1

** 注意:** 如果键盘为标准美式键盘(中国最常见的键盘布局),请勿照抄如上设置。

网络配置

为您的系统设置一个固定且易于辨识的名称(在联网环境中尤其有用),请创建 hostname 文件:

/etc/hostname
主机名

** 提示:** 请参阅 RFC 1178 以获取一些关于为计算机取名的建议。如 hostname(7) 所述,其必须包含 1-63 个字符,仅使用小写的 a-z0-9 以及 -,但不得以 - 开头。

请接着完成新安装的环境的网络配置,配置过程中可能需要安装合适的网络管理软件。

** 警告:** 请按上述网络配置指引正确配置好网络后再重新启动,否则系统重新启动后可能无法连接网络(不过可以用 LiveCD 重新进入 arch-chroot 进行配置)。例如在虚拟机软件 VirtualBox 安装并使用桥接模式时就需要配置 DHCP 。

关于 initramfs

通常不需要自己创建新的 initramfs,因为在执行 pacstrap 时已经安装 linux,这时已经运行过 mkinitcpio 了。

如果是 LVM系统加密RAID 等分区配置,请修改 mkinitcpio.conf 并用以下命令重新创建一个 Initramfs:

# mkinitcpio -P

设置 root 密码

使用以下命令为 root 用户设置一个安全的密码以便进行管理操作:

# passwd

** 提示:** 建议为 root 用户选择一个强密码保护其安全

安装引导程序

需要安装 Linux 引导加载程序,才能在安装后启动系统,可以使用的的引导程序已在引导加载程序中列出,请选择一个安装并参阅其 wiki 页面以配置它,GRUB 是一个比较常见且通用的选择。

** 警告:** 这是安装的最后一步也是关键的一步,请点击上述链接并按指引正确安装好引导加载程序后再重新启动。否则计算机重新启动后将无法正常进入 Arch Linux 系统。

别怕,看着很多,其实一点也不少(误),但只要我们细心应对,很快就好。

输入:

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

VirtualBox_Arch test_16_12_2025_15_50_06.png

接下来输入:

arch-chroot /mnt

按下 Enter ,然后输入:

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

然后,再输入:

nano /etc/locale.conf

VirtualBox_Arch test_16_12_2025_15_51_47.png

然后输入:

VirtualBox_Arch test_16_12_2025_15_52_08.png

保存退出,然后输入:

nano /etc/locale.conf

VirtualBox_Arch test_16_12_2025_15_52_35.png

再在接下来的界面里输入一个符合规定的名称(a-z,千万别有大写或者 "_"),保存退出。

然后输入

passwd

配置超管密码。

VirtualBox_Arch test_16_12_2025_15_53_16.png

然后千万,一定要安装引导程序!!!!!

以安装 GRUB 为例:

安装

注意:

  • 不同硬件厂商的 UEFI 实现方式不一样,下面描述的步骤应该可以在大部分 UEFI 系统上面正常应用。对于用了下面的方法却遇到问题的用户,请将在特定的硬件上所遇到的问题的细节,以及可能的解决办法分享出来。这些案例可以添加到页面 GRUB/EFI examples 上面。
  • 本节假设您正在 x64(64 位)UEFI 系统上安装 GRUB。对于 IA32 (32 位) UEFI 系统(不要和 32 位 CPU 相混淆), 将 x86_64-efi 替换成 i386-efi。根据 UEFI# 检查系统位数中的说明来确定你的 UEFI 系统位数。

** 警告:** 自 grub 2:2.06.r566.g857af0e17-1 起,无法从 IA32 UEFI(i386-efi) 系统启动。参见 FS#79098

首先安装软件包 grubefibootmgr。其中“GRUB”是启动引导器,“efibootmgr”被 GRUB 脚本用来将启动项写入 NVRAM。

然后按照下列步骤将 GRUB 安装到你的硬盘上:

  1. 挂载 EFI 系统分区。需要注意的是在本节的内容里,把 <i>esp</i> 替换成 ESP 分区挂载点;
  2. 选择一个 bootloader-id,在本例被称为 GRUB。这将在 <i>esp</i>/EFI/ 中创建一个与标识同名的目录来储存 EFI 二进制文件,而且这个名字还会用于在 UEFI 启动菜单中区分 GRUB 启动项;
  3. 执行下面的命令来将 GRUB EFI 应用 grubx64.efi 安装到 <i>esp</i>/EFI/GRUB/,并将其模块安装到 /boot/grub/x86_64-efi/

注意:

  • 确保你安装 GRUB 软件包和运行命令的系统是你想用 GRUB 引导的系统。也就是说如果你是通过安装介质引导的,你需要在 chroot 之后再运行 grub-install。如果因为某些原因不得不在安装的系统之外运行 grub-install,在后面加上 --boot-directory= 选项来指定挂载 /boot 目录的路径,例如 --boot-directory=/mnt/boot
  • 某些主板无法处理包含空格的 bootloader-id
# grub-install --target=x86_64-efi --efi-directory=esp --bootloader-id=GRUB

上述安装完成后, GRUB 的主目录将位于 /boot/grub/。注意上述例子中,grub-install 还将在固件启动管理器中创建一个条目,名叫 GRUB。如果你的启动项已满,这个命令会执行失败。你需要使用 efibootmgr 来删除不必要的条目。

在配置完成后,记得#生成主配置文件

** 提示:** 如果你使用了 --removable 选项,那 GRUB 将被安装到 <i>esp</i>/EFI/BOOT/BOOTX64.EFI (当使用 i386-efi 时是 <i>esp</i>/EFI/BOOT/BOOTIA32.EFI ),此时即使 EFI 变量被重设或者你把这个驱动器接到其他电脑上,你仍可从这个驱动器上启动。通常来说,你只要像操作 BIOS 设备一样在启动时选择这个驱动器就可以了。如果设备是同时安装了 Windows 的多引导启动,注意 Windows 通常会在这里安装一个 EFI 可执行程序,该程序的目的是仅重建 Windows 的 UEFI 启动项。如果你想在 Mac 上安装 GRUB,那你必须要使用该选项。某些台式机主板只会在此位置寻找 EFI 可执行文件,因此该选项是必需的,尤其是微星(MSI)主板。 如果你更新了 UEFI,启动项可能会在更新后丢失。因此可以创建一个“removable”启动项作为后备。

注意:

  • --efi-directory--bootloader-id 是 GRUB UEFI 特有的。--efi-directory 替代了已经废弃的 --root-directory
  • 您可能注意到在 grub-install 命令中没有 device_path 选项(例如 /dev/sda)。事实上即使提供了 device_path,也会被 GRUB UEFI 安装脚本忽略,因为 UEFI 启动加载器不使用 MBR 启动代码或启动扇区。

如果遇到问题,查看 UEFI 故障排查。参见 GRUB/ 技巧和窍门 #UEFI 延伸阅读

输入:

pacman -S grub
pacman -S efibootmgr

VirtualBox_Arch test_16_12_2025_15_53_49.png

VirtualBox_Arch test_16_12_2025_15_54_37.png

然后输入:

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

VirtualBox_Arch test_16_12_2025_15_56_03.png

最后一定要记得去生成主配置文件!!!!!

输入:

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

然后退出环境,重启就可以了。

VirtualBox_Arch test_16_12_2025_15_58_48.png

最后再开一下网络,就大功告成了 ~

VirtualBox_Arch test_16_12_2025_16_00_36.png

恭喜你完成了安装过程!

安装后的工作

创建非特权账户、图形用户界面的安装、声音管理、触摸板支持等系统管理教程和后期工作参见建议阅读及其子页面。

感兴趣的各类程序,请参见应用程序列表及其子页面。

还建议新用户阅读给新用户的关于如何不去弄坏 Arch Linux 系统的建议一文。