在brtfs下装过好几次Linux系统,每次都会遇到grub引导启动时”Sparse File Not Allowed”的问题,记录一下解决办法。
boot目录放在brtfs文件系统下总是会报这个问题,虽然也能启动,但无法记录上次启动的系统,比较烦人。一种解决办法是再创建个ext4文件系统的分区作为/boot目录,其他不变。于是把swap分区缩了1个G,把/boot拷过去,设置/etc/fstab,update-grub。信心满满地重启,结果启动时提示找不到swap和boot,进Emergency Mode了。
怎么办呢?问了DeepSeek才知道要更新initramfs和grub。blkid获取单独分出的boot分区的UUID,在fstab里加上:
1 |
|
其中dump:0指不备份,pass:2表示启动时检查文件系统中的错误,其实设成0也行。0 表示不检查,1 用于根文件系统 /,2 用于其他所有需要被 fsck 检查的文件系统。
原来挂载到/boot/efi的EFI分区那行不要动。之后尝试挂载这些卷:mount -a
,我在Debian 13下还需要先按系统的提示执行systemctl daemon-reload
才行。之后更新initramfs和grub:
1 |
|
之后就能进系统了。swap炸了也不影响进系统,更新swap分区这一步在什么时候都可以做。
1 |
|
然后把新的UUID更新到fstab和etc/initramfs-tools/conf.d/resume
中,更新initramfs和grub即可。
1 |
|