Arch Linux安装教程
cbowen
本文距离上次更新已过去 0 天,部分内容可能已经过时,请注意甄别。

本文以 UEFI + GPT + 单硬盘 + 非加密 + Btrfs + GRUB 为例。若使用 Legacy BIOS、LUKS 加密、多硬盘、Secure Boot 或其他文件系统,需要按对应 ArchWiki 页面调整分区、initramfs 和引导配置。

设置live环境字体(可选)

1
setfont ter-132b

启动ssh服务(可选)

1
2
passwd
systemctl start sshd.service

网络设置

  1. 有线连接

    1
    ping www.archlinux.org
  2. 无线连接
    通过 iwctl连接无线网

    1
    2
    3
    4
    5
    6
    iwctl
    device list
    station wlan0 scan
    station wlan0 get-networks
    station wlan0 connect SSID
    quit
  3. 检查系统时间

    1
    timedatectl

磁盘分区

  1. 利用cfdisk给磁盘分区

    本文示例分区如下,实际安装前需要确认自己的磁盘名称和容量。

    挂载点 分区 大小建议 类型
    /efi /dev/nvme0n1p1 256MiB EFI System
    / /dev/nvme0n1p2 剩余空间 Linux filesystem
    1
    2
    3
    lsblk -f # 查看逻辑驱动器详情
    cfdisk /dev/nvme0n1 # 修改磁盘分区布局
    fdisk -l /dev/nvme0n1 # 查看修改后的分区
  2. 格式化相关分区

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # EFI 全新安装则格式化 EFI 分区;如果是和 Windows 共用已有 EFI 分区则只挂载不格式化
    mkfs.vfat -F 32 /dev/nvme0n1p1
    fatlabel /dev/nvme0n1p1 EFI

    # system
    mkfs.btrfs -f -L ARCH /dev/nvme0n1p2 # 格式化
    mount -t btrfs /dev/nvme0n1p2 /tmp
    btrfs subvolume create /tmp/@ # 挂载状态下创建子卷
    btrfs subvolume create /tmp/@home # 挂载状态下创建子卷
    btrfs subvolume create /tmp/@var_log
    btrfs subvolume create /tmp/@var_cache
    btrfs subvolume create /tmp/@tmp
    btrfs subvolume create /tmp/@swap
    umount /tmp
  3. 挂载相关分区

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    mount -o subvol=@,compress=zstd:3 /dev/nvme0n1p2 /mnt
    mkdir /mnt/home
    mount -o subvol=@home,compress=zstd:3 /dev/nvme0n1p2 /mnt/home
    mkdir -p /mnt/var/log
    mount -o subvol=@var_log,compress=zstd:3 /dev/nvme0n1p2 /mnt/var/log
    mkdir -p /mnt/var/cache
    mount -o subvol=@var_cache,compress=zstd:3 /dev/nvme0n1p2 /mnt/var/cache
    mkdir /mnt/tmp
    mount -o subvol=@tmp,compress=zstd:3 /dev/nvme0n1p2 /mnt/tmp
    chmod 1777 /mnt/tmp
    mkdir /mnt/efi
    mount /dev/nvme0n1p1 /mnt/efi
    mkdir /mnt/swap
    mount -o subvol=@swap /dev/nvme0n1p2 /mnt/swap

安装系统

  1. 换源

    1
    nvim /etc/pacman.d/mirrorlist
    1
    Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
  2. 安装基础包

    1
    pacstrap -K /mnt base linux linux-firmware-intel base-devel neovim btrfs-progs dosfstools networkmanager sudo man-db man-pages texinfo sof-firmware
  3. 生成分区表

    1
    2
    genfstab -U /mnt >> /mnt/etc/fstab
    cat /mnt/etc/fstab
  4. 进入新系统

    1
    arch-chroot /mnt

设置时区

1
2
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock --systohc

windows和linux时间同步,将windows时间同步为UTC,并手动禁用自动更新时间

1
reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\TimeZoneInformation" /v RealTimeIsUniversal /d 1 /t REG_DWORD /f

设置语言

1
2
3
4
nvim /etc/locale.gen # 取消注释 en_US.UTF-8 UTF-8  zh_CN.UTF-8 UTF-8
locale-gen

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

设置主机名

1
echo laptop-arch > /etc/hostname

设置hosts

1
nvim /etc/hosts
1
2
3
127.0.0.1   localhost
::1 localhost
127.0.1.1 laptop-arch.localdomain laptop-arch

生成initramfs

普通睡眠 suspend 通常无需额外配置;若需要休眠 hibernate 或混合睡眠,则需要配置 swap 的恢复位置。使用 busybox-based initramfs 时,在 /etc/mkinitcpio.confHOOKS 中添加 resume 并放在 udev 之后;使用 systemd-based initramfs 时,通常不需要额外添加 resume hook。

安装微码后,确认 HOOKS 中包含 microcode,然后重新生成 initramfs。

1
2
3
4
5
6
pacman -S intel-ucode efibootmgr
# 或 AMD:
pacman -S amd-ucode efibootmgr

nvim /etc/mkinitcpio.conf
mkinitcpio -P

创建swap file

1
2
3
btrfs filesystem mkswapfile --size 4g --uuid clear /swap/swapfile
swapon /swap/swapfile
nvim /etc/fstab # 底部添加 /swap/swapfile none swap defaults 0 0

若需要休眠,记录 Btrfs 分区的 UUID 和 swapfile 的恢复偏移量,后面写入 GRUB 内核参数。

1
2
findmnt -no UUID -T /swap/swapfile
btrfs inspect-internal map-swapfile -r /swap/swapfile

设置root用户密码

1
passwd

安装引导程序

