Arch Linux 双系统安装指南

本指南旨在为希望在现有 Windows 系统上安装 Arch Linux 的用户,提供一个清晰、详尽的命令行安装流程。

参考: https://github.com/shorinkiwata/archlinux-gnome-btrfs-full-installation-guide

Arch Linux 双系统安装指南 (Btrfs 文件系统 & UEFI 模式)

本指南旨在为希望在现有 Windows 系统上安装 Arch Linux 的用户,提供一个清晰、详尽的命令行安装流程。本教程将采用 Btrfs 作为主文件系统,以利用其快照等现代化功能,并基于 UEFI 启动模式。

准备工作:制作启动盘与 BIOS 设置

1. 禁用 Windows 快速启动

重要步骤:为了防止 Windows 锁定磁盘导致 Linux 无法挂载或数据损坏,必须先禁用“快速启动”。

  1. 进入 Windows,打开控制面板 -> 硬件和声音 -> 电源选项
  2. 点击“选择电源按钮的功能”。
  3. 点击“更改当前不可用的设置”(需要管理员权限)。
  4. 取消勾选“启用快速启动 (推荐)”。
  5. 点击“保存修改”。

2. 制作启动盘 (推荐 Ventoy)

推荐使用 Ventoy 制作启动盘,它的优势在于无需反复格式化 U 盘,只需将 ISO 镜像文件复制到 U 盘即可。

  1. 下载 Ventoy: 访问 Ventoy 官网 下载对应系统的安装包(Windows 下载 .zip,Linux 下载 .tar.gz)。
  2. 安装 Ventoy 到 U 盘:
    • 插入 U 盘(注意:U 盘会被格式化,请备份数据)。
    • 解压并运行 Ventoy2Disk.exe
    • 选择你的 U 盘设备,点击“安装”。
  3. 放入镜像:
    • 安装完成后,U 盘会变成一个名为 Ventoy 的磁盘。
    • 将下载好的 Arch Linux ISO 镜像文件直接复制到这个磁盘中。

3. BIOS/UEFI 设置

进入 BIOS 是安装 Linux 的第一道门槛。不同品牌的电脑进入 BIOS 的热键不同。

常见品牌 BIOS 启动热键:

品牌 启动菜单 (Boot Menu) 进入 BIOS 设置
联想 (Lenovo) F12 或 Fn+F12 (部分需捅 Nova 孔) F2 或 Fn+F2
戴尔 (Dell) F12 F2
惠普 (HP) F9 F10
华硕 (ASUS) Esc 或 F8 F2 或 Del
宏碁 (Acer) F12 F2
微星 (MSI) F11 Del
技嘉 (Gigabyte) F12 Del
ThinkPad F12 F1
微软 Surface 按住音量+键再按电源键 -

BIOS 设置关键点:

  1. Secure Boot (安全启动): 必须设置为 Disabled (关闭)。Arch Linux 的安装介质默认不支持安全启动。
  2. SATA Mode: 建议设置为 AHCI (如果是 RAID/RST 模式,Linux 可能无法识别硬盘)。注意:修改此项可能导致现有的 Windows 蓝屏,需先在 Windows 中配置进入安全模式后再改。
  3. Boot Order (启动顺序): 将 USB 设备调整到第一位,或直接使用启动菜单选择 U 盘启动。

一、 准备阶段:Live 环境配置

成功从 U 盘启动后,你将看到 Arch Linux 的安装菜单,选择第一项进入 Live 环境。

1. 调整终端字体 (可选)

如果默认的终端字体过小,可以使用以下命令放大字体,以获得更好的视觉体验。

setfont ter-132b

2. 连接到无线网络

Arch Linux 的安装过程需要全程联网。

# 启动 iwctl 交互式网络配置工具
iwctl

# 列出所有网络设备,通常无线网卡名为 wlan0
device list

# 扫描周边的 Wi-Fi 网络
station wlan0 scan

# 列出扫描到的 Wi-Fi 网络
station wlan0 get-networks

# 连接到你的 Wi-Fi (将 “你的wifi名字” 替换为实际名称)
# 系统会提示你输入密码
station wlan0 connect "你的wifi名字"

# 连接成功后,输入 exit 退出 iwctl

3. 验证网络连接

使用 ping 命令测试网络是否通畅。

ping baidu.com
# 看到有数据返回后,按 Ctrl + C 停止

4. 远程 SSH 连接 (可选,强烈推荐)

为了方便地复制粘贴命令,你可以在 Live 环境中启动 SSH 服务,然后通过局域网内的另一台电脑连接进来进行操作。

# 1. 为 root 用户创建临时密码
passwd

# 2. 启动 SSH 服务
/usr/bin/sshd  
# 或者使用 
systemctl start sshd

