Skip to content

安装 Arch ​

背景 ​

大环境往信创发展,Windows/MacOS 摆烂,都在指引我们走向 Linux。

为什么 ​

针对大环境的情况,我们可以选择 debian 系的 Linux,往往有更快的国产软件包支持。

针对普适性的情况,可以选择 Arch,有更新的软件包支持,缩短 bug 留存时间。同时很快移植 debian 系中的国产软件包。

Windows 的问题

  1. 莫名其妙卡顿,但系统资源占用率低
  2. 终端默认使用 GBK 编码,导致程序执行容易乱码,如 go、zig 执行

Linux 的问题

  1. 缺少专有软件(寻找替代品含网页版,创造替代品)
  2. 遇到问题难以解决,往往需要对系统有一定的熟悉度(问 GPT)

如何安装 ​

○ 准备 ​

  1. 预留空闲分区
  2. 下载 arch iso 镜像,存放至 ventoy 移动盘中
  3. 重启,按 f12 进入 安装

适用性

注意适用情况

难点

  1. 区分安装环境与结果环境
  2. 区分终端脚本与交互脚本(iwctl、wim 等)
  3. 区分硬盘、分区、卷、子卷

○ 连接 wifi ​

sh
# 连接 wifi
# 忽略下方 [iwd],仅表示在 iwctl 中执行
iwctl
[iwd] device list
[iwd] exit
rfkill list
ip link set wlan0 up
# 如果看到 Operation not possible due to RF-kill,执行
rfkill unblock wifi
# 扫描
iwctl
[iwd] station wlan0 scan
[iwd] station wlan0 get-networks
[iwd] station wlan0 connect ${wifi_name}
[iwd] exit
ping www.bilibili.com

○ 更新系统时钟 ​

sh
# 更新系统时钟
timedatectl set-ntp true
timedatectl status

○ 更新镜像源 ​

sh
# 更新镜像源
reflector -c China --sort score --save /etc/pacman.d/mirrorlist
# 去掉一些经验中比较慢的
vim /etc/pacman.d/mirrorlist

# 禁用 reflector 自动更新,避免后续镜像被替换
systemctl stop reflector.service
systemctl status reflector.service

#(可选)pacman 并行下载 + 颜色
vim /etc/pacman.conf
# 删除 Misc options 下的 Color 和 ParallelDownloads 前面的注释

○ 分区 ​

sh
# 检查 UEFI
ls /sys/firmware/efi/efivars

# 查看分区
# 查看硬盘及分区,概览
lsblk
# 查看硬盘及分区,详情
fdisk -l
# 查看当前挂载情况
df -h

# cfdisk 分区
cfdisk /dev/nvme0n1
# /dev/nvme0n1p1,EFI System,1G。已有则无需创建
# /dev/nvme0n1p2,free space -> new -> type swap -> 8G,用于休眠
# /dev/nvme0n1p3,free space -> new -> type Linux FileSystem
# write -> quit

# 格式化 EFI 分区,如双系统则不用
mkfs.fat -F32 /dev/nvme0n1p1
# 格式化 swap 分区
mkswap /dev/nvme0n1p2
# 在上一步新建的默认分区中,创建 btrfs 分区(注意硬盘分区正确)
# 格式化 btrfs 分区
mkfs.btrfs -L ${分区名称 myArch} /dev/nvme0n1p3

# 挂载 btrfs 分区并创建子卷
mount -t btrfs -o compress=zstd /dev/nvme0n1p3 /mnt
# 检查挂载情况
df -h

# 创建子卷
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@snapshots
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@cache
# 检查子卷
btrfs subvolume list -p /mnt

# 卸载 btrfs 分区
umount /mnt

# 重新挂载 btrfs 文件系统,有序,先根目录再子卷
mount -t btrfs -o subvol=/@,compress=zstd /nvme0n1p3 /mnt
mkdir -p /mnt/home
mount -t btrfs -o subvol=/@home,compress=zstd /nvme0n1p3 /mnt/home
mkdir -p /mnt/.snapshots
mount -t btrfs -o subvol=/@snapshots,compress=zstd /nvme0n1p3 /mnt/.snapshots
mkdir -p /mnt/var/log
mount -t btrfs -o subvol=/@log,compress=zstd /nvme0n1p3 /mnt/var/log
mkdir -p /mnt/var/cache
mount -t btrfs -o subvol=/@cache,compress=zstd /nvme0n1p3 /mnt/var/cache
# 同时挂载 EFI 分区
mkdir /mnt/boot
mount /dev/nvme0n1p1 /mnt/boot
# 同时挂载 swap 分区
swapon /dev/nvme0n1p2

# 检查
df -h
free -h

# 基于当前挂载生成系统自动挂载信息
genfstab -U /mnt > /mnt/etc/fstab
cat /mnt/etc/fstab

○ 预装 arch ​

预备

必须先完成上一步“重新挂载 btrfs 文件系统”的操作

