本文主要介绍 Arch Linux 的基本安装步骤。
Arch Linux 是一款基于 x86-64 架构的 Linux 发行版。系统主要由自由和开源软件组成,支持社区参与。
系统设计以 KISS 原则(保持简单和愚蠢)为总体指导原则,注重代码正确、优雅和极简主义,期待用户能够愿意去理解系统的操作。

# 安装前准备

说明:本教程安装的 Archlinux 只支持 X86 架构的 CPU。如果你的 Windows 为 Arm 架构,或者你的 MacOS 为 M 系列架构,请不要下载 x86_64 的 ArchLinux 镜像。

ARM 架构或者 M 系列架构的主机请百度搜索下载何种镜像,然后再继续本教程。

# 制作启动 U 盘

安装 archlinux 需要准备一个系统 U 盘,首先在 archlinux 官网 下载 iso 镜像文件,使用 rufuse 将下载的镜像写入到 U 盘中。

# 格式化磁盘

在 windows 桌面按下 win + X 并打开磁盘管理,将需要安装 archlinux 的磁盘空间位置,右键压缩卷,用以空出磁盘空间

# 解决双系统同步问题

仅针对双系统:windows 开机磁盘检查导致时间不一致,参考 blog:https://blog.csdn.net/zhouchen1998/article/details/108893660

解决方案:以管理员身份运行 powershell,输入以下命令后重启 windows

Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1

这个命令的效果是将 Windows 识别硬件时间为 UTC-0 而不是现在的 UTC+8,方法是将注册表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\ 中添加一项数据类型为 REG_DWORD,名称为 RealTimeIsUniversal,值设为 1。

# 系统安装

将启动 U 盘插入电脑后进入 bios 界面,将启动项设置为系统 U 盘,之后,U 盘的系统会载入到内存中并启动 live 环境

Arch Linux 安装镜像不支持 UEFI 安全启动(Secure Boot)功能。使用安装介质引导时,需要禁用安全启动。

# 验证引导模式

要验证系统目前的引导模式,请检查 UEFI 固件位数:

cat /sys/firmware/efi/fw_platform_size

如果命令结果为 64,则系统是以 UEFI 模式引导且使用 64 位 x64 UEFI。
如果命令结果为 32,则系统是以 UEFI 模式引导且使用 32 位 IA32 UEFI,虽然其受支持,但引导加载程序只能使用 systemd-boot 和 GRUB。
如果命令结果为 No such file or directory,则系统可能是以 BIOS 模式(或 CSM 模式,这两种模式通常出现在老旧的电脑或未经配置的虚拟机上)引导。
如果系统没有以您想要的模式(UEFI 或 BIOS)引导启动,请您参考自己的计算机或主板说明书。

# 禁用 PC 喇叭

在操作时能够听到喇叭提示音,如果不想听到提示音,可以通过在内核模块中移除 pcspkr 模块来完全禁用 PC 喇叭: rmmod pcspkr

# 连接至互联网

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

ip link 检查系统的网络接口,或者用 ip addr 查看系统网卡获取到的 ip 信息

# 有线网络

对于有线网络,连接网线后可使用 dhcp 获取地址: systemctl start dhcpcd

# 无线网络

对于无线局域网(Wi-Fi)和无线广域网(WWAN),请确保网卡未被 rfkill 禁用: rfkill unblock wlan

使用 iwctl 连接无线网络

iwctl # 进入 iwctl
device list # 查看网卡名称
station wlan0 scan # wlan0 是无线网卡名
station wlan0 get-networks # 查看已被扫描的无线网络
station wlan0 connect Ciallo # Ciallo 是网络名
exit # 连接成功后退出 iwctl

# 更换镜像源

禁用 Reflector 服务: systemctl stop reflector.service

reflector 是一个自动优化镜像源的服务,它会定期从 Arch Linux 官方镜像列表中筛选出速度快、更新及时的镜像,并自动更新 /etc/pacman.d/mirrorlist 文件。禁用 reflector.service 是为了避免其自动覆盖你手动配置的镜像源。

更换镜像源,编辑 /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

并执行 pacman -Syy 命令,更新仓库信息。

# 更新系统时间

启用 ntp 服务器并设置时区

timedatectl set-ntp true # 启用 ntp 服务
timedatectl set-timezone Asia/Shanghai # 设置时区
timedatectl status # 查看当前时间信息

