无忧启动论坛
标题:
grub4dos gzip 的问题
[打印本页]
作者:
chenall
时间:
2014-11-23 18:04
标题:
grub4dos gzip 的问题
简单的测试方法.
raw map /test.gz (rd)
raw cat --hex (rd)+1 正常
cat (rd)+1 正常
cat (rd)+1 再次执行失败,出错,(rd)的内容改变了,已经不是原来的内容
其中测试过把(rd)换成(fd0)等也是一样.
再测试加参数 --mem=xxxx 指定一个低端的内存,暂时还没有发现问题.
用lzma格式正常.
也就是说如果解压一个在内存中的gzip文件,这个文件内容有可能会被改变???
很早之前的版本就存在,我测试了今年最早的版本一样.
QEMU和实机测试一样.
请大家也测试一下,是不是一样存在这个问题.
注: 测试时需要把一个gz文件加载到内存中(不要自动解压)
然后访问这个文件内容.让它自动解压
作者:
不点
时间:
2014-11-23 18:56
自动解压,当然有可能破坏内存了。
内存处理以及解压代码,都需要经过严密的审查。目前可能都有问题。
作者:
chenall
时间:
2014-11-23 20:09
看起来应该是这里的问题了,这个有必要改变一下,否则解压gz文件的时候就会改变顶端内存,我过两天再看一下.
比如默认情况下的rd设备就是使用了顶端的内存,这时如果再使用到gz文件那rd里面的文件内容就会被改变.
static void
reset_linalloc (void)
{
linalloc_topaddr = RAW_ADDR ((saved_mem_upper << 10) + 0x100000);
}
复制代码
作者:
不点
时间:
2014-11-24 09:02
chenall 发表于 2014-11-23 20:09
看起来应该是这里的问题了,这个有必要改变一下,否则解压gz文件的时候就会改变顶端内存,我过两天再看一下.
...
大胆搞,错了没关系,还可以退回去。
今后我就不能再关注此一阶段的 grub4dos 的开发了,我主要去做操作系统整合方面的工作。
欢迎光临 无忧启动论坛 (http://wuyou.net./)
Powered by Discuz! X3.3