启动 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"
感谢您的耐心阅读!来选个表情,或者留个评论吧!