设备开机需利用引导程序来进行加载,可选 grub2(需自行安装) 或systemd-boot(systemd自带)

1
2
3
4
5
6
pacman -S grub os-prober # os-prober 可检测已安装的win系统
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB
ls -la /dev/disk/by-uuid
nvim /etc/default/grub # 若需要休眠,设置 GRUB_CMDLINE_LINUX_DEFAULT="resume=UUID=xx resume_offset=xx"
nvim /etc/default/grub # 若需要检测 Windows,设置 GRUB_DISABLE_OS_PROBER=false
grub-mkconfig -o /boot/grub/grub.cfg

新建用户

1
2
3
useradd -mG wheel mnsd
passwd mnsd
nvim /etc/sudoers # 赋予wheel组用户sudo权限

取消挂载分区

1
2
3
4
systemctl enable NetworkManager.service
exit
umount -R /mnt
reboot

重新启用网络

如果安装时没有启用 NetworkManager.service,启动网络服务

1
sudo systemctl enable --now NetworkManager.service

连接wi-fi

1
nmtui

测试网络连通

1
ping www.archlinux.org

添加快照支持

安装 snapper

1
sudo pacman -S snapper

创建配置文件

1
sudo snapper -c root create-config /

新建快照

1
sudo snapper -c root create --description "install done!"

安装必要软件

  1. 添加 archlinuxcn

    1
    sudo nvim /etc/pacman.conf # 去掉color注释,添加archlinuxcn源
    1
    2
    [archlinuxcn]
    Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
    1
    2
    sudo pacman -Sy archlinuxcn-keyring
    sudo pacman -Syu

    签名密钥失败

    新系统若无法安装 archlinuxcn-keyring,优先手动信任 archlinuxcn 的 key,再重新安装 keyring。

    1
    2
    sudo pacman-key --lsign-key "farseerfc@archlinux.org"
    sudo pacman -Sy archlinuxcn-keyring

    PGP签名错误

    这个错误表明 archlinuxcn-keyring包的PGP签名受到了信任级别的限制。在Arch Linux系统上,为了确保软件包的完整性和安全性,软件包管理器(例如Pacman)使用PGP签名进行验证。在这种情况下,签名的信任级别被认为是边缘信任(marginal trust)。

    解决方法:

    1. 手动信任 archlinuxcn key
      1
      sudo pacman-key --lsign-key "farseerfc@archlinux.org"
    2. 重新安装 keyring 并更新系统
      1
      2
      sudo pacman -Sy archlinuxcn-keyring
      sudo pacman -Syu
    3. 仍失败时再手动导入对应密钥
      1
      gpg --recv-keys <密钥ID>
  2. 安装桌面环境

    下面三种方案任选其一即可,不要同时启用多个显示管理器。

    GNOME

    1
    2
    sudo pacman -S gnome kitty
    sudo systemctl enable --now gdm

    KDE Plasma

    1
    2
    sudo pacman -S plasma-meta kde-applications-meta sddm konsole dolphin
    sudo systemctl enable --now sddm

    niri

    niri 是 Wayland 合成器,不是完整桌面环境。这里使用 dms-shell-niri 提供一套相对完整的桌面 shell。

    1
    2
    3
    4
    5
    6
    sudo pacman -S niri xwayland-satellite alacritty xdg-desktop-portal-gnome xdg-desktop-portal-gtk
    sudo pacman -S paru
    paru -S dms-shell-niri
    sudo pacman -S xwayland-satellite xdg-desktop-portal-gtk xdg-desktop-portal-gnome
    sudo pacman -S dgop matugen i2c-tools cava qt6-multimedia-ffmpeg
    systemctl --user add-wants niri.service dms

    安装 display manager

    1
    2
    3
    paru -S greetd-dms-greeter-git
    dms greeter enable
    dms greeter sync

    dsearch

    1
    2
    paru -S dsearch-bin
    dsearch index generate

    environment variables

    1
    nvim ~/.config/niri/config.kdl
    1
    2
    3
    4
    5
    environment {
    QT_QPA_PLATFORM "wayland"
    QT_QPA_PLATFORMTHEME "gtk3"
    ELECTRON_OZONE_PLATFORM_HINT "auto"
    }
  3. 安装必要软件及驱动

    官方仓库:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    sudo pacman -S adobe-source-han-serif-otc-fonts # 思源宋体
    sudo pacman -S noto-fonts-emoji # emoji表情
    sudo pacman -S bluez bluez-utils # 蓝牙

    sudo pacman -S zsh # shell
    sudo pacman -S proxychains-ng

    sudo pacman -S ffmpeg vlc
    sudo pacman -S flameshot # 截屏
    sudo pacman -S obs-studio # 录屏
    sudo pacman -S ffmpegthumbnailer # 视频缩略图依赖

    sudo pacman -S fcitx5 fcitx5-chinese-addons fcitx5-configtool

    sudo pacman -S yazi tree
    sudo pacman -S drawio-desktop # 流程图

    archlinuxcn 或 AUR:

    1
    2
    3
    4
    5
    sudo pacman -S paru # AUR助手
    paru -S clash-for-windows
    paru -S typora
    paru -S google-chrome-stable
    paru -S drawio-desktop-bin

备份与恢复

1
2
3
4
5
sudo pacman -Qqen > packages-repository.txt # 备份官方仓库安装的包
sudo pacman -Qqem > packages-AUR.txt # 备份AUR仓库安装的包
sudo pacman --needed -S - < packages-repository.txt
cat packages-AUR.txt | xargs paru -S --needed --noconfirm
sudo pacman -Rns $(pacman -Qdtq) # 删除无用包;若没有输出则无需执行
 评论
评论插件加载失败
正在加载评论插件