启动 Live ISO 并连接 Wi-Fi
启动到 Arch Linux Live 环境。
设置 root 密码:
passwd使用 nmtui 连接 Wi-Fi:
nmtui查看 IP 地址:
ip addr show
安装并启用 OpenSSH 服务器
在 Live 环境中安装 OpenSSH 服务器:
pacman -Sy pacman -S openssh启用并启动 SSH 服务:
systemctl start sshd确认 SSH 服务正在运行:
systemctl status sshd从远程机器 ssh 连接到 Arch Live ISO
分区硬盘
使用 sgdisk 进行分区:
假设硬盘是 /dev/nvme0n1:
sgdisk -Z /dev/nvme0n1 # 清除所有分区
sgdisk -n 1:0:+512M -t 1:ef00 /dev/nvme0n1 # 创建EFI分区
sgdisk -n 2:0:0 -t 2:8300 /dev/nvme0n1 # 创建剩余空间的btrfs分区
格式化分区
格式化 EFI 分区为 FAT32:
mkfs.vfat -F32 /dev/nvme0n1p1格式化 btrfs 分区:
mkfs.btrfs /dev/nvme0n1p2
创建并挂载 subvolume
挂载 btrfs 分区:
mount /dev/nvme0n1p2 /mnt创建 subvolume:
btrfs subvolume create /mnt/@ btrfs subvolume create /mnt/@home btrfs subvolume create /mnt/@snapshots btrfs subvolume create /mnt/@var_log btrfs subvolume create /mnt/@var_cache btrfs subvolume create /mnt/@var_tmp btrfs subvolume create /mnt/@swap卸载 btrfs 分区:
umount /mnt重新挂载 subvolume:
mount -o subvol=@,noatime,compress=zstd /dev/nvme0n1p2 /mnt mkdir -p /mnt/{home,.snapshots,var/log,var/cache,var/tmp,boot/efi,swap} mount -o subvol=@home,noatime,compress=zstd /dev/nvme0n1p2 /mnt/home mount -o subvol=@snapshots,noatime,compress=zstd /dev/nvme0n1p2 /mnt/.snapshots mount -o subvol=@var_log,noatime,compress=zstd /dev/nvme0n1p2 /mnt/var/log mount -o subvol=@var_cache,noatime,compress=zstd /dev/nvme0n1p2 /mnt/var/cache mount -o subvol=@var_tmp,noatime,compress=zstd /dev/nvme0n1p2 /mnt/var/tmp mount -o subvol=@swap,noatime /dev/nvme0n1p2 /mnt/swap mount /dev/nvme0n1p1 /mnt/boot/efi
创建 swapfile
创建 swapfile:
btrfs filesystem mkswapfile --size 32g --uuid clear /mnt/swap/swapfile启用 swapfile:
chmod 600 /mnt/swap/swapfile mkswap /mnt/swap/swapfile swapon /mnt/swap/swapfile
安装基础系统
- 安装基础系统:
pacstrap /mnt base linux linux-firmware
配置系统
生成 fstab:
genfstab -U /mnt >> /mnt/etc/fstab检查 fstab:
vim /mnt/etc/fstab切换到新系统的 chroot 环境:
arch-chroot /mnt设置基本配置:
echo "hostname" > /etc/hostname echo "127.0.0.1 localhost" > /etc/hosts echo "127.0.1.1 hostname.localdomain hostname" >> /etc/hosts ln -sf /usr/share/zoneinfo/Region/City /etc/localtime hwclock --systohc pacman -S networkmanager grub efibootmgr btrfs-progs snapper vim配置 locale:
vim /etc/locale.gen在文件中取消注释行:
en_US.UTF-8 UTF-8生成 locale:
locale-gen设置系统的默认语言环境:
echo "LANG=en_US.UTF-8" > /etc/locale.conf安装 ssh server
pacman -S openssh systemctl enable sshd安装 KDE Plasma 桌面环境和 Wayland 支持:
pacman -S plasma-meta sudo systemctl enable NetworkManager配置 grub:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB grub-mkconfig -o /boot/grub/grub.cfg创建新用户并加入 sudo 组:
useradd -m -G wheel username passwd username允许 sudo 组成员使用 sudo 命令:
EDITOR=vim visudo在文件中添加以下行:
%wheel ALL=(ALL) NOPASSWD: ALL退出 chroot 环境并卸载临时文件系统:
exit umount -R /mnt
完成安装并重启
- 重启系统以验证配置是否正确。
reboot
配置 Snapper
sudo
sudo -i启动进入新安装的 Arch 系统后,安装 Snapper 和相关包:
pacman -S snapper snap-pac grub-btrfs snap-pac-grub初始化 Snapper 配置:
umount /.snapshots rm -r /.snapshots snapper -c root create-config / btrfs subvolume delete /.snapshots mkdir /.snapshots mount -a chmod 750 /.snapshots snapper -c home create-config /home编辑 Snapper 配置文件 /etc/snapper/configs/root 和 /etc/snapper/configs/home,设置快照策略:
vim /etc/snapper/configs/root在配置文件中,设置以下参数:
TIMELINE_CREATE="yes" TIMELINE_CLEANUP="yes" TIMELINE_MIN_AGE="1800" TIMELINE_LIMIT_HOURLY="24" TIMELINE_LIMIT_DAILY="7" TIMELINE_LIMIT_WEEKLY="4" TIMELINE_LIMIT_MONTHLY="3"类似地,编辑 /etc/snapper/configs/home:
vim /etc/snapper/configs/home设置相同的快照策略:
TIMELINE_CREATE="yes" TIMELINE_CLEANUP="yes" TIMELINE_MIN_AGE="1800" TIMELINE_LIMIT_HOURLY="24" TIMELINE_LIMIT_DAILY="7" TIMELINE_LIMIT_WEEKLY="4" TIMELINE_LIMIT_MONTHLY="3"允许所有 sudo 组的成员管理 Snapper 快照:
vim /etc/snapper/configs/root找到 ALLOW_USERS 和 ALLOW_GROUPS,修改为:
ALLOW_USERS="" ALLOW_GROUPS="sudo"类似地,编辑 /etc/snapper/configs/home:
vim /etc/snapper/configs/home修改为:
ALLOW_USERS="" ALLOW_GROUPS="sudo"配置 grub-btrfs
vim /etc/default/grub-btrfs/config修改:
GRUB_BTRFS_LIMIT="5000"- 启用并启动 snapper-timeline 和 snapper-cleanup 定时任务:
systemctl enable snapper-timeline.timer systemctl start snapper-timeline.timer systemctl enable snapper-cleanup.timer systemctl start snapper-cleanup.timer手动生成一个 Snapper 快照:
snapper -c root create --description "Initial snapshot"
感谢您的耐心阅读!来选个表情,或者留个评论吧!