无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 3743|回复: 5
打印 上一主题 下一主题

刚发现一个BUG,请大家一起测试下

[复制链接]
跳转到指定楼层
1#
发表于 2015-1-21 18:25:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
刚发现GRUB4DOS访问gz格式文件时会不正常,,,0.4.5c/0.4.6a一样,不过我暂时没有时间测试到底是哪里的问题

请有时间的朋友帮忙测试一下,是否有存在这个问题,另外是从哪个版本开始出现这个问题的.
2#
发表于 2015-1-21 19:25:57 | 只看该作者
p大的0pe中有好几个GZ格式的文件,可启动0pe都是正常的,能否说明GRUB4DOS访问GZ格式的文件正常?
用过的版本:0.4.6a 20141127   20150110  20150116  20150118  20150120
回复

使用道具 举报

3#
发表于 2015-1-21 20:09:52 | 只看该作者
我把VHD压缩为GZ格式,使用完全正常,加载时间快了很多,版本一直用的是:G4D 0.4.5C 2013-07-24
回复

使用道具 举报

4#
 楼主| 发表于 2015-1-22 09:56:23 | 只看该作者
今天再试了下,应该是PXE的问题,PXE TFTP直接map就不正常,记得之前我好像有提到过?忘了在哪里了

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

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

使用IPXE的模块,访问正常.

点评

流式文件(如网络文件)的处理,和一般的文件处理是不同的。 先判断是否为gzip压缩的, 且为网络文件。 是的话, 先读到临时内存。 读到EOF, 就知道文件长度了。 再解压,再map。 这样 就不必读2次了。  详情 回复 发表于 2015-1-22 19:53
回复

使用道具 举报

5#
发表于 2015-1-22 12:00:46 | 只看该作者
这是 gz 格式的缺陷造成的。属于正常现象。正因如此,所以我们后来就引入了 lzma 格式(是 karyonix 的漂亮工作)。

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

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



回复

使用道具 举报

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

折中办法 ...

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

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-27 12:32

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表