无忧启动论坛

标题: 刚发现一个BUG,请大家一起测试下 [打印本页]

作者: chenall    时间: 2015-1-21 18:25
标题: 刚发现一个BUG,请大家一起测试下
刚发现GRUB4DOS访问gz格式文件时会不正常,,,0.4.5c/0.4.6a一样,不过我暂时没有时间测试到底是哪里的问题

请有时间的朋友帮忙测试一下,是否有存在这个问题,另外是从哪个版本开始出现这个问题的.
作者: 2012zhd    时间: 2015-1-21 19:25
p大的0pe中有好几个GZ格式的文件,可启动0pe都是正常的,能否说明GRUB4DOS访问GZ格式的文件正常?
用过的版本:0.4.6a 20141127   20150110  20150116  20150118  20150120
作者: 细细哥~    时间: 2015-1-21 20:09
我把VHD压缩为GZ格式,使用完全正常,加载时间快了很多,版本一直用的是:G4D 0.4.5C 2013-07-24

作者: chenall    时间: 2015-1-22 09:56
今天再试了下,应该是PXE的问题,PXE TFTP直接map就不正常,记得之前我好像有提到过?忘了在哪里了

折中办法是用(rd)中转,

raw map --mem=0x14000 /hddreg2011.img.gz (rd)
map --mem (rd)+1 (fd0)

使用IPXE的模块,访问正常.
作者: 不点    时间: 2015-1-22 12:00
这是 gz 格式的缺陷造成的。属于正常现象。正因如此,所以我们后来就引入了 lzma 格式(是 karyonix 的漂亮工作)。

gz 格式的头部没有文件长度信息,要读尾部才能获得解压后的文件的长度。这在 pxe 的情况下,导致要读两次文件,浪费时间。第一次是打开文件,决定文件的长度等信息。不幸的是,在 pxe 的情况下,实际上这就读出了整个文件,浪费了时间(在 pxe 的情形,当需要读文件的尾部时,它就要把之前的内容全都读出来才行,不可能只读出尾部扇区,而不读出之前的扇区)。第二次读是实际的 read 动作,当然就把文件又读了一遍。

lzma 格式不需要读两遍,因为 lzma 的文件长度信息位于文件开头。因此,lzma 格式用于 pxe 情形是没问题的。




作者: mdyblog    时间: 2015-1-22 19:53
chenall 发表于 2015-1-22 09:56
今天再试了下,应该是PXE的问题,PXE TFTP直接map就不正常,记得之前我好像有提到过?忘了在哪里了

折中办法 ...

流式文件(如网络文件)的处理,和一般的文件处理是不同的。

先判断是否为gzip压缩的, 且为网络文件。
是的话, 先读到临时内存。
读到EOF, 就知道文件长度了。
再解压,再map。
这样 就不必读2次了。




欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3