修复双系统下 systemd-boot 启动项丢失

首先查看分区情况:

lsblk

我的分区情况如下:

nvme1n1     259:0    0 953.9G  0 disk  
├─nvme1n1p1 259:1    0 952.9G  0 part  
│ └─root    254:0    0 952.9G  0 crypt /var/log
│                                      /var/cache/pacman/pkg
│                                      /home
│                                      /.snapshots
│                                      /
└─nvme1n1p2 259:2    0     1G  0 part  /boot

然后解密 luks 分区:

cryptsetup open /dev/nvme1n1p1 root

待输入密码后,会出现一个/dev/mapper/root的设备,之后的操作可以在这个设备上进行。

然后我们需要挂载 btrfs 分区:

mount -t btrfs -o subvol=@ /dev/mapper/root /mnt
mount -t btrfs -o subvol=@home /dev/mapper/root /mnt/home
mount -t btrfs -o subvol=@log /dev/mapper/root /mnt/var/log
mount -t btrfs -o subvol=@pkg /dev/mapper/root /mnt/var/cache/pacman/pkg
mount -t btrfs -o subvol=@.snapshots /dev/mapper/root /mnt/.snapshots

最后挂载/boot分区:

mount /dev/nvme1n1p2 /mnt/boot

接下来就可以进入chroot环境了:

arch-chroot /mnt

重新生成 systemd-boot 配置文件:

bootctl --path=/boot install