我在安装Ubuntu时没有创建交换分区,并且将
/
安装在了btrfs上。#现在每次启动时都会出现“不允许稀疏文件”的提示信息。这个提示信息会在启动画面之前显示。有没有办法消除这个警告?好的,在翻找一番之后,我找到了一个临时解决这个问题的方法,它相当简单,但是由于我的系统没有设置btrfs,所以无法确认这个修复是否有效。
要么注释掉这行代码,要么将其删除:
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
或者
if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env \
recordfail; fi; fi
/etc/grub.d/00_header
update-grub
不直接编辑/boot/grub/grub.cfg
的原因是每次更新 grub 时它都会被覆盖,在这种情况下,您只需在 grub 通用软件包更新时“重新进行”修复。
如果您想要添加自己,请查看此处关于 launchpad 的错误报告bug #736743
引用来自该错误报告的 Colin Watson 的话
这实际上是一个误导性的错误信息:发生的情况是,GRUB的btrfs实现没有为返回块列表给调用代码实现文件读取钩子接口。我在grub-devel上发布了这个问题,上游维护者指出,即使是多设备问题,从GRUB写入btrfs也基本上存在风险,因为:同一块可能被多个快照使用每个使用给定块的树都将包含其校验和,以此类推。
然而,btrfs在开头保留了引导加载程序的空间。这个空间比GRUB嵌入所需的空间要大,因此我们可以使用其中的1KB作为环境块。
无论如何,这不是由于使用子卷而产生的新问题,也不会阻止启动(你会得到一个虚假的“按任意键继续”提示,但如果你忽略它,它仍然会启动)。降级为愿望清单。
希望这有所帮助。
if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
- FUZxxl打开终端窗口,复制/粘贴/输入以下内容:
sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
复制/粘贴/输入以下内容以安装并启动Boot-Repair:
sudo apt-get install -y boot-repair && boot-repair
现在可以看到Boot-Repair的主要图形界面。
点击一个名为“Recommended repair”的按钮。
让工具发挥它的“魔力”。
当魔法咒语结束时,
创建一个可见的URL的小笔记。
重新启动系统,检查是否可以访问恢复的操作系统。
如果没有成功,请使用修复结束时显示的URL寻求帮助。
/etc/default/grub
中设置GRUB_SAVEDEFAULT=false
,然后运行update-grub
命令。 - Stuart CardallGRUB_DEFAULT="1"
解决了这个关于grub
/btrfs
的问题,以便在GRUB菜单中启动第二个内核。 - Stuart Cardall/boot
分区。 - xerufbtrfs
根文件系统运行了大约6年,并且没有单独的/boot
分区,使用的是我在2年前评论中提到的相同设置。整个目的就是为了能够对整个根文件系统进行快照,以便GRUB能够从快照中引导启动。 - Stuart Cardall