Arch Linux 安装步骤记录
本文记录安装 Arch Linux 的过程,便于以后重装时查阅,也希望能够为在安装过程中遇到困难的人提供一些参考。
获取系统安装镜像
在下载页面 选择 China 区域的任一下载点,下载系统安装镜像。
下载站点除了安装镜像之外,还提供了 md5sum ,你可以计算下载得到文件的 md5sum 与之对比以验证下载到的镜像的完整性。
md5sum archlinux-2022.01.01-x86_64.iso |
准备安装介质
如果是在 Linux 系统上,可以使用 dd
命令很方便地将镜像写入 U 盘,但是请务必反复确认 of
参数指定的是你的 U 盘而不是你电脑上什么别的分区,填错的话可能一个命令下去你电脑上的某个分区就没了。
sudo dd bs=4M if=/path/to/archlinux.iso of=/dev/sdX status=progress && sync |
或者也可以使用 GUI 工具 Etcher ,这是一个界面很简洁的全平台软件。
启动安装环境
关闭电脑,将制作的安装 U 盘插入电脑,并在开机时不断地按 F2 、F10 或者 F12 键(取决于你的电脑品牌和主板品牌),在出现启动菜单时,选择你的 U 盘并按下 Enter 键,之后会进入到安装程序的启动菜单,如下图所示。选择第一个 Arch Linux install medium 并按下 Enter 键进入安装环境。


