“警告:文件系统ext2不支持嵌入。”但我的系统也未嵌入,为什么grub会尝试?


34

我正在阅读有关在Debian上发布Jessie的信息,所以我对任何可能引起问题的消息(即警告)特别谨慎(应该说是偏执)。我的系统是安装了Debian测试/不稳定的台式机,同时在/boot和的ext4分区上安装了Debian /,但是grub-pc在Debian中升级软件包时却看到此消息:

Installing for i386-pc platform.
Installation finished. No error reported.
Installing for i386-pc platform.
grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
Installation finished. No error reported.
Generating grub configuration file ...

为什么grub说我的系统是嵌入式的?这是什么原因?我试图检查grub-install二进制文件,但我无法理解。


1
这也不关乎您的系统被嵌入。embed是Grub命令:“如果在[...]之后,将Stage 1.5 STAGE1_5嵌入MBR之后的扇区中”。我不明白到底是什么问题ext2
Hauke Laging

2
显然,grub会调用ext3和ext4。ext2,所以警告很好,请参见此处。似乎嵌入vs阻止列表警告是关于grub的安装位置,MBR vs分区引导扇区。
Mehmet 2014年

Answers:


31

之所以收到警告,是因为您正在将grub安装到分区而不是MBR上。这意味着无法将grub嵌入到MBR和第一个分区之间的未使用空间中。相反,它必须将/boot/grub/core.img驻留的块列表放入MBR。此设置可能会因碎片整理等操作而损坏,因此不建议这样做,因此会出现警告。由于这只是警告,因此可以忽略它。


所以...我只需要取消选择软件包配置上的分区。
Braiam 2014年

64

来自搜索引擎的大多数人可能会想:“为什么会出现此错误?”:

warning: File system `ext2' doesn't support embedding. 
warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their  use is discouraged.. 
error: will not proceed with blocklists.

因为您这样做,例如:

grub-install /dev/sda1

代替

grub-install /dev/sda

即尝试安装到分区而不是MBR。


1
我知道我重新安装了grub,并使用grub-install / dev / sda做到了。我仍然收到警告。
约翰·赫斯塔德

您得到了警告,并且继续吗?还是错误?这主要是关于克服该错误。
内森·基德

apt dist-upgrade在Debian上运行,它愚蠢地要求我重新选择GRUB应该去的地方(好像我知道!)。我确实选择了/ dev / sda1(我的/ boot分区)。现在它无法启动。如果我启动一个实时发行版并运行grub-install,它会发出嵌入投诉,并拒绝继续。可以维修吗?
波恩

@Boann,我碰巧遇到类似的问题,在这里askubuntu.com/a/531051/149881 也许会帮到您。
森·基德

5

我引用了Grub2的info页面:

MBR
====

传统上在PC BIOS平台上使用的分区表格式
称为主启动记录(MBR)格式;这种格式
最多允许四个主分区和其他逻辑分区。
使用这种分区表格式,有两种安装GRUB的方法:
可以将其嵌入MBR和第一个分区之间的区域
(以各种名称调用,例如“启动轨道”,“ MBR间隙”或
“嵌入”。区域”(通常至少为31 KiB),也
可以将核心映像安装在文件系统中,组成该映像的块列表
可以存储在该分区的第一个扇区中。

这些每个都有不同的问题。无法
完全安全地在嵌入区域中保留空间,并且
已知某些专有软件正在使用它来使用户难以
解决许可限制。有时,系统会被分区,
而第一个分区之前并没有留下足够的空间。在另一
面,即GRUB易受其安装到一个文件系统装置
块由文件系统被移动周围设有诸如尾部填料,
或甚至通过侵略性的fsck实现中,所以这种方法是相当
脆弱; 并且仅当“ / boot”文件系统
位于BIOS引导所在的磁盘上时才可以使用此方法,因此GRUB不会
必须依靠猜测BIOS驱动器号。


除非您有特殊要求,否则GRUB开发团队通常建议在第一个分区之前嵌入GRUB 。您必须
确保第一个分区从
磁盘开始至少启动31 KiB(63个扇区)。在现代磁盘上,
无论如何都要在更大的边界上对齐分区通常具有性能优势,因此第一个
分区的起始位置可能是磁盘起始位置起1 MiB。

这意味着,我认为ext2是不涉及任何方式嵌入,因为它要么嵌入文件系统有关。

问题出现了,您为产生此错误消息所做的操作(或更确切地说:警告)。我假设如果告诉Grub2将自身安装到分区而不是驱动器本身(MBR或扩展分区)中,就会发生这种情况。


我没有提到我对ext2的关注,我知道GRUB对ext2 / 3/4很有帮助。我的兴趣是:1)为什么会出现警告,以及2)我应该担心
Braiam 2014年
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.