Loading

UEFI-64 使用 systemd-boot 引导 btrfs

参考:
systemd-boot
mkinitcpio
Modern Arch linux installation guide
现代化的 Archlinux 安装,Btrfs、快照、休眠以及更多。
Installing archlinux the EFI/systemd-boot way

这里只讲述了一些关键步骤

以下出现的
/dev/nvme0n1 是我的硬盘
/dev/nvme0n1p1 ESP 分区
/dev/nvme0n1p2 swap 分区
/dev/nvme0n1p3 root 分区

创建和挂载 btrfs 分区

分区并格式化

查看硬盘 fdisk -l
分区 cfdisk /dev/nvme0n1
格式化分区

mkfs.fat -F 32 /dev/nvme0n1p1
mkfs.btrfs /dev/nvme0n1p3
mkswap /dev/nvme0n1p2

创建 btrfs 子卷

mount /dev/nvme0n1p3
btrfs subvolume create /mnt/@
btrfs subvolume create /mnt/@home
btrfs subvolume create /mnt/@log
btrfs subvolume create /mnt/@cache
umount /dev/nvme0n1p3

挂载分区

mount /dev/nvme0n1p3 /mnt -o subvol=@,noatime,discard=async,compress=zstd
mount --mkdir /dev/nvme0n1p3 /mnt/home -o subvol=@home,noatime,discard=async,compress=zstd
mount --mkdir /dev/nvme0n1p3 /mnt/var/log -o subvol=@log,noatime,discard=async,compress=zstd
mount --mkdir /dev/nvme0n1p3 /mnt/var/cache -o subvol=@cache,noatime,discard=async,compress=zstd

noatime 降低数据读取和写入的访问时间
discard=async (TRIM)闲时释放磁盘未使用的区块
compress 数据写入前进行压缩

禁用写时复制,用于不参与快照的位置

chattr +C /mnt/var/log
chattr +C /mnt/var/cache

挂载 boot 分区
mount --mkdir /dev/nvme0n1p1 /mnt/boot

挂载 swap 分区
swapon /dev/nvme0n1p2

安装并配置 systemd-boot

将 systemd-boot 安装到 ESP:
bootctl --path=/boot install

编辑 /boot/loader/loader.conf

default @saved
timeout 4
console-mode auto

查看根分区 UUID

配置 systemd-boot 时要用到根分区的 UUID
ls -l /dev/disk/by-uuid/
lsblk -dno UUID /dev/nvme0n1p3
cat /etc/fstab

配置 systemd-boot 增加启动选项

创建并编辑 /boot/loader/entries/arch.conf

title Arch Linux (linux)
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux.img
options root=UUID=根分区的UUID rw rootflags=subvol=@

创建并编辑 /boot/loader/entries/arch-fallback.conf

title Arch Linux (linux fallback initramfs)
linux /vmlinuz-linux
initrd /amd-ucode.img
initrd /initramfs-linux-fallback.img
options root=UUID=根分区的UUID rw rootflags=subvol=@

检验配置是否正确
bootctl list

创建新的 initramfs

启用基于 systemd 的初始化内存盘

编辑 /etc/mkinitcpio.conf
HOOKS 数组中添加 systemd
MODULE 数组中添加 btrfs
生成新的 initramfs mkinitcpio -P

可选:添加 Windows 启动选项

systemd-boot 会在启动时自动搜索位于 /EFI/Microsoft/Boot/Bootmgfw.efi 的 Windows Boot Manager

挂载并拷贝Win引导分区中的 Microsoft 文件夹到 /EFI 文件夹下即可

mount --mkdir /dev/windows ESP所在的硬盘分区 /mnt/win
cd /mnt/win/EFI
cp -r Microsoft /boot/EFI/
posted @ 2025-06-14 03:30  Rubrum  阅读(149)  评论(0)    收藏  举报