sh
# 往挂载位置安装基础包,\ 表示可忽略的换行(提升可读性)
pacstrap /mnt \
base base-devel linux linux-firmware btrfs-progs \
networkmanager vim sudo git \
noto-fonts-cjk noto-fonts-emoji

# 安装微码,或 intel-ucode
pacstrap /mnt amd-ucode

○ 设置 arch ​

预备

必须先完成上一步“预装 arch”的操作

sh
# 切换到结果环境(最终系统环境 arch)
arch-chroot /mnt

# 添加 hostname
echo '${hostname}' -> /etc/hostname

# 添加 hosts,host 中间用 tab 而不是空格
vim /etc/hosts
127.0.0.1 localhost
::1 localhost
127.0.1.1 myarch.localdomain myarch

# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 设置硬件时间
hwclock --systohc

# 设置语言
vim /etc/locale.gen
# 放开 en_US.UTF-8.UTF-8, zh_CN.UTF-8.UTF-8
locale-gen
# 不推荐系统中文,避免 tty 乱码
echo 'LANG=en_US.UTF-8' > /etc/locale.conf

# root 密码
passwd root

# 添加新用户
useradd -m -G wheel -s /bin/bash ${user}
passwd ${user}

# wheel 用户组使用 sudo 无需密码
visudo
%wheel ALL=(ALL:ALL) NOPASSWD: ALL

# 安装引导程序
pacman -S grub efibootmgr os-prober
# 安装 grub 到 EFI 分区
grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
# 编辑 grub
vim /etc/default/grub
# 修改 GRUB_CMDLINE_LINUX_DEFAULT="loglevel=5 nowatchdog"
# 新增 GRUB_DISABLE_OS_PROBER=false
# 生成 grub 配置
grub-mkconfig -o /boot/grub/grub.cfg

# 退出结果环境,拔出 U 盘,重启
exit
umount -R /mnt
reboot

○ 安装后 ​

sh
# 非 root 登录

# 启动+开机自启网络管理
systemctl enable --now NetworkManager
ping www.bilibili.com

# 连接网络
nmtui

# 查看系统信息,非必须
pacman -S fastfetch
fastfetch

# 安装桌面 kde plasma,精简安装
# 参考包合集中的子包合集: https://archlinux.org/packages/extra/any/kde-applications-meta/
# 参考 KDE 推荐包:https://community.kde.org/Distributions/Packaging_Recommendations
sudo pacman -S plasma sddm kde-utilities-meta kde-system-meta
sudo pacman -S gwenview kdegraphics-thumbnailers koko spectacle
systemctl enable sddm
# 重启

# 设置 -> 区域和语言 -> 简体中文

# 重启不保留会话
# 设置 -> 桌面会话 -> 以空会话启动

# 更改 SDDM 样式:设置 -> 登录屏幕

# 如果没有识别 windows boot manager
sudo grub-mkconfig -o /boot/grub/grub.cfg

# 安装 nerd fonts
mkdir -p ~/.local/share/fonts
mv ~/Downloads/JetBrainsMono/* ~/.local/share/fonts/
fc-cache -fv
fc-list | grep ${font_name}
# 通用字体修改,配合 fonts.conf 使用
sudo pacman -S noto-fonts inter-font noto-fonts-cjk noto-fonts-emoji ttf-sarasa-gothic
# 使用字体配置,下载:https://github.com/szclsya/dotfiles/blob/master/fontconfig/fonts.conf
# 修改 monospace 的 family 为 JetBrainsMonoNL NF
mkdir -p ~/.config/fontconfig
cp ./fonts.conf ~/.config/fontconfig/

# 更换 shell,可选
sudo pacman -S zsh
chsh -s /bin/zsh
# Konsole 配置 -> 新建 -> 命令 zsh
# 重启 Konsole
#(可选)安装 oh-my-zsh

# 添加源,彩色、并行下载
kate /etc/pacman.conf
# 去除 multilib 分组的注释,并添加
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
# 生效
sudo pacman-key --lsign-key "farseerfc@archlinux.org"
sudo pacman -Sy archlinuxcn-keyring

# 安装 paru(yay 增强版)
# 需提前安装 cargo,如果通过 archlinuxcn 源安装则不需要
sudo pacman -S paru
kate /etc/paru.conf
# 去除 BottomUp 前面的注释

# 安装浏览器
sudo pacman -S firefox falkon

# 安装输入法,二选一(方案2完美)
sudo pacman -S fcitx5-im fcitx5-rime
paru fcitx5-input-support
# 设置 -> 虚拟键盘 -> fcitx5 wayland
# 设置 -> 输入法 -> 添加 rime
# 集成薄荷输入法 -> 修改配置中的输入法方案和自定义短语 -> 重新部署

# 修改应用启动参数,支持输入
# 按 win -> 右击应用 -> 编辑应用程序 -> 参数
--enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime

# 查询已安装的软件,并卸载
paru -Ss ${keyword}
paru -Rs ${name}

参考 ​

访问量 PV:Blocked用户数 UV:Blocked