# 3. 获取 Live 环境的 IP 地址
ip a

# 4. 在局域网内另一台设备上通过 SSH 连接 (将 ip 替换为上一步获取到的地址)
ssh root@ip

5. 验证 UEFI 启动模式

确认系统是否以 UEFI 模式启动。如果此命令返回 64,则表示为 UEFI 启动。如果文件不存在,则可能是传统的 Legacy BIOS 启动。

cat /sys/firmware/efi/fw_platform_size

6. 配置 Pacman 镜像源

官方的 reflector 服务自动配置镜像可能耗时且不稳定。我们推荐手动配置,优先使用速度更快的国内镜像源。

# 停止 reflector 自动配置服务
systemctl stop reflector.service

# 【推荐】自动获取中国区的镜像并覆盖现有列表
# 这条命令会自动拉取最新的中国区 HTTPS 镜像列表,并取消服务器行的注释
curl -L 'https://archlinux.org/mirrorlist/?country=CN&protocol=https' | sed 's/^#Server/Server/' > /etc/pacman.d/mirrorlist

# 或者,你也可以手动编辑镜像文件,将中国的镜像服务器地址 (Server = ...) 移动到文件顶部
# nano /etc/pacman.d/mirrorlist

# 验证镜像是否已成功替换
cat /etc/pacman.d/mirrorlist

二、 磁盘分区 (高危操作)

⚠️ 警告:磁盘分区是高风险操作,请务必在操作前备份所有重要数据,并仔细确认目标磁盘和分区!本操作将删除目标分区上的所有数据。

1. 识别目标磁盘

使用 lsblk 命令查看当前系统的磁盘和分区情况,准确识别出你为 Arch Linux 预留的空闲分区。

lsblk

示例输出分析:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0         7:0    0 942.7M  1 loop /run/archiso/airootfs
sda           8:0    0 117.2G  0 disk      ---------------->  Ventoy 启动 U 盘
├─sda1        8:1    0 117.2G  0 part
│ ├─ventoy  253:0    0   1.3G  1 dm
│ └─sda1    253:1    0 117.2G  0 dm
└─sda2        8:2    0    32M  0 part
nvme0n1     259:0    0 953.9G  0 disk      ----------------->  本例中要安装系统的固态硬盘
├─nvme0n1p1 259:1    0   300M  0 part      ----------------->  Windows EFI 分区
├─nvme0n1p2 259:2    0    16M  0 part
├─nvme0n1p3 259:3    0   200G  0 part      ----------------->  Windows C盘
├─nvme0n1p4 259:4    0 393.7G  0 part      ----------------->  Windows D盘
└─nvme0n1p5 259:5    0 359.9G  0 part      ----------------->  为 Arch Linux 预留的分区 (原E盘)

⚠️ 请根据你自己的实际情况调整,你的磁盘代号可能不是 nvme0n1

2. 使用 cfdisk 进行分区

我们将使用 cfdisk 这个相对友好的分区工具,删除预留分区,并重新创建 Linux 所需的新分区。

# 启动 cfdisk,目标是我们的主硬盘
cfdisk /dev/nvme0n1

进入 cfdisk 界面后,通过键盘方向键进行操作:

  1. 删除旧分区: 选中你预留的那个分区 (本例中为 /dev/nvme0n1p5),选择 [Delete] 并回车。此时该空间会变为 Free space

  2. 创建新分区: 我们将在这块 Free space 上创建三个新分区。

    • EFI 分区:

      • 选中 Free space,选择 [New]
      • 输入分区大小 1G,回车。
      • 选择 [Type],找到并设置为 EFI System
    • Swap 分区:

      • 再次选中剩余的 Free space,选择 [New]
      • 输入分区大小 8G (可根据你的内存大小调整),回车。
      • 选择 [Type],找到并设置为 Linux swap
    • 根 (/) 分区:

      • 最后一次选中剩余的 Free space,选择 [New]
      • 直接回车,使用所有剩余空间。
      • [Type] 保持默认为 Linux filesystem 即可。
  3. 写入更改: 确认分区表无误后,选择 [Write],输入 yes 并回车。如果操作有误,选择 [Quit] 退出重来。

分区完成后的最终布局示例:

    Device                 Start          End      Sectors      Size Type
    /dev/nvme0n1p1            40       614439       614400      300M EFI System
    /dev/nvme0n1p2        614440       647207        32768       16M Microsoft reserved
    /dev/nvme0n1p3        649216    420081663    419432448      200G Microsoft basic data
    /dev/nvme0n1p4     420081664   1245677567    825595904    393.7G Microsoft basic data
    /dev/nvme0n1p5    1245677568   1247774719      2097152        1G EFI System
    /dev/nvme0n1p6    1247774720   1264551935     16777216        8G Linux swap
