[Arch linux]Btrfs使用Timeshift恢复镜像后无法开机的解决办法

Btrfs格式的系统使用Timeshift恢复之后可能会出现分区无法挂载的情况,导致进不去桌面,但是可以进入救援模式或者tty2,3...
经过几次折腾之后总结一下解决方法

修改fstab

打开 /etc/fstab 若子卷的参数里有subvolid=xxx项,直接将其删除,保存退出reboot即可

若子卷参数里没有subvolid

若子卷参数中没有subvolid=x x x项,且无法挂载/boot,需要使用archiso手动挂载,按照安装时的方式进去archiso中,首先按照分区,将系统挂载到/mnt下,我这里是一个例子

mount /dev/sda1 /mnt/boot  #挂载boot目录
swapon /dev/sda2  #挂载swap目录
mount -t btrfs -o subvol=/@,compress=zstd /dev/sda3 /mnt  #挂载`/ `目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sda3 /mnt/home  #挂载`/home`目录

然后使用arch-chroot /mnt进入到系统里

sudo pacman -S linux  #重新安装linux内核
mkinitcpio -P  #重新生成initramfs
exit  #退出系统
umount -R /mnt  #解除挂载
reboot  #重启

之后就可以顺利进入桌面了。

Q.E.D.