在btrfs文件系统上安装后出现消息“不允许稀疏文件”


25

我安装了Ubuntu,但没有创建交换分区,而是/在btrfs上安装了Ubuntu 。现在,每次启动时,我都会收到消息“不允许稀疏文件”。此消息出现在初始屏幕之前。有没有办法消除此警告?


在我的系统上,按任何键都无济于事,它卡住了!
迈克尔

1
在2016年的解决方案是设置GRUB_SAVEDEFAULT=false/etc/default/grub与运行update-grub
斯图尔特Cardall

Answers:


33

好了,经过一番摸索之后,我发现了如何至少暂时摆脱该问题的方法,这很简单,但是我没有使用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通用软件包已更新,则只需“重新做”此修复程序。

如果您想添加自己的bug,这是启动板上的bug#7367​​43

从错误报告中引用Colin Watson

这实际上是一个误导性的错误消息:发生的是GRUB的btrfs实现未实现用于将阻止列表返回到调用代码的文件读取挂钩接口。我就此事发表在grub-devel上,上游维护者指出,除了多设备问题之外,从GRUB写入btrfs基本上是有风险的,因为:

多个快照可以使用同一块,使用给定块的每棵树将包含其校验和,依此类推

但是,btrfs在开始时会为引导加载程序保留空间。这个空间超出了GRUB自身需要嵌入的空间,因此我们可以将1KB的空间用于环境块。

在任何情况下,这都不是使用子卷引起的新问题,也不会阻止引导(您会得到一个虚假的“按任意键继续”提示,但是如果您忽略它,它将继续引导)。降级到愿望清单。

希望这可以帮助


1
您能找到一个解释为什么它会首先吐出此错误的原因吗?谢谢。:)
jrg 2012年

在我的配置文件中,该行如下所示:if [ -n "\${have_grubenv}" ]; then if [ -z "\${boot_once}" ]; then save_env recordfail; fi; fi
FUZxxl 2012年

1
我会注释掉。如果启动失败,您仍然可以使用活动磁盘取消注释该行
Allan

好的。我要尝试一下。
FUZxxl 2012年

2
很好,可以用!
FUZxxl 2012年

1

我正在运行Raring Ringtail的开发部门。
关于稀疏文件不允许消息,我遇到了同样的问题。GRUB根本不显示,直接启动到Ubuntu。

我正在阅读Linux Magazine(LXF),其中有几篇有关恢复和修复分区,文件,引导加载程序和其他内容的文章。

其中一位文章作者提到了一个可以使用的简单工具... Boot-Repair
这个工具帮了我大忙,我认为应该在Ubuntu的存储库中占据重要位置。

将引导修复添加到您的系统:

  1. 打开一个终端窗口,然后复制/粘贴/键入以下内容:

    sudo add-apt-repository ppa:yannubuntu/boot-repair && sudo apt-get update
    
  2. 复制/粘贴/键入以下内容以安装并启动引导修复:

    sudo apt-get install -y boot-repair && boot-repair
    
  3. 引导修复的主GUI现在可见。

    Click on a button called 'Recommended repair'.
    

    让工具做到“神奇”。

  4. 当魔法结束时,

    create a little note of the url visible. 
    
  5. 重新引导系统,并检查是否可以访问恢复的操作系统。

  6. 如果没有成功,请使用修复结束时显示的URL寻求帮助。


我认为这没有帮助,因为这是grub本身的错误。
FUZxxl 2012年

为什么你这么想?我进行了13.04的多个虚拟安装,所有安装都存在相同的问题。编辑了grub.cfg,没有结果。那根本没有解决我的“不允许稀疏文件”消息。GRUB甚至都不可见。在尝试了今天早些时候在我的帖子中提供的解决方案之后,它就像一个魅力一样工作了,并且至今仍然如此。
C Schilder

可悲的是在14.04 Trusty amd64中无法正常工作
lostr114491
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.