我正在阅读自己关于 Debian 上 Jessie 版本的信息,因此我对任何可能导致问题的消息(即警告)格外谨慎(应该说是偏执)。我的系统是安装了 Debian 测试/不稳定的桌面,在 和 的 ext4 分区上/boot
,但在 Debian 中/
升级软件包时我看到了这条消息:grub-pc
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
大多数通过搜索引擎访问此内容的人可能会想,“为什么我会收到此错误?”:
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。
答案2
您收到警告是因为您要将 grub 安装到分区而不是 MBR。这意味着 grub 不能嵌入到 MBR 和第一个分区之间未使用的空间中。相反,它必须将/boot/grub/core.img
驻留在 MBR 中的块列表包含在内。此设置可能会被碎片整理等破坏,因此不建议这样做,因此会出现警告。由于这只是一个警告,您可以忽略它。
答案3
我引用 Grub2 的info
页面:
主引导记录
====PC BIOS 平台传统上使用的分区表格式称为
主引导记录 (MBR) 格式;这种格式
最多允许四个主分区和附加逻辑分区。
使用这种分区表格式,有两种方法安装 GRUB:
可以嵌入到 MBR 和第一个分区之间的区域
(有各种名称,例如“引导磁道”、“MBR 间隙”或
“嵌入”)区域”,通常至少为 31 KiB),或者核心映像可以安装在文件系统中,并且 组成它
的块列表可以存储在该分区的第一个扇区中。其中每一个都有不同的问题。没有办法
完全安全地在嵌入区域中保留空间,并且
已知一些专有软件会使用它来使用户难以绕过
许可限制;有时系统会
在第一个分区之前没有留出足够的空间进行分区。另一方面
,安装到文件系统意味着 GRUB 的块很容易被文件系统功能(例如尾部打包) 甚至激进的 fsck 实现
移动,因此这种方法非常 脆弱;并且只有当“/boot”文件系统与 BIOS 启动所在的磁盘位于同一磁盘上时才能使用此方法 ,这样 GRUB 就不必 依赖于猜测 BIOS 驱动器号。GRUB开发团队通常建议在
第一个分区之前嵌入GRUB,除非您有特殊要求。您必须确保第一个分区 从磁盘起始处
开始至少 31 KiB(63 个扇区) ;
在现代磁盘上,无论如何,在更大的边界上对齐分区通常会带来性能
优势,因此第一个
分区可能从磁盘开头开始 1 MiB。
这对我来说意味着 ext2 与嵌入没有任何关系,因为它是任何一个嵌入或者涉及的文件系统。
问题是您做了什么来产生此错误消息(或者更确切地说:警告)。我假设如果 Grub2 被告知将自身安装到分区而不是驱动器本身(MBR 或扩展分区),就会发生这种情况。