ArchLinux-install

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