archlinux 基础安装
archlinux 基础安装
Section titled “archlinux 基础安装”⛵ 万事俱备,只欠东风
Section titled “⛵ 万事俱备,只欠东风”经过了上一节的准备工作,我们可以开始正式安装 archlinux 了。如果你还没有完成前面的阅读,请先仔细阅读章节 安装前的准备。如果对本节的步骤不理解或者有疑问,请阅读下一节 基础安装详解
本节从安装最基础的、无图形化界面的 archlinux 系统开始。如有需要可以参阅 ArchWiki 官方安装指南。
⚠️ 注意
请按照指南的步骤一步一步进行!不要跳步、也不要在步骤中添加多余的动作!
另外,如果安装中有报错,请弄清楚报错的原因(这要求你起码能看懂有报错)!常见的原因包括但不限于输错了命令、添加了多余的步骤等。在解决了问题之后再进行下一步!
0. 进入安装环境
Section titled “0. 进入安装环境”- 在第一个选项回车
- 进入安装环境后,便可以开始通过命令安装 archlinux 了
1. 禁用 reflector 服务
Section titled “1. 禁用 reflector 服务”2020 年,archlinux 安装镜像中加入了 reflector
服务,它会自己更新 mirrorlist
(软件包管理器 pacman
的软件源)。在特定情况下,它会误删某些有用的源信息。这里进入安装环境后的第一件事就是将其禁用。也许它是一个好用的工具,但是很明显,因为地理上造成的特殊网络环境,这项服务并不适合启用。
- 通过以下命令将该服务禁用:
systemctl stop reflector.service
- 通过以下命令查看该服务是否被禁用,按下
q
退出结果输出:
systemctl status reflector.service
2. 再次确认是否为 UEFI 模式
Section titled “2. 再次确认是否为 UEFI 模式”禁用 reflector
服务后,我们再来确认一下是否为 UEFI
模式:
ls /sys/firmware/efi/efivars
若输出了一堆东西(efi
变量),则说明已在 UEFI
模式。否则请确认你的启动方式是否为 UEFI
。
3. 连接网络
Section titled “3. 连接网络”若使用无线连接
Section titled “若使用无线连接”使用 iwctl
进行连接:
iwctl # 进入交互式命令行device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0station wlan0 scan # 扫描网络station wlan0 get-networks # 列出所有 wifi 网络station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可exit # 连接成功后退出
若使用有线连接
Section titled “若使用有线连接”正常来说,只要插上一个已经联网的路由器分出的网线(DHCP),直接就能联网。
可以等待几秒等网络建立连接后再进行下一步测试网络的操作。
若笔记本没有网线接口请使用带网线接口的扩展坞。
4. 测试网络连通性
Section titled “4. 测试网络连通性”通过 ping
命令测试网络连通性:
ping www.bilibili.com
稍等片刻,若能看到数据返回,即说明已经联网。与 Windows 不同的是,需要按下 Ctrl
+ C
手动退出 ping
命令。
5. 更新系统时钟
Section titled “5. 更新系统时钟”使用 timedatectl
确保系统时间是准确的。这一步不是可选的,正确的系统时间对于部分程序来说非常重要:
timedatectl set-ntp true # 将系统时间与网络时间进行同步timedatectl status # 检查服务状态
6. 更换国内软件仓库镜像源加快下载速度
Section titled “6. 更换国内软件仓库镜像源加快下载速度”使用 vim
编辑器修改 /etc/pacman.d/mirrorlist
文件。将 pacman
软件仓库源更换为国内软件仓库镜像源:
vim /etc/pacman.d/mirrorlist
放在最上面的是会使用的软件仓库镜像源,推荐的镜像源如下:
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch # 中国科学技术大学开源镜像站Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch # 清华大学开源软件镜像站Server = https://repo.huaweicloud.com/archlinux/$repo/os/$arch # 华为开源镜像站Server = http://mirror.lzu.edu.cn/archlinux/$repo/os/$arch # 兰州大学开源镜像站
修改完成的 /etc/pacman.d/mirrorlist
文件如图所示。
⚠️ 注意
前车之鉴 —— 请不在这一步中添加 archlinuxcn
源!如果你在 /etc/pacman.conf
中添加了内容,请将它们删掉。
7. 分区和格式化(使用 Btrfs 文件系统)
Section titled “7. 分区和格式化(使用 Btrfs 文件系统)”7-1. 分区
Section titled “7-1. 分区”本指南考虑到多数情况,在这里首先介绍 win10 和 archlinux 在一个磁盘上双系统的分区配置。
/
根目录:>= 128GB
(和用户主目录在同一个Btrfs
文件系统上)/home
用户主目录:>= 128GB
(和根目录在同一个Btrfs
文件系统上)/boot
EFI 分区:256MB
(由电脑厂商或 Windows 决定,无需再次创建)- Swap 分区:
>= 电脑实际运行内存的 60%
(设置这个大小是为了配置休眠准备)
- 通过
lsblk
命令,区分要安装 archlinux 的磁盘(通过观察磁盘的大小、已存在的分区情况等判断)并显示当前磁盘的分区情况:
lsblk # 显示当前分区情况
此处要分区和安装 archlinux 的磁盘即为 sda
。请根据你的实际情况判断!
- 接下来使用
cfdisk
命令对磁盘分区(对于 SATA 协议的硬盘,x
为字母a
、b
或c
等等;对于 NVME 协议的硬盘,x
为数字0
、1
或2
等等,请根据实际情况判断):
cfdisk /dev/sdx # 对安装 archlinux 的磁盘分区
cfdisk /dev/nvmexn1 # 对安装 archlinux 的磁盘分区
进入 cfdisk
分区工具之后,你会看到如图所示的界面。通过方向键 ↑
和 ↓
可以在要操作磁盘分区或空余空间中移动;通过方向键 ←
和 →
在对当前高亮的磁盘分区或空余空间要执行的操作中移动。
- 首先创建 Swap 分区。选中
Free space
> 再选中操作[New]
> 然后按下回车Enter
以新建swap
分区(类似 Windows 的交换文件)
- 按下回车后会提示输入
分区大小
,Swap 分区建议为电脑内存大小的 60%,或者和内存大小相等 > 然后按下回车Enter
- 默认新建的类型是
Linux filesystem
,我们需要将类型更改为Linux swap
。选中操作[Type]
> 然后按下回车Enter
> 通过方向键↑
和↓
选中Linux swap
> 最后按下回车Enter
- 我们再只需要一个分区即可(因为使用
Btrfs
文件系统,所以根目录和用户主目录在一个分区上),所以类似的:选中Free space
> 再选中操作[New]
> 然后按下回车Enter
以新建分区
- 输入
分区大小
(默认是剩余的全部空间。请根据实际情况输入)> 然后按下回车Enter
- 分区类型默认即可,无需更改。接下来选中操作
[Write]
并回车Enter
> 输入yes
并回车Enter
确认分区操作
⚠️ 注意
只有写入了操作分区表才会更改。
- 选中操作
[Quit]
并回车Enter
以退出cfdisk
分区工具
- 分区完成后,使用
fdisk
或lsblk
命令复查分区情况:
fdisk -l # 复查磁盘情况
lsblk # 复查磁盘情况
如果 archlinux 需要和 Windows 共存在一个硬盘上,需要通过 DiskGenius 或其他分区软件检查 EFI 分区容量不小于 256MB,如果小于,可能需要扩容(推荐,但可能不太好
7-2. 格式化并创建 Btrfs 子卷
Section titled “7-2. 格式化并创建 Btrfs 子卷”7-2.0. 格式化 EFI 分区
Section titled “7-2.0. 格式化 EFI 分区”mkfs.fat -F32 /dev/sdxn
mkfs.fat -F32 /dev/nvmexn1pn
⚠️ 注意
如果目标是双系统(Win10/Win11 + Arch Linux),并且 Win10/Win11 和 Arch Linux 将要共存在一个硬盘上的话,不要重新格式化原有的 EFI 分区,因为它可能包含启动其他操作系统所需的文件。
7-2-1. 格式化 Swap 分区
Section titled “7-2-1. 格式化 Swap 分区”通过以下命令格式化对应的 Swap 分区,请按照实际情况替换 x
和 n
(下同):
mkswap /dev/sdxn
mkswap /dev/nvmexn1pn
7-2-2. 格式化 Btrfs 分区
Section titled “7-2-2. 格式化 Btrfs 分区”- 首先我们需要将整一个分区格式化为
Btrfs
文件系统。使用如下命令进行格式化:
mkfs.btrfs -L myArch /dev/sdxn
mkfs.btrfs -L myArch /dev/nvmexn1pn
📑 命令参数说明:
-L
选项后指定该分区的LABLE
,这里以myArch
为例,也可以自定义,但不能使用特殊字符以及空格,且最好有意义
- 为了创建子卷,我们需要先将
Btrfs
分区挂载到/mnt
下:
mount -t btrfs -o compress=zstd /dev/sdxn /mnt
mount -t btrfs -o compress=zstd /dev/nvmexn1pn /mnt
📑 命令参数说明:
-t
选项后指定挂载分区文件系统类型-o
选项后添加挂载参数:
compress=zstd
—— 开启透明压缩
- 使用
df
命令复查挂载情况:
df -h # -h 选项会使输出以人类可读的单位显示
7-2-3. 创建 Btrfs 子卷
Section titled “7-2-3. 创建 Btrfs 子卷”- 通过以下命令创建两个
Btrfs
子卷,之后将分别挂载到/
根目录和/home
用户主目录:
btrfs subvolume create /mnt/@ # 创建 / 目录子卷btrfs subvolume create /mnt/@home # 创建 /home 目录子卷
⚠️ 注意
除非你清楚你的操作产生的后果,否则请保持子卷名称和结构与本指南一致,因为在后面我们会设置的快照工具 timeshift
只支持这种子卷布局。
- 通过以下命令复查子卷情况:
btrfs subvolume list -p /mnt
- 子卷创建好后,我们需要将
/mnt
卸载掉,以挂载子卷:
umount /mnt
- 在挂载时,挂载是有顺序的,需要从根目录开始挂载。使用如下命令挂载子卷:
mount -t btrfs -o subvol=/@,compress=zstd /dev/sdxn /mnt # 挂载 / 目录mkdir /mnt/home # 创建 /home 目录mount -t btrfs -o subvol=/@home,compress=zstd /dev/sdxn /mnt/home # 挂载 /home 目录mkdir -p /mnt/boot # 创建 /boot 目录mount /dev/sdxn /mnt/boot # 挂载 /boot 目录swapon /dev/sdxn # 挂载交换分区
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvmexn1pn /mnt # 挂载 / 目录mkdir /mnt/home # 创建 /home 目录mount -t btrfs -o subvol=/@home,compress=zstd /dev/nvmexn1pn /mnt/home # 挂载 /home 目录mkdir -p /mnt/boot # 创建 /boot 目录mount /dev/nvmexn1pn /mnt/boot # 挂载 /boot 目录swapon /dev/nvmexn1pn # 挂载交换分区
- 使用
df
命令复查挂载情况:
df -h
- 使用
free
命令复查 Swap 分区挂载情况:
free -h # -h 选项会使输出以人类可读的单位显示
关于采用双 EFI 分区的双系统安装
Section titled “关于采用双 EFI 分区的双系统安装”双 EFI 分区策略的时候, 需要将 Windows 的 EFI 分区 挂载到 Archlinux 的根目录下 , 这样后续安装 GRUB 的时候才能被正确的识别到。
mkdir /mnt/efimount nvmexn1pn /mnt/efi # nvmexn1pn 是 Windows 的 EFI 文件
9. 安装系统
Section titled “9. 安装系统”- 通过如下命令使用
pacstrap
脚本安装基础包:
pacstrap /mnt base base-devel linux linux-firmware btrfs-progs# 如果使用btrfs文件系统,额外安装一个btrfs-progs包
📑 命令参数说明:
base-devel
——base-devel
在AUR
包的安装过程中是必须用到的linux
—— 内核软件包,这里建议先不要替换为其它内核
如果提示 GPG 证书错误,可能是因为使用的不是最新的镜像文件,可以通过更新 archlinux-keyring
解决此问题
pacman -S archlinux-keyring
- 通过如下命令使用
pacstrap
脚本安装其它必要的功能性软件:
pacstrap /mnt networkmanager vim sudo zsh zsh-completions
📑 命令参数说明:
zsh
——zsh-completions
如果你是 bash 的爱好者,请把这两个包换成bash-completion
- 如果你是第一次接触*nix 系统的新手,不建议换成 bash
经过一系列安装时提示信息的刷屏,这些包就安装好了。
⚠️ 注意
在执行命令前,请仔细检查命令的拼写正确;同时注意不要漏装东西。
很多人在后续的步骤中报错就是因为这里漏装了东西。
如果报错,请检查拼写,同时请确保之前的步骤 更换国内软件仓库镜像源加快下载速度 中没有添加 archlinuxcn
源。
10. 生成 fstab 文件
Section titled “10. 生成 fstab 文件”fstab
用来定义磁盘分区。它是 Linux 系统中重要的文件之一。使用genfstab
自动根据当前挂载情况生成并写入fstab
文件:
genfstab -U /mnt > /mnt/etc/fstab
- 复查一下
/mnt/etc/fstab
确保没有错误:
cat /mnt/etc/fstab
若为 NVME 协议的硬盘,输出结果应该与此类似:
# /dev/nvme0n1p6 / btrfs rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=256,subvol=/@,subvol=@ 0 0UUID=d01a3ca5-0798-462e-9a30-97065e7e36e1 / btrfs rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=256,subvol=/@,subvol=@ 0 0
# /dev/nvme0n1p1 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2UUID=522C-80C6 /boot vfat rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,utf8,errors=remount-ro 0 2
# /dev/nvme0n1p6 /home btrfs rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=257,subvol=/@home,subvol=@home 0 0UUID=d01a3ca5-0798-462e-9a30-97065e7e36e1 /home btrfs rw,relatime,compress=zstd:3,ssd,space_cache,subvolid=257,subvol=/@home,subvol=@home 0 0
# /dev/nvme0n1p5 none swap defaults 0 0UUID=8e40dbed-590f-4cb8-80de-5cef8343a9fc none swap defaults 0 0
11. change root
Section titled “11. change root”使用以下命令把系统环境切换到新系统下:
arch-chroot /mnt
此时,原来安装盘下的 /mnt
目录就变成了新系统的 /
目录。同时,可以发现命令行的提示符颜色和样式也发生了改变。
12. 设置主机名与时区
Section titled “12. 设置主机名与时区”- 首先在
/etc/hostname
设置主机名:
vim /etc/hostname
加入你想为主机取的主机名,这里比如叫 myarch。
- 接下来在
/etc/hosts
设置与其匹配的条目:
vim /etc/hosts
加入如下内容:
127.0.0.1 localhost::1 localhost127.0.1.1 myarch.localdomain myarch
- 随后设置时区,在
/etc/localtime
下用/usr
中合适的时区创建符号链接:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
不要找北京啦!这里没有北京,只有上海啦!🚀
13. 硬件时间设置
Section titled “13. 硬件时间设置”使用如下命令将系统时间同步到硬件时间:
hwclock --systohc
14. 设置 Locale
Section titled “14. 设置 Locale”Locale
决定了软件使用的语言、书写习惯和字符集。
- 编辑
/etc/locale.gen
,去掉en_US.UTF-8 UTF-8
以及zh_CN.UTF-8 UTF-8
行前的注释符号(#
):
vim /etc/locale.gen
- 然后使用如下命令生成
locale
:
locale-gen
- 向
/etc/locale.conf
输入内容:
echo 'LANG=en_US.UTF-8' > /etc/locale.conf
⚠️ 注意
不推荐在此设置任何中文 locale
,会导致 tty
乱码。
15. 为 root 用户设置密码
Section titled “15. 为 root 用户设置密码”passwd root
16. 安装微码
Section titled “16. 安装微码”通过以下命令安装对应芯片制造商的微码:
pacman -S intel-ucode # Intelpacman -S amd-ucode # AMD
17. 安装引导程序
Section titled “17. 安装引导程序”如有需要可以参阅 ArchWiki 相关内容。
- 安装相应的包:
pacman -S grub efibootmgr os-prober
📑 命令参数说明:
-S
选项后指定要通过pacman
包管理器安装的包:
grub
—— 启动引导器efibootmgr
——efibootmgr
被grub
脚本用来将启动项写入 NVRAMos-prober
—— 为了能够引导 win10,需要安装os-prober
以检测到它
- 安装 GRUB 到 EFI 分区:
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
📑 命令参数说明:
--efi-directory=/boot
—— 将grubx64.efi
安装到之前的指定位置(EFI 分区)--bootloader-id=ARCH
—— 取名为ARCH
- 接下来使用
vim
编辑/etc/default/grub
文件:
vim /etc/default/grub
进行如下修改:
- 去掉
GRUB_CMDLINE_LINUX_DEFAULT
一行中最后的quiet
参数 - 把
loglevel
的数值从3
改成5
。这样是为了后续如果出现系统错误,方便排错 - 加入
nowatchdog
参数,这可以显著提高开关机速度
- 为了引导 win10,则还需要添加新的一行
GRUB_DISABLE_OS_PROBER=false
# GRUB boot loader configuration
GRUB_DEFAULT=0GRUB_TIMEOUT=5GRUB_DISTRIBUTOR="Arch"GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog"GRUB_CMDLINE_LINUX=""GRUB_DISABLE_OS_PROBER=false...
- 最后生成
GRUB
所需的配置文件:
grub-mkconfig -o /boot/grub/grub.cfg
若引导了 win10,则输出应该包含倒数第二行:
若 win10 安装在另一个硬盘中则不会输出 可在进入系统后挂载硬盘并重新执行该命令
18. 完成安装
Section titled “18. 完成安装”- 输入以下命令:
exit # 退回安装环境umount -R /mnt # 卸载新分区reboot # 重启
注意,重启前要先拔掉优盘,否则你重启后还是进安装程序而不是安装好的系统。
如图即为 GRUB 引导界面。
- 重启后使用 root 账户登录系统:
- 设置开机自启并立即启动 networkmanager 服务,即可连接网络:
systemctl enable --now NetworkManager # 设置开机自启并立即启动 NetworkManager 服务ping www.bilibili.com # 测试网络连接
- 若为无线连接,则需要在启动
networkmanager
后使用nmcli
连接网络:
nmcli dev wifi list # 显示附近的 Wi-Fi 网络nmcli dev wifi connect "Wi-Fi名(SSID)" password "网络密码" # 连接指定的无线网络
也可以使用 nmtui
来配置网络
nmtui
fastfetch
可以将系统信息和发行版 logo 一并打印出来。通过pacman
安装fastfetch
:
pacman -S fastfetch
使用 fastfetch
打印系统信息:
fastfetch
又到了
fastfetch
的时间了吗?
🎉 祝贺!🎉
Section titled “🎉 祝贺!🎉”到此为止,一个基础的、无图形界面的 archlinux 已经安装完成了!这时你应该可以感到满满的满足感(即使你还没有见到图形化的界面)。好好享受一下成功安装 archlinux 的喜悦吧!
如果你对本节的部分步骤不理解,请仔细阅读下一节 基础安装详解。在此之后,我们来安装图形界面。