注意:
- Arch Linux 安装镜像不支持安全启动(Secure Boot),需要在 BIOS 设置里关闭安全启动,完成安装过程之后可以再配置安全启动。
- 有 legacy BIOS 和 UEFI 两种启动方式,本文后续内容都假设使用 UEFI 启动方式。
- 本文的截图和磁盘大小等数据来自虚拟机,但整个步骤与在物理机上安装系统并无不同。
可以使用下面的命令检查当前是否在 UEFI 模式,如果该目录存在则是在 UEFI 模式。
# ls /sys/firmware/efi/efivars |
磁盘分区
使用下面的命令列出所有的磁盘和分区,找到想要进行分区的磁盘,一般是 /dev/sdX 的形式,比如 /dev/sda ,结果中出现的诸如 rom 、loop 、airoot 之类的磁盘名字可以忽略。
# fdisk -l |
要以 UEFI 模式安装 Arch Linux ,至少需要两个分区:一个 EFI 分区(用于存放 BootLoader 和其他启动时需要的文件),一个 Linux 根目录分区。在本文的场景中,我们有两块磁盘,其中一块磁盘(/dev/sda)存放 EFI 分区和 Linux 根目录,另一块磁盘(/dev/sdb)我们单独存放 home 目录,相当于把系统和用户数据分别放到两块磁盘上。而 swap 空间我们不单独划分一个分区,而是以 swapfile 的方式实现,这样做的好处是以后可以很方便地调整 swap 的大小。
创建 EFI 分区和 root 分区
使用下面的命令先对 /dev/sda 磁盘进行分区。
# fdisk /dev/sda |
可以输入 d
命令并按下回车删除磁盘上已有的所有分区,然后用 g
命令创建 GPT 分区表。
Command (m for help): g |
首先我们来创建 EFI 分区,输入命令 n
,程序会要求输入分区号,输入 1 (会创建名为 /dev/sda1 的分区),First sector 直接按回车保持默认值 2048 ,Last sector 输入 +512M ,表示我们要创建 512M 大小的 EFI 分区。
Command (m for help): n |
接着我们还要把这个分区的类型改成 EFI System (默认的是 Linux Filesystem),输入命令 t
以修改分区类型,接着输入 L
可以查看所有支持的分区(在分区列表按 j
和 k
上下滚动,按 q
返回),这里我们需要输入 EFI System 对应的编号 1 。
Command (m for help): t |
用同样的方式在 /dev/sda 上创建第二个分区作为 root 分区,Partition number 保持默认值 2 ,First sector 和 Last sector 也保持默认值,将磁盘上所有剩下的空间都分配给这个分区。
Command (m for help): n |
完成分区后,输入 w
命令使修改生效并退出 fdisk 工具。
创建 home 分区
用同样的方法对 /dev/sdb 进行分区,我们只创建一个分区,用于系统的 home 目录。
# fdisk /dev/sdb |
创建文件系统
现在所有磁盘分区都准备好了,接下来我们在各个分区上创建文件系统,再次使用 fdisk -l
命令确认一下我们的分区情况。
# fdisk -l |
使用下面的命令分别为 EFI 分区、Linux 根目录、Linux home 目录创建文件系统。
# mkfs.fat -F 32 /dev/sda1 |
挂载文件系统并创建 swapfile
接下来我们挂载 /dev/sda2 上的根目录和 /dev/sdb1 上的 home 目录。
# mount /dev/sda2 /mnt |
使用 fallocate
命令在根目录创建一个 swap 文件,文件名字叫什么无所谓。至于 swap 的大小选择,不同的人、不同的发行版都有各自的偏好,根据是否需要休眠(hibernate)功能也会有差异,这里我采用 Ubuntu 发行版当前的偏好,设定 swapfile 跟物理内存一样的大小(我这台虚拟机的屋物理内存为 4GB)。具体可以看 Ubuntu 社区的说明 和 这篇总结性的文章。swapfile 创建完成后将权限修改为 0600 ,只允许 root 访问,以防止发生重要信息泄露。
# fallocate -l 4G /mnt/swapfile |
到目前为止我们只是创建了一个普通的文件,接下来我们需要让 Linux 系统知道这个文件要用来作为 swap 空间,并启用这个 swap 空间。
# mkswap /mnt/swapfile |
完成后可以使用下面的命令验证。
# swapon --show |
检查和配置网络环境
安装过程中需要网络,我们首先使用 ping
命令检查网络是否连通。
# ping -c 3 baidu.com |
对于有线网络,一般直接插入网线就可以了,而对于无线网络,需要我们手动去连接,这里我们可以使用 iwctl
工具。首先运行 iwctl
进入工具的交互命令行,然后查找电脑上无线网卡设备的名字,接着使用无线网卡设备扫描无线网络,得到无线网络的名字后连接到网络,工具会提示输入无线网络的密码。(下面命令中的 xxx 和 yyy 分别代表无线网卡设备名字和无线网络名字,请根据实际情况进行替换)
# iwctl |
选择合适的镜像源
后面的安装过程中会从 Arch 镜像服务器上下载一些包。在 Live System 中,reflector 工具会自动选择 20 个最新同步的 HTTPS 镜像服务器放进镜像列表(/etc/pacman.d/mirrorlist
),并以下载率排序,排在前面的镜像优先级更高。但这样选择镜像并没有考虑地理位置因素,这些镜像服务器可能离我们很远,导致下载速度很慢。我们可以手动使用 reflector 工具来选择下载速度最快的镜像。
首先备份一下镜像列表以防出现意外情况,接着使用 reflector 工具自动挑选镜像服务器,并自动把结果保存到镜像列表文件中,命令中的 CN
是国家代码。
# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak |
这个镜像列表文件会在后面被 pacstrap
程序拷贝到新安装的系统中,所以不需要在新的系统中再做一遍这个操作。
安装 Arch Linux
完成了前面的准备工作,现在终于可以开始安装 Arch Linux 了。使用 pacstrap
脚本来安装 base 包、Linux 内核和通用硬件的固件,此外我还安装了 vim 工具以便后面修改文件用。
# pacstrap /mnt base linux linux-firmware vim |
需要注意:
- 如果是在容器中安装系统,则不需要安装 Linux 内核。
- 如果是在虚拟机或者容器中安装系统,不需要安装 firmware 。
如果安装因为网络问题中断了,没有关系,等网络恢复时再运行一遍命令即可。
配置新系统
前面我们对磁盘做了分区,创建了文件系统和 swapfile ,现在我们用下面的命令生成 fstab 文件,这个文件里说明了我们的磁盘分区、swapfile 应该如何挂载。
# genfstab -U /mnt >> /mnt/etc/fstab |
到这里,我们的 Arch 系统已经安装完成了,但是还没有结束,我们需要使用 arch-chroot
命令进入到新的系统去做一些必要的配置。
# arch-chroot /mnt |
首先我们使用 timedatectl
命令设置时区为 Asia/Shanghai 。
# timedatectl set-timezone Asia/Shanghai |
接着设置 locale ,它会影响系统上的语言、日期、数字以及货币的显示格式。locale.gen
文件中包含了所有支持的 locale,使用 vim 打开并修改文件。
# vim /etc/locale.gen |
找到 en_US.UTF-8 UTF-8
和 zh_CN.UTF-8 UTF-8
并取消注释,保存退出。然后生成 locale 文件,并创建 locale.conf
配置文件。不要直接在这里设置 LANG=zh_CN.UTF-8
,否则会使终端乱码。可以之后在桌面环境中设置语言。
# locale-gen |
然后设置主机名为 myarch ,你可以随便设置成什么其他的。
# echo myarch > /etc/hostname |
接着修改 hosts 文件,填入下面的内容,注意替换主机名。
# vim /etc/hosts |
日常使用中登录 root 用户是极其不安全的,我们创建一个普通用户,并赋予 sudo 权限。首先我们用下面的命令创建一个名为 nuke 的用户并为其设置密码,其中 -m
参数指明为新用户创建 home 目录。之后将新用户添加到 wheel 用户组。
# useradd -m nuke |
接着我们安装 sudo 工具,并使用 visudo
命令修改 /etc/sudoers
配置文件,找到 wheel 那行,取消注释并保存。
# pacman -S sudo |
安装 Grub BootLoader
最后一步是安装 BootLoader ,需要注意这一步骤的描述仅适用于 UEFI 启动模式,不适用于 legacy BIOS 。
# pacman -S grub efibootmgr |
创建 /boot/efi 挂载点并将之前创建的 EFI 分区挂载到这里。
mkdir /boot/efi |
安装 Grub 并生成配置文件。
# grub-install --target=x86_64-efi --bootloader-id=GRUB --efi-directory=/boot/efi |
恭喜你完成啦!不过不要高兴太早,要作为桌面系统使用我们最起码还得装个桌面环境。
提示:
- 如果完成并重启后启动菜单里没有出现新安装系统的选项,可以进到 BIOS 设置里手动添加一个。
- 如果安装 Grub 时遇到
No space left on device grub-install
,首先尝试用efibootmgr -v
列出所有的启动选项,然后用efibootmgr -b # -B
命令删除不需要的选项。如果没有解决的话再尝试rm /sys/firmware/efi/efivars/dump-*
命令清理 EFI 的 dump 文件,完成这两步应该已经能解决这个问题了。
安装桌面环境
首先安装显示服务程序 Xorg ,接着安装 KDE 桌面和 KDE 生态的应用程序(有些不需要的可以卸载,比如 kde-games 和 kde-education ),显示管理器 SDDM 会由 KDE 附带安装。
# pacman -S xorg |
最后我们启动 SDDM 和 NetworkManager 服务,就可以重启进入新的系统了。
# systemctl enable sddm.service |
相关参考链接
https://wiki.archlinux.org/title/Installation_guide
https://itsfoss.com/install-arch-linux
Arch Linux 安装步骤记录