|
gnu grub 原先最早支持的压缩文件格式就是 gzip 格式。然而,gzip 格式用于 pxe 网络启动的时候,存在致命缺点:它是在文件尾部(而不是在文件开头)记录 “解压后的文件长度”——这是很糟糕的——这就意味着,必须首先从网络上读取文件尾部,才能获得文件长度。糟糕的是,在 PXE 的情形,不可能只读取文件尾部的少量字节,必须从头到尾全部读取整个文件,才能获得尾部信息。这样,为了获取文件长度,需要从网络读取整个文件。接下来,如果还要加载文件到内存,则需要另外一次读取,这就大大降低了运行效率,极不合理,极不科学。
后来,karyonix 为 grub4dos 写了lzma 的支持代码,这才摆脱这个困扰。lzma 是在文件头部记录解压后的文件长度信息,这就可以完美用于 pxe 的情形了。
在不使用 pxe 的情形,无论 gz 和 lzma,都可以正常使用。很明显,在 pxe 的情形,使用 gz 格式是不明智的,应该使用 lzma 格式。 |
|