# 磁盘分区

# 查看磁盘分区

使用 lsblk -pf 查看当前磁盘状态:

root@archiso ~ # lsblk -pf
NAME             FSTYPE   FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
/dev/loop0       squashfs 4.0                                                          0   100% /run/archiso/airootfs
/dev/sda
└─/dev/sda1      vfat     FAT32 ARCH_202509 1821-3E1E
/dev/nvme0n1
├─/dev/nvme0n1p1 vfat     FAT32             1AA7-9AF2
├─/dev/nvme0n1p2
├─/dev/nvme0n1p3 ntfs           系统        DC66393C6639192A
├─/dev/nvme0n1p4 ntfs           新加卷      7AA23CE1A23CA393
└─/dev/nvme0n1p5 ntfs           文档        42BA82FCBA82EC2B

未分配空间将不会在 lsblk 中显示,因此,需要使用 fdisk 或者 parted 确认未分配分区

使用 fdisk 确认分区: sudo fdisk -l

在如下输出中,最后一个分区 ( nvme0n1p5 ) 的结束扇区是 658,376,703,而磁盘总扇区数是 1,000,215,216。这意味着从扇区 658,376,704 到 1,000,215,216 * 之间的空间是未分配的。

root@archiso ~ # fdisk -l
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: SAMSUNG MZVLB512HBJQ-000L2
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: B7E44071-B020-40DC-A5CF-98AA16494D2E
Device             Start       End   Sectors   Size Type
/dev/nvme0n1p1      2048    616447    614400   300M EFI System
/dev/nvme0n1p2    616448    878591    262144   128M Microsoft reserved
/dev/nvme0n1p3    878592 313868287 312989696 149.2G Microsoft basic data
/dev/nvme0n1p4 313868288 315449343   1581056   772M Microsoft basic data
/dev/nvme0n1p5 315451392 658376703 342925312 163.5G Microsoft basic data
Disk /dev/sda: 57.62 GiB, 61865984000 bytes, 120832000 sectors
Disk model: USB Disk
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0099f852
Device     Boot Start       End   Sectors  Size Id Type
/dev/sda1  *     2048 120831935 120829888 57.6G  c W95 FAT32 (LBA)
Disk /dev/loop0: 946.71 MiB, 992702464 bytes, 1938872 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

# 分配磁盘空间

这是 UEFI 启动的分区的示例:

DeviceSizeSize Type
/dev/sda1500MEFI System
/dev/sda24GLinux swap
/dev/sda325GLinux filesystem