>>  /dev/nvme0n1p7    1264551936   2000408575    735856640    350.9G Linux filesystem

三、 格式化与挂载 (Btrfs 子卷)

1. 格式化新分区

分区完成后,需要对它们进行格式化,写入相应的文件系统。

# 将 EFI 分区 (p5) 格式化为 FAT32
mkfs.fat -F 32 /dev/nvme0n1p5

# 初始化 Swap 分区 (p6)
mkswap /dev/nvme0n1p6

# 将根分区 (p7) 格式化为 Btrfs
mkfs.btrfs -f /dev/nvme0n1p7

2. 创建并挂载 Btrfs 子卷

使用子卷可以更灵活地管理系统快照。 下面举例创建了多个子卷, 最简实际只可以只创建两个子卷即可 @ 和 @home

# 1. 挂载顶层 Btrfs 分区
mount /dev/nvme0n1p7 /mnt

# 2. 在顶层创建子卷
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@root
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@pkg
btrfs subvolume create /mnt/@tmp
btrfs subvolume create /mnt/@cache
btrfs subvolume create /mnt/@srv

# 查看子卷创建信息
btrfs subvolume list /mnt

# 3. 卸载顶层分区
umount -R /mnt

# 4. 以正确的挂载选项重新挂载所有子卷
# noatime, discard=async, compress=zstd 是针对 SSD 和 Btrfs 的常用优化选项
mount -o subvol=@,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt

# 5. 创建挂载点目录
mkdir -p /mnt/{home,root,srv,boot,var/tmp,var/log}
mkdir -p /mnt/var/cache/pacman/pkg

# 6. 逐个挂载其他子卷
mount -o subvol=@home,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt/home
mount -o subvol=@root,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt/root
mount -o subvol=@log,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt/var/log
mount -o subvol=@pkg,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt/var/cache/pacman/pkg
mount -o subvol=@cache,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt/var/cache
mount -o subvol=@srv,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt/srv
mount -o subvol=@tmp,noatime,discard=async,compress=zstd /dev/nvme0n1p7 /mnt/var/tmp

# 7. (可选) 对日志、包缓存等目录禁用写时复制(CoW)以提升性能
chattr +C /mnt/var/log
chattr +C /mnt/var/cache/pacman/pkg

# 8. 挂载 EFI 分区并启用 Swap
mount /dev/nvme0n1p5 /mnt/boot  --mkdir
swapon /dev/nvme0n1p6

完成后,再次使用 lsblk 检查所有分区和挂载点是否正确。

四、 安装核心系统

1. 安装基础包

使用 pacstrap 脚本将系统基础包、内核、固件和一些常用工具安装到 /mnt

# 同步包数据库
pacman -Syy

# 执行安装 (请根据你的 CPU 厂商选择 amd-ucode 或 intel-ucode)
pacstrap -K /mnt base base-devel linux linux-headers linux-firmware neovim vim btrfs-progs amd-ucode

linux-lts 和 linux-lts-headers 一一对应
可以选择合适的内核
linux  linux-headers
linux-zen linux-zen-headers

2. 生成 fstab 文件

fstab 文件定义了系统启动时如何挂载分区。

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

建议: cat /mnt/etc/fstab 检查一下生成的文件,确保所有分区和挂载选项都正确无误。

五、 配置新系统 (Chroot 环境)

1. Chroot 到新系统

arch-chroot 命令可以将我们的操作环境从 Live USB 切换到刚刚安装好的新系统中。

arch-chroot /mnt

2. 配置 Btrfs 启动模块

此步至关重要! 为了让系统启动时能识别 Btrfs 文件系统,我们需要将 btrfs 模块添加到 initramfs (初始 RAM 文件系统) 中。

# 编辑 mkinitcpio 配置文件
TERM=xterm-256color # 可能会有使用vim 小问题
# nano /etc/mkinitcpio.conf
# 找到 MODULES=() 这一行,在括号中添加 btrfs
# 修改后应为: MODULES=(btrfs)

# 保存文件后,重新生成 initramfs
mkinitcpio -P

3. 时区与语言

# 设置时区为上海
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

# 将硬件时钟与系统时钟同步
hwclock --systohc

# 配置语言环境
# 使用 sed 命令自动取消 en\_US.UTF-8 和 zh\_CN.UTF-8 的注释
sed -i.bak -E '/^#\s*(en_US.UTF-8|zh_CN.UTF-8)/s/^#\s*//' /etc/locale.gen
# 生成 locale
locale-gen
# 1. 创建 locale 配置文件,将英语设置为默认语言以避免 TTY 乱码
echo 'LANG=en_US.UTF-8' >  /etc/locale.conf


