安装 Archlinux
这篇文章将演示如何安装 Archlinux。
获取 Archlinux ISO 镜像
可以从 Archlinux 官网 下载最新的 ISO 镜像。这个页面的顶部包含了 BitTorrent 下载链接,需要往下滚动才能使用 HTTP (S) 下载链接。
校验 ISO 镜像
下载完成后,建议校验 ISO 镜像的完整性。可以使用 sha256sum 命令来计算 SHA-256 校验和,并与 Archlinux 官方提供的校验和 进行对比。
sha256sum archlinux-YYYY.MM.DD-x86_64.iso制作启动盘
使用 Ventoy 制作启动盘是一个简单的选择。Ventoy 支持多种操作系统的 ISO 镜像,可以直接将下载的 Archlinux ISO 镜像复制到 Ventoy 启动盘中。
如果 Ventoy 太花哨,也可以使用 Balena Etcher,Rufus 或者 dd 命令来制作启动盘。
启动 archiso
将制作好的启动盘插入电脑,重启并进入 One-Time Boot Menu (通常可以通过按 F12、F11、F10、Del 或 Esc 键进入,请查看对应主板的说明书或在线查找),选择 USB 启动。
安装
可以使用 SSH 连接到 Archlinux 安装环境,方便在安装过程中查看文档或进行其他操作。
需要先在 archiso 环境中更改 root 用户的密码:
passwd输入两次更改后的密码(输入时不会显示,并且此密码仅用于当前会话,换句话说,重启后、安装后都会失效,所以可以使用弱密码如123等)。 请不要使用空密码,否则 SSH 连接会失败。
请不要在安装后使用弱密码。
使用 ip a 查看 IP 地址,随后使用 SSH 连接:
ssh root@<ip-addr>格式化磁盘并挂载分区
使用 lsblk 命令查看磁盘信息,找到要安装 Archlinux 的磁盘(对于 SATA 磁盘通常是 /dev/sda,对于 NVMe 磁盘通常是 /dev/nvme0n1)。下文以 /dev/nvme0n1 为例,使用 XFS 文件系统。
请确保您选择了正确的磁盘! 格式化磁盘会删除对应的硬盘中所有数据。
格式化磁盘
wipefs -af /dev/nvme0n1如果磁盘支持 Memory cell clearing,请参阅 Solid_state_drive/Memory_cell_clearing#NVMe_drive 进行操作。
分区磁盘
使用 gdisk 工具分区磁盘:
gdisk /dev/nvme0n1在 gdisk 命令行中输入以下命令,请辨别需要输入的内容与系统输出的内容:
GPT fdisk (gdisk) version 1.0.10
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present
Creating new GPT entries in memory.
Command (? for help): n
Partition number (1-128, default 1):
First sector (6-500099664, default = 256) or {+-}size{KMGTP}:
Last sector (256-500099664, default = 500099583) or {+-}size{KMGTP}: +1G
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300): ef00
Changed type of partition to 'EFI system partition'
Command (? for help): n
Partition number (2-128, default 2):
First sector (6-500099664, default = 262400) or {+-}size{KMGTP}:
Last sector (262400-500099664, default = 500099583) or {+-}size{KMGTP}:
Current type is 8300 (Linux filesystem)
Hex code or GUID (L to show codes, Enter = 8300):
Changed type of partition to 'Linux filesystem'
Command (? for help): w
Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!
Do you want to proceed? (Y/N): Y
OK; writing new GUID partition table (GPT) to /dev/nvme0n1.
The operation has completed successfully.格式化分区
# 格式化 EFI 系统分区
mkfs.fat -F 32 /dev/nvme0n1p1
# 格式化根分区
mkfs.xfs -f /dev/nvme0n1p2挂载分区
# 挂载根分区
mount /dev/nvme0n1p2 /mnt
# 挂载 EFI 系统分区
mkdir -p /mnt/efi
mount /dev/nvme0n1p1 /mnt/efi安装基本系统
更换镜像源
如果网络状况不佳,可以更换镜像源。编辑 /etc/pacman.d/mirrorlist 文件。(此更改会在安装后保留)
vim /etc/pacman.d/mirrorlist之后按下 ggdG 删除所有内容,然后按下 i 进入插入模式,粘贴最近的镜像源,例如 USTC 的镜像源:
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch按下 Esc 键退出插入模式,然后输入 :wq 保存并退出。
使用 pacstrap 安装基本系统
pacstrap -K /mnt base base-devel linux linux-firmware git xfsprogs efibootmgr vim openssh man sudo systemd-ukify生成 fstab 文件
# 生成 fstab 文件
genfstab -U /mnt >> /mnt/etc/fstab
# 检查文件内容
cat /mnt/etc/fstab配置新系统
切换到新系统
arch-chroot -S /mnt设置时间
# 设置时区为 Asia/Shanghai
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 同步硬件时钟
hwclock --systohc设置语言
编辑 /etc/locale.gen 文件,取消注释所需要的语言行:
vim /etc/locale.gen取消注释以下行(按下 gg 进入文件开头, / 搜索 en_US.UTF-8,按下 Enter 后,使用 X 删除行首的 #,最后 ESC 退出插入模式, :wq 保存并退出):
en_US.UTF-8 UTF-8接着生成语言文件:
locale-gen最后设置 LANG 环境变量:
echo "LANG=en_US.UTF-8" > /etc/locale.conf网络配置
设置主机名
echo "archlinux" > /etc/hostname设置网络端口
编辑 /etc/systemd/network/20-wired.network 文件,添加:
[Match]
Name=en*
[Link]
RequiredForOnline=routable
[Network]
DHCP=yes接着启用对应的服务:
systemctl enable systemd-networkd.service
systemctl enable systemd-resolved.service关于 systemd-networkd 的更多配置(如配置静态 IP 等),请参考 systemd-networkd。
如果不想使用 systemd-networkd,可以使用 NetworkManager 或者 dhcpcd 等,他们的区别详见 Network_configuration#Network_managers
如果后续使用时,遇到 127.0.0.1:53 的 DNS 错误,请使用 adguardhome 的 docker 镜像 中提到的方法解决。
设置密码
如果需要设置 root 用户的密码,可以使用以下命令:
passwd创建新用户
创建一个新的用户(例如 user)并设置密码:
# 创建用户并添加到 wheel 组
useradd -mG wheel user
# 设置用户密码
passwd user配置 sudo
使用 visudo 命令编辑 sudoers 文件:
EDITOR=vim visudo查找以下行:
# %wheel ALL=(ALL) ALL取消注释(删除行首的 #),请保留 % 符号,这样匹配的是 wheel 组的用户而不是wheel这个用户:
%wheel ALL=(ALL) ALL保存并退出。
安装引导加载程序
安装 systemd-boot
bootctl --esp-path=/efi install配置 cmdline
请将 UUID= 之后的 UUID 替换为 /etc/fstab 中根目录的 UUID。
echo "root=UUID=88f466d6-dedf-4d5f-8cc2-0a74bb014b75 rw" > /etc/kernel/cmdline配置 preset
修改 /etc/mkinitcpio.d/linux.preset, 使用 UKI。
# 注释掉下行
#default_image="/boot/initramfs-linux.img"
# 取消注释 UKI
default_uki="esp/EFI/Linux/arch-linux.efi"生成 UKI
mkinitcpio -P
# 删除旧 initramfs
rm /boot/initramfs-linux.img
# 更新 systemd-boot
bootctl update启用 SSH 服务
systemctl enable sshd.service卸载磁盘并重新启动
# 退出 chroot 环境
exit
# 卸载所有挂载的分区
umount -R /mnt
# 重新启动系统
reboot之后就可以使用新安装的 Archlinux 系统了。