其中 swap 交换空间有两种方式:交换分区和交换文件,区别为:

  • ** 交换分区 (swap partition)**:是一个独立的、专门用于交换空间的分区。它不需要挂载到文件系统树的某个目录下。只需要用 swapon 命令直接激活即可。系统会直接和这个分区设备进行数据交换。
  • ** 交换文件 (swap file)**:是存放在某个已挂载的文件系统(如 //swap )中的一个普通文件。它需要先被创建为文件,然后才能被当作交换空间使用。

下文将介绍每种 swap 的配置方法,略显冗余。方便起见,你可以直接参考本文 ext4 分区方法进行配置。

使用 cfdisk 工具进行分区。执行命令 cfdisk /dev/nvme0n1 命令开始进行分区。

选择 gpt 分区表,然后点击 new-> 输入 500M,new-> 输入 4G,最后 new-> 默认大小,点击 Type 依次修改文件类型,结果如下 最后选择 Write 以更改分区表,后选择 Quit 保存退出,修改完成后,再用 `lsblk` 确认分区情况
root@archiso ~ # lsblk -pf
NAME             FSTYPE   FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
/dev/loop0       squashfs 4.0                                                          0   100% /run/archiso/airootfs
/dev/sda
└─/dev/sda1      vfat     FAT32 ARCH_202509 1821-3E1E
/dev/nvme0n1
├─/dev/nvme0n1p1 vfat     FAT32             1AA7-9AF2
├─/dev/nvme0n1p2
├─/dev/nvme0n1p3 ntfs           系统        DC66393C6639192A
├─/dev/nvme0n1p4 ntfs           新加卷      7AA23CE1A23CA393
├─/dev/nvme0n1p5 ntfs           文档        42BA82FCBA82EC2B
├─/dev/nvme0n1p6 vfat     FAT16             3058-81FC
├─/dev/nvme0n1p7 swap     1                 abff7ae1-c87b-47c1-b6c6-1a897ec54b7e
└─/dev/nvme0n1p8 xfs                        fdb10d8a-431a-47de-938f-b6be2e62ef57

# 格式化分区并挂载

根分区的文件系统通常使用 ext4 或者 btrfs ,前者稳定可靠,数据损坏风险低,后者功能众多,如快照、透明压缩、子卷、RAID 等,此处可按需选择文件系统类型。

# ext4

格式化分区并将根分区文件类型设置为 ext4

mkfs.vfat -F 32 /dev/nvme0n1p6 # EFI 分区格式化成 vfat 文件系统,F 指定格式化为 FAT32
mkswap /dev/nvme0n1p7 # 制作 swap 分区
mkfs.xfs -f /dev/nvme0n1p8 # 根分区格式化成 xfs 文件系统

格式化后再使用 lsblk -f 确认分区情况

root@archiso ~ # lsblk -f
NAME        FSTYPE   FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
loop0       squashfs 4.0                                                          0   100% /run/archiso/airootfs
sda
└─sda1      vfat     FAT32 ARCH_202509 1821-3E1E
nvme0n1
├─nvme0n1p1 vfat     FAT32             1AA7-9AF2
├─nvme0n1p2
├─nvme0n1p3 ntfs           系统        DC66393C6639192A
├─nvme0n1p4 ntfs           新加卷      7AA23CE1A23CA393
├─nvme0n1p5 ntfs           文档        42BA82FCBA82EC2B
├─nvme0n1p6 vfat     FAT32             F76C-91E2
├─nvme0n1p7 swap     1                 101638bb-e17e-466d-b4d5-29a9c86e4dd9
└─nvme0n1p8 xfs                        1e1a93b5-7111-446c-a354-5a1a444d3cdd

接下来挂载分区

mount /dev/nvme0n1p8 /mnt	# 挂载跟目录分区
mkdir -p /mnt/boot/efi
mount /dev/nvme0n1p6 /mnt/boot/efi	# 挂载 EFI 分区
swapon /dev/nvme0n1p7	# 挂载 swap 分区

挂载完成后, lsblk 查看挂载情况

root@archiso ~ # mount /dev/nvme0n1p8 /mnt
root@archiso ~ # mkdir -p /mnt/boot/efi
root@archiso ~ # mount /dev/nvme0n1p6 /mnt/boot/efi
root@archiso ~ # swapon /dev/nvme0n1p7
root@archiso ~ # lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0 946.7M  1 loop /run/archiso/airootfs
sda           8:0    1  57.6G  0 disk
└─sda1        8:1    1  57.6G  0 part
nvme0n1     259:0    0 476.9G  0 disk
├─nvme0n1p1 259:1    0   300M  0 part
├─nvme0n1p2 259:2    0   128M  0 part
├─nvme0n1p3 259:3    0 149.2G  0 part
├─nvme0n1p4 259:4    0   772M  0 part
├─nvme0n1p5 259:5    0 163.5G  0 part
├─nvme0n1p6 259:14   0   500M  0 part /mnt/boot/efi
├─nvme0n1p7 259:15   0     4G  0 part [SWAP]
└─nvme0n1p8 259:16   0 158.5G  0 part /mnt

# btrfs

格式化分区并将根分区文件类型设置为 btrfs

mkfs.vfat -F 32 /dev/nvme0n1p6 # EFI 分区格式化成 vfat 文件系统,F 指定格式化为 FAT32
mkswap /dev/nvme0n1p7 # 制作 swap 分区
mkfs.btrfs -f /dev/nvme0n1p8 # 根分区格式化成 btrfs 文件系统

格式化后再使用 lsblk -f 确认分区情况

root@archiso ~ # lsblk -f
NAME        FSTYPE   FSVER LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
loop0       squashfs 4.0                                                          0   100% /run/archiso/airootfs
sda
└─sda1      vfat     FAT32 ARCH_202509 1821-3E1E
nvme0n1
├─nvme0n1p1 vfat     FAT32             1AA7-9AF2
├─nvme0n1p2
├─nvme0n1p3 ntfs           系统        DC66393C6639192A
├─nvme0n1p4 ntfs           新加卷      7AA23CE1A23CA393
├─nvme0n1p5 ntfs           文档        42BA82FCBA82EC2B
├─nvme0n1p6 vfat     FAT32             2341-4737
├─nvme0n1p7 swap     1                 101638bb-e17e-466d-b4d5-29a9c86e4dd9
└─nvme0n1p8 btrfs                      cb1a47c8-1e4c-4f49-a106-841f3a0aac65

接下来挂载分区

swap 为交换分区 (本文使用如下方式,后续输出均为此方式下的输出结果),采用如下方式挂载:

** 交换分区 (swap partition)**:是一个独立的、专门用于交换空间的分区。它不需要挂载到文件系统树的某个目录下。只需要用 swapon 命令直接激活即可。系统会直接和这个分区设备进行数据交换。

mount -t btrfs -o compress=zstd /dev/nvme0n1p8 /mnt	# -t 指定文件系统,-o 指定参数,compress=zstd 指定采用透明压缩,压缩算法为 zstd
btrfs subvolume create /mnt/@	# 创建根目录子卷
btrfs subvolume create /mnt/@home	# 创建 home 目录子卷
umount /mnt	# 取消挂载
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p8 /mnt	# 挂载根分区
mount --mkdir -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p8 /mnt/home	# 挂载根分区下 home 目录
mount --mkdir /dev/nvme0n1p6 /mnt/boot	# 挂载 efi 分区
swapon /dev/nvme0n1p7	# 挂载 swap 分区
mount --mkdir /dev/sda1 /mnt/winboot	# 挂载 windows 分区,仅在双系统场景下配置

swap 为交换文件,采用如下方式挂载(该步骤仅为子卷创建和挂载,创建 swap 交换文件参考后续步骤):

mount -t btrfs -o compress=zstd /dev/nvme0n1p8 /mnt	# -t 指定文件系统,-o 指定参数,compress=zstd 指定采用透明压缩,压缩算法为 zstd
btrfs subvolume create /mnt/@	# 创建根目录子卷
btrfs subvolume create /mnt/@home	# 创建 home 目录子卷
btrfs subvolume create /mnt/@swap	# 创建 swap 子卷
umount /mnt	# 取消挂载
mount -t btrfs -o subvol=/@,compress=zstd /dev/nvme0n1p8 /mnt	# 挂载根分区
mount --mkdir -t btrfs -o subvol=/@home,compress=zstd /dev/nvme0n1p8 /mnt/home	# 挂载根分区下 home 目录
mount --mkdir -t btrfs -o subvol=/@swap,compress=zstd /dev/nvme0n1p8 /mnt/swap	# 挂载根分区下 swap 目录
mount --mkdir /dev/nvme0n1p6 /mnt/boot	# 挂载 efi 分区
mount --mkdir /dev/nvme0n1p1 /mnt/winboot	# 挂载 windows 分区,仅在双系统场景下配置
btrfs filesystem mkswapfile --size 4g --uuid clear /mnt/swap/swapfile	# 创建 swap 交换文件
swapon /mnt/swap/swapfile	# 挂载 swap 文件

挂载完成后, lsblkdf -h 查看挂载情况

root@archiso ~ # df -h
Filesystem      Size  Used Avail Use% Mounted on
dev             7.4G     0  7.4G   0% /dev
run             7.5G  9.7M  7.5G   1% /run
efivarfs        148K   98K   46K  69% /sys/firmware/efi/efivars
copytoram        12G  947M   11G   9% /run/archiso/copytoram
cowspace        256M  9.2M  247M   4% /run/archiso/cowspace
/dev/loop0      947M  947M     0 100% /run/archiso/airootfs
airootfs        256M  9.2M  247M   4% /
tmpfs           7.5G     0  7.5G   0% /dev/shm
tmpfs           7.5G     0  7.5G   0% /tmp
tmpfs           1.0M     0  1.0M   0% /run/credentials/systemd-journald.service
tmpfs           1.0M     0  1.0M   0% /run/credentials/systemd-resolved.service
tmpfs           7.5G  2.7M  7.5G   1% /etc/pacman.d/gnupg
tmpfs           1.0M     0  1.0M   0% /run/credentials/systemd-networkd.service
tmpfs           1.0M     0  1.0M   0% /run/credentials/getty@tty1.service
tmpfs           1.5G  8.0K  1.5G   1% /run/user/0
/dev/nvme0n1p8  159G  5.9M  157G   1% /mnt
/dev/nvme0n1p8  159G  5.9M  157G   1% /mnt/home
/dev/nvme0n1p6  500M  4.0K  500M   1% /mnt/boot
/dev/nvme0n1p1  300M   34M  266M  12% /mnt/winboot
root@archiso ~ # lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0 946.7M  1 loop /run/archiso/airootfs
sda           8:0    1  57.6G  0 disk
└─sda1        8:1    1  57.6G  0 part
nvme0n1     259:0    0 476.9G  0 disk
├─nvme0n1p1 259:1    0   300M  0 part /mnt/winboot
├─nvme0n1p2 259:2    0   128M  0 part
├─nvme0n1p3 259:3    0 149.2G  0 part
├─nvme0n1p4 259:4    0   772M  0 part
├─nvme0n1p5 259:5    0 163.5G  0 part
├─nvme0n1p6 259:6    0   500M  0 part /mnt/boot
├─nvme0n1p7 259:7    0     4G  0 part [SWAP]
└─nvme0n1p8 259:8    0 158.5G  0 part /mnt/home
                                      /mnt

# 更新密钥

使用命令 pacman -Sy archlinux-keyring 用以更新密钥。

archlinux-keyring :Arch Linux 的所有官方软件包在发布前,都会用一个唯一的 PGP 密钥进行数字签名。系统上存放可信公钥的集合即为 archlinux-keyring 包。当你用 pacman 安装软件时,它会自动用本地的密钥环验证软件包的签名。如果验证通过,说明软件包可信;如果失败, pacman 会拒绝安装。

# 安装系统软件包

使用 pacstrap 命令将指定的软件包安装到 /mnt 目录下,建议只安装系统必要软件包,其余非必须包在 Chroot 进入新系统后再 [安装软件包](# 安装软件包)。

pacstrap -K /mnt linux-zen linux-firmware linux-headers base vim xfsprogs networkmanager

Note:

  1. 请根据分区类型选择安装 xfsprogs 还是 btrfs-progs
  2. 如果出现 failed to install packages to new root ,先检查包名有没有输错,再尝试更新密钥或者执行 pacman-key --refresh-keys

常见的软件包:

  • linux :标准 Linux 内核,负责管理 CPU、内存、设备驱动、系统调用等。
  • linux-zen :基于 linux 标准内核,优化了桌面用户体验、响应速度等, linuxlinux-zen 任选其一安装。
  • base :最基础的 Arch Linux 系统元包,只包含构成最小可用系统所必需的包。
  • linux-firmware :包含许多硬件设备所需的专有固件文件,许多硬件需要额外的微代码才能正常工作,这些微代码由该包提供。
  • linux-headers :Linux 内核的头文件,用于编译某些需要与内核直接交互的软件或驱动程序,如果你会用到编译内核模块的软件,就需要安装此包。
  • vim :文本编辑器, vi 编辑器的增强版。
  • networkmanager :网络管理服务,管理有线、Wi-Fi、PPPoE、移动宽带等网络连接。
  • usb_modeswitch :USB 网卡服务,部分 USB 无线网卡需要安装。
  • xfsprogs :提供用于管理和维护 XFS 文件系统的工具,分区采用 XFS 文件系统时需要安装。
  • btrfs-progs :提供用于管理和维护 btrfs 文件系统的工具,分区采用 btrfs 文件系统时需要安装。
  • amd-ucode/intel-ucode :微码更新包,根据 CPU 品牌选择安装。

# 生成 fstab 文件

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

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

挂载完成后, cat /mnt/etc/fstab 检查生成的文件是否正确。

# chroot 到新系统

arch-chroot /mnt 进入到新安装的系统:

root@archiso ~ # arch-chroot /mnt
[root@archiso /]#

arch-chroot /mnt 命令的作用是 “切换根目录”。它创建了一个虚拟的环境,将这个新系统的根目录 ( /mnt ) 设置为这个新环境的根目录 ( / ),可以直观的看到由 ~ 到了 / ,表示从 live 环境切换到了 /mnt ,而中括号则是不同 shell 风格不同导致的,仅做提示作用。

# 设置时间和时区

通过以下命令设置时区

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

通过以下命令同步硬件时钟

hwclock --systohc

# 区域和本地化设置

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

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

编辑 /etc/locale.gen ,然后取消掉 en_US.UTF-8 UTF-8en_GB.UTF-8 UTF-8zh_CN.UTF-8 UTF-8 ,接着执行 locale-gen 以生成 locale 信息:

locale-gen

创建 locale.conf 并设置 LANG 变量

echo "LANG=en_GB.UTF-8" > /etc/locale.conf

将系统 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

# 网络配置

如果在 [安装系统软件包](# 安装系统软件包) 时没有安装 networkmanager ,可在此安装

pacman -S  networkmanager

安装完成后,设置网络管理开机启动

systemctl enable NetworkManager

# ssh 服务配置

安装 ssh 服务并设置开机自启动

pacman -S openssh
systemctl enable sshd

编辑并取下以下注释

Port 22
AddressFamily any
ListenAddress 0.0.0.0
ListenAddress ::
#PermitRootLogin prohibit-password	# 允许公钥登录 root,禁止密码认证
PermitRootLogin yes	# 允许通过所有认证方式登录 root

# 设置设备名称和密码

创建 hostname 文件用以指定计算机名称

echo "Amadeus" > /etc/hostname

执行 passwd 命令并输入两次密码

[root@archiso /]# passwd
New password:
Retype new password:
passwd: password updated successfully

# 创建新用户并赋予 sudo 权限

创建一个名为 user1 的用户并给其赋予 sudo 权限

useradd -m user1 # 创建用户名为 user1 的用户,并创建其家目录
passwd user1  # 修改 user1 的密码
# 把 user1 追加到 wheel 组中,让其可以使用 sudo 权限,你可以看到这里加入了很多组,因为这并非生产环境,没有过于要求最小权限
usermod -aG wheel,users,uucp,storage,power,lp,adm,optical,audio,video,network,rfkill,input user1

执行命令 visudo 取消 % wheel ALL=(ALL:ALL) ALL 前的注释。

% wheel ALL=(ALL:ALL) ALL

# 安装启动引导程序

需要安装 Linux 引导加载程序,才能在安装后启动系统,GRUB 是一个比较常见且通用的选择,通过以下命令安装 GRUB,其中 efibootmgr 用于管理 UEFI 启动项, efivar 是操作系统与主板 UEFI 固件中 EFI 变量交互的工具库, os-prober 用于搜索 windows 系统

pacman -S grub efibootmgr os-prober efivar

使用 grub-install 配置启动引导,其中 --target 指定系统架构, --efi-directory 指定系统目录,即挂载的 efi 分区, --bootloader-id 指定启动项名称

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

建议确认挂载的系统目录名称,例如本文中采用 ext4 格式挂载到 /mnt/boot/efi ,则此处为 /boot/efi ,采用 btrfs 格式挂载到 /mnt/boot ,则此处为 /boot

可选:编辑 grub 源文件,用以自定义生成的 grub 配置文件

  • 启用开机日志并且禁用 watchdog,修改第六行:
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog modprobe.blacklist=sp5100_tco"	# amd 用户
GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog modprobe.blacklist=iTCO_wdt"	# intel 用户
  • 去掉文件最后一行的注释,用以启动 os-prober 工具,允许 GRUB 在更新配置时自动扫描并添加其他硬盘上已存在的操作系统,双系统上建议取消注释
GRUB_DISABLE_OS_PROBER=false

设置完成后,生成 grub 的配置文件

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

同样的,根据启动目录配置决定此处是 /boot 还是 /boot/efi

# 取消挂载并重启

使用 exit 退出 change root ,拔掉 U 盘后输入 reboot 重启系统,重启时会自动取消挂载

[root@archiso /]# exit
root@archiso ~ # reboot

# 基础配置

# 网络连接

在开始前,先用 systemctl status NetworkManager 确认网络服务运行状态,连接网络常用 nmclinmtui 命令,后者为 ui 操作,更加便捷,这里主要介绍 nmcli 连接网络的方法:

查看可用的有线网络接口,通输出中 TYPEethernet 的即为有线接口,为 wifi 的即为无线接口。

nmcli device status

# 连接有线网络

有线网络通常默认会自动获取 IP(DHCP),如果未自动连接,可手动操作,假如有线网口为 enp0s3

# 启用接口(如果显示 disconnected)
nmcli device set enp0s3 managed yes
# 创建并激活一个 DHCP 连接(自动获取 IP)
nmcli connection add type ethernet ifname enp0s3 con-name "enp0s3" ipv4.method auto
nmcli connection up "enp0s3"

# 连接无线网络

如果接口状态为 disconnectedunmanaged ,则先启动网口

nmcli radio wifi on  # 开启 WiFi 开关
nmcli device set wlp3s0 managed yes  # 让 NetworkManager 管理接口(替换为你的 WiFi 接口名)

扫描附近的 wifi,输出会显示 WiFi 名称(SSID)、信号强度、加密方式等。

nmcli device wifi list

连接到加密的 WiFi(需要密码),假设 WiFi 名称为 MyWiFi ,密码为 12345678

# 创建并连接到 WiFi(自动使用 DHCP 获取 IP)
nmcli device wifi connect "MyWiFi" password "12345678" ifname wlp3s0
  • 如果接口名唯一,可省略 ifname wlp3s0
  • 连接成功后,会自动保存该连接(后续可直接通过名称激活)

查看已保存的连接:

nmcli connection show

激活指定连接(假设连接名为 MyWiFi ):

nmcli connection up "MyWiFi"

# nmcli 常用命令

断开当前连接

nmcli connection down "连接名称"  # 如 "Wired-Connection" 或 "MyWiFi"

删除已保存的连接

nmcli connection delete "连接名称"

查看当前网络状态

nmcli general status  # 整体网络状态
nmcli connection show --active  # 显示活跃的连接

# 安装软件包

下列出一些常用的软件包,可自行选择,使用 pacman -S 软件包名称 安装

pacman -S sudo git base-devel bash-completion flatpak fastfetch gvfs-smb
  • sudo :授权用户以另一个用户(默认是 root 超级用户)的身份执行命令,superuser do 的缩写。

  • git :分布式版本控制系统,下载和安装 AUR 包的必要工具, yay / paru 等 AUR 助手底层使用 git 来克隆软件仓库。

  • base-devel :包含编译软件所需的开发工具集(gcc、make、git 等),使用 AUR (Arch User Repository) 安装软件,就需要安装此包。

  • bash-completion :为 Bash shell 提供可编程的自动补全功能,即按 Tab 键时自动补全。

  • flatpak :跨 Linux 发行版的通用应用打包 / 运行框架(类似 Windows 的 .exe 或 macOS 的 .dmg )。

  • fastfetch :快速获取硬件、操作系统、网络等关键信息。

  • gvfs-smb :smb 文件共享协议,安装完成后,在文件系统目录中使用 smb://192.168.1.1 即可访问对应的文件共享服务。

# 配置桌面环境

本章节介绍 archlinux 一些常见的桌面环境和配置方法,任选其一即可。

# GNOME

# 安装 GNOME 桌面环境

使用 pacman -S gnome 可以直接安装 gnome 的全量包,或者可以只安装一些必要的包

pacman -S gnome-desktop gdm ghostty gnome-control-center gnome-software
  • gnome-desktop :GNOME 桌面环境的核心基础库和组件。

  • gdm :GNOME Display Manager(GNOME 显示管理器),GNOME 官方的登录管理器(图形化登录界面)。

  • ghostty :跨平台 GPU 加速终端模拟器。

  • gnome-control-center :GNOME 桌面的图形化系统设置面板(类似 Windows 的 “控制面板” 或 macOS 的 “系统设置”)。

  • gnome-software :GNOME 官方的图形化软件商店。

安装时会提示 Repository extra 1) jack2 2) pipewire-jack ,此时选择 2

这里的 1 和 2 是系统对 jack 音频框架依赖的不同实现,1. 传统的 JACK 音频连接套件,广泛用于专业音频制作场景。2. PipeWire 项目提供的 JACK 兼容层,兼容性更好,许多 Linux 发行版将其作为默认音频系统。

安装完成后,A 卡(AMD)用户可以直接设置开机自启并立即启动桌面环境

systemctl enable gdm --now

N 卡用户需要安装显卡驱动,首先安装 linux 头文件 linux-headers

pacman -S linux-headers

参考 NVIDIA - ArchWiki 选择显卡驱动,在 搜索页 搜索你的显卡名称并找到对应的类别,以 4060 为例,其所在的类为 Ada Lovelace

参考图表确认 4060 所对应的的显卡驱动

pacman -S nvidia nvidia-utils nvidia-settings

安装完成后 reboot 重启系统,设置开机自启并立即启动桌面环境

systemctl enable gdm --now
更新于 阅读次数