我正在阅读自己在 Debian 上发布 Jessie 的信息,因此我对任何可能导致问题的消息(即警告)格外谨慎(应该说是偏执)。我的系统是安装了 Debian testing/unstable 的台式机,在 ext4 分区上同时安装/boot和/,但我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 ...
Run Code Online (Sandbox Code Playgroud)
为什么 grub 说我的系统是嵌入式的?这是什么原因?我试图检查 grub-install 二进制文件,但我无法理解它。
Nat*_*idd 94
大多数来自搜索引擎的人可能想知道,“为什么我会收到这个错误?”:
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.
Run Code Online (Sandbox Code Playgroud)
因为你做了,例如:
grub-install /dev/sda1
代替
grub-install /dev/sda
即尝试安装到分区而不是 MBR。
psu*_*usi 33
您收到警告是因为您将 grub 安装到分区而不是 MBR。这意味着 grub 不能嵌入到 MBR 和第一个分区之间的未使用空间中。相反,它必须将/boot/grub/core.img驻留在 MBR中的块列表。此设置可能会被碎片整理之类的东西破坏,因此不建议使用,因此发出警告。由于它只是一个警告,您可以忽略它。
我引用 Grub2 的info页面:
MBR
====PC BIOS 平台上传统使用的分区表格式
称为主引导记录 (MBR) 格式;这是
允许最多四个主分区和附加逻辑分区的格式。
使用这种分区表格式,安装 GRUB 有两种方式:
可以嵌入 MBR 和第一个分区之间的区域
(有各种名称,如“引导轨道”、“MBR 间隙”或
“嵌入”) area”,通常至少为 31 KiB),或者
可以将核心映像安装在文件系统中,并且
可以将组成它的块列表存储在该分区的第一个扇区中。每一个都有不同的问题。没有办法
完全安全地在嵌入区域预留空间,并且
已知一些专有软件使用它使用户难以
绕过许可限制;并且系统有时会
在第一个分区之前没有留下足够空间的情况下进行分区。在另一
面,即GRUB易受其安装到一个文件系统装置
块由文件系统被移动周围设有诸如尾部填料,
或甚至通过侵略性的fsck实现中,所以这种方法是相当
脆弱; 并且这种方法只能在 `/boot' 文件系统
位于 BIOS 启动的同一个磁盘上时使用,这样 GRUB 就不会
必须依靠猜测 BIOS 驱动器编号。GRUB 开发团队一般建议在
第一个分区之前嵌入 GRUB ,除非你有特殊要求。您必须
确保第一个分区从
磁盘开始处开始至少 31 KiB(63 个扇区);在现代磁盘上,
无论如何在更大的边界上对齐分区通常具有性能优势,因此第一个
分区可能从磁盘的开头开始 1 MiB。
这对我来说意味着 ext2 与嵌入无关,因为它要么是嵌入,要么是涉及文件系统。
问题在于您为产生此错误消息(或者更确切地说:警告)所做的工作。我认为如果 Grub2 被告知将自己安装到一个分区而不是驱动器本身(MBR 或扩展分区),就会发生这种情况。