# 2.(可选) 或者向我一样处理
echo 'LANG=zh_CN.UTF-8' >  /etc/locale.conf
vim /etc/profile.d/tty-lang.sh 
# 写入以下内容

 cat > /etc/profile.d/tty-lang.sh << EOF
> #!/bin/sh
# 仅在 TTY 中强制使用英文环境
if [ "$TERM" = "linux" ]; then
    export LANG=en_US.UTF-8
    export LC_ALL=en_US.UTF-8
fi
> EOF

4. 主机名与 Root 密码

# 设置你的主机名
echo 'archlinux-pc' > /etc/hostname

# 设置 Root 用户密码
passwd

5. 安装和配置引导加载程序 (GRUB)

# 安装 GRUB, efibootmgr 和 os-prober (用于检测 Windows)
pacman -S grub efibootmgr os-prober sudo

# 安装 GRUB 到 EFI 分区
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=Arch

# 配置 GRUB
# 编辑 /etc/default/grub 文件
# vim /etc/default/grub
#
# 1. 重要: 找到 `#GRUB_DISABLE_OS_PROBER=false` 这一行,去掉前面的 `#` 号,以允许 GRUB 检测并添加 Windows 启动项。
# 2. (可选) 找到 `GRUB_CMDLINE_LINUX_DEFAULT` 行,可以去掉 "quiet" 参数,并在需要时添加 `nowatchdog modprobe.blacklist=sp5100_tco` (AMD) 或 `modprobe.blacklist=iTCO_wdt` (Intel) 来解决某些硬件的死锁问题。

# 生成最终的 GRUB 配置文件
grub-mkconfig -o /boot/grub/grub.cfg

6. 创建普通用户

不建议长期使用 root 用户。我们来创建一个日常使用的管理员账户。

# 创建一个名为 snemc 的用户,并将其加入 wheel 管理员组 (-G wheel)
# 将 snemc 替换为你自己的用户名
useradd -m -G wheel -s /bin/bash snemc

# 为新用户设置密码
passwd snemc

# 授权 wheel 组用户使用 sudo
visudo
# visudo 会打开 /etc/sudoers 文件,找到下面这一行:
# # %wheel ALL=(ALL:ALL) ALL
# 去掉行首的 # 号,保存退出即可。

7. 安装并启用必要服务

# 安装网络管理器和 fish (一个用户友好的 shell)
pacman -S networkmanager fish 

# 设置开机自启网络管理器服务
systemctl enable NetworkManager.service

# 如果在虚拟机安装,建议安装并启用ssh服务
pacman -S openssh 
systemctl enable sshd   

8. 启用常用home目录

# 切换 常规用户
su snemc

# 安装 xdg-user-dirs 包
sudo pacman -S xdg-user-dirs

# 创建 常用目录
LC_ALL=C.UTF-8 xdg-user-dirs-update --force

六、 重启与首次登录

1. 退出并重启

所有配置已完成,现在可以退出 chroot 环境,卸载所有分区,并重启电脑。

# 退出 chroot
exit

# 卸载所有分区
umount -R /mnt

# 重启系统,并及时拔掉 U 盘
reboot

2. 进入新系统

重启后,进入 BIOS/UEFI 启动菜单,选择 Arch 作为启动项。你应该能看到 GRUB 菜单,其中包含了 Arch Linux 和 Windows 的选项。使用你创建的普通用户名和密码登录。

3. 在 TTY 环境中连接网络

登录新系统后,你将进入 TTY 终端环境。使用 nmcli 工具连接网络:

# 查看网络设备状态
nmcli dev status

# 开启 Wi-Fi
nmcli radio wifi on

# 扫描并连接到你的 Wi-Fi (将 <network-ssid> 替换为你的 Wi-Fi 名称)
sudo nmcli --ask dev wifi connect <network-ssid>

4. 添加 Arch Linux CN 源

Arch Linux CN 社区源提供了许多官方仓库没有的常用软件,如中文输入法、WPS Office 等。

# 编辑 pacman.conf 文件
sudo vim /etc/pacman.conf

# 在文件末尾添加以下两行:
[archlinuxcn]
Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch

# 保存文件后,同步数据库并安装 archlinuxcn-keyring 以导入 GPG 密钥
sudo pacman -Syyu
sudo pacman -S archlinuxcn-keyring

# 安装 paru (一个好用的 AUR 助手)
sudo pacman -S paru

恭喜! 至此,你已经完成了一个纯净、配置好 Btrfs 的 Arch Linux 系统的安装。接下来,你可以根据自己的需求安装桌面环境、显卡驱动以及各类应用软件了。

Interaction

读完之后

分享海报
Interaction

评论区