无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2011yaya2007777
打印 上一主题 下一主题

支持含有碎片的文件仿真

    [复制链接]
181#
 楼主| 发表于 2014-6-12 10:27:45 | 只看该作者
回复

使用道具 举报

182#
 楼主| 发表于 2014-6-12 20:33:22 | 只看该作者
文件系统的缓冲区不能超过 32K,在 0x3e0000-0x3e7fff 之间。ntfs 文件系统的问题已经修正,支持 8K 以内的非驻留属性列表。
fat 文件系统的识别问题已经修正。
对于压缩文件映射时不使用 --mem 参数,会返回错误提示。
完善了 iso9600_Joliet 文件格式的识别问题,应对 mkisofs2.01 产生的 bug。
回复

使用道具 举报

183#
发表于 2014-6-12 21:54:25 | 只看该作者
今天的版本解决了找不到可见区的问题,但是在菜单下按C键进入命令行界面,使用 usb --init 命令后,再使用诸如 configfile /grub/menu.lst 命令时,就加载不了菜单,就连已经加载过的菜单,再按 ESC 键都不能返回了。

usb --init 出现的提示信息是:
Error 81. No USB device found. USB device enumeration failed, Try to restart.
回复

使用道具 举报

184#
发表于 2014-6-12 22:03:29 | 只看该作者
好长时间没关注 g4d 了, 这个碎片意思是不是可以文件不用连续啦。
回复

使用道具 举报

185#
 楼主| 发表于 2014-6-13 08:44:23 | 只看该作者
usb --init 出现的提示信息是:

这是 usb 驱动没有加载成功,没有找到 usb 设备。有时重启后可以解决。

这个碎片意思是不是可以文件不用连续啦。

是这个意思。
回复

使用道具 举报

186#
发表于 2014-6-13 12:00:40 | 只看该作者
我明明是USB启动的啊,启动后也认了UD区和可见区,但是再一执行这个 usb --init 命令,就返不回菜单,而 configfile 也不起作用了,但是列UD区和可见区文件没有问题,因此我认为这是 usb --init 存在BUG。

点评

我在menu.lst上加一启动USB2.0选项,.LST选项菜单中加usb --init启动会出现Error 81报错,后改用chainloader ()/usbldr(grldr0.46a)调用grldr中的usb --init则无报错。因无这种电脑测试,不知USB2.0驱动是否成功加  详情 回复 发表于 2014-6-13 14:04
回复

使用道具 举报

187#
 楼主| 发表于 2014-6-13 12:42:13 | 只看该作者
因此我认为这是 usb --init 存在BUG。

是的。执行 usb --init 命令后,这个驱动程序(不是 BIOS 的驱动程序)枚举 usb 设备,没有找到。可以使用自带延时参数试一试,或者重启试一试。
我的笔记本执行 usb --init 命令后,总是提示 Error 81,热重启则成功。或者在笔记本出现 BIOS 启动选择菜单时,等待 1 分钟以上,再选择 usb 启动,则成功。
笔记本在 Windows 下,插入 u 盘,也的等待 1 分钟以上才有反映。(usb 3.0 主控)

当然是属于 usb 驱动不完善。
回复

使用道具 举报

188#
发表于 2014-6-13 12:48:17 | 只看该作者
能支持碎片真好, 要给yaya点n个赞。
回复

使用道具 举报

189#
发表于 2014-6-13 14:04:20 | 只看该作者
xianglang 发表于 2014-6-13 12:00
我明明是USB启动的啊,启动后也认了UD区和可见区,但是再一执行这个 usb --init 命令,就返不回菜单,而 co ...

我在menu.lst上加一启动USB2.0选项,.LST选项菜单中加usb --init启动会出现Error 81报错,后改用chainloader ()/usbldr(grldr0.46a)调用grldr中的usb --init则无报错。因无这种电脑测试,不知USB2.0驱动是否成功加载。
回复

使用道具 举报

190#
 楼主| 发表于 2014-6-13 15:29:09 | 只看该作者
探测 0x8350 1字节,位7: 0/1=成功/错误; 0x8351 8字节,加载的usb设备驱动器号; 0x8359 2字节,0/非0=未加载usb驱动/usb驱动加载地址(扇区数)
回复

使用道具 举报

191#
发表于 2014-6-16 21:55:44 | 只看该作者
报告一个疑似bug:
一个U盘,UD区512M,分了5G的ntfs分区和1.5G的fat16分区(隐藏、激活)。
使用4.5版本正常,使用4.6的话,会多出来一个(hd0),内容和UD完全一致

QQ截图20140616215207.jpg (818.92 KB, 下载次数: 222)

QQ截图20140616215207.jpg
回复

使用道具 举报

192#
 楼主| 发表于 2014-6-17 09:19:38 | 只看该作者
正常。逻辑0扇区含有 BPB 表,尽管他有分区表,同样可以作为整体驱动器访问。这是特意让他显示的。UD 通过 BIOS 访问磁盘,仍然需要使用 hd0 或者 fd0。

点评

没有明白“特意让它显示”是什么意思? 既然已经设置了“UD”这种模式,那么再显示“HD0”或者“fd0”有点多余吧? 简单的应用举例: 如果全盘搜索指定目录下的文件,那么由于有ud和hd0的存在,相同的文件会显示2  详情 回复 发表于 2014-6-17 09:46
回复

使用道具 举报

193#
发表于 2014-6-17 09:46:01 | 只看该作者
本帖最后由 fukystone 于 2014-6-17 09:49 编辑
2011yaya2007777 发表于 2014-6-17 09:19
正常。逻辑0扇区含有 BPB 表,尽管他有分区表,同样可以作为整体驱动器访问。这是特意让他显示的。UD 通过  ...


没有明白“特意让它显示”是什么意思?
既然已经设置了“UD”这种模式,那么再显示“HD0”或者“fd0”有点多余吧?
简单的应用举例:
如果全盘搜索指定目录下的文件,那么由于有ud和hd0的存在,相同的文件会显示2遍,请问有什么办法避免这种问题吗?

QQ截图20140617094923.jpg (572.62 KB, 下载次数: 211)

QQ截图20140617094923.jpg

点评

(hd0) (fd0) 才是设备本身, BIOS个他的名字。和g4d无关。 (ud) 只是g4d给他的一个别名,为了方便找到(ud)虚拟分区,本来可能是(fd0)或(hd0),现统一为(ud)。 (hd0) (fd0) 比 (ud)更通用,更原始。(hd0) (f  详情 回复 发表于 2014-6-22 18:52
麻烦用这个版本的RUN试下 同样的命令 看是否还会出现重复的情况  详情 回复 发表于 2014-6-20 23:55
回复

使用道具 举报

194#
发表于 2014-6-17 13:39:46 | 只看该作者
赞一个
回复

使用道具 举报

195#
 楼主| 发表于 2014-6-17 17:05:23 | 只看该作者
没有明白“特意让它显示”是什么意思?

不是让 UD 特意显示 hd0 或 fd0,而是让 FDD 模式启动时(逻辑0扇区没有分区表,有 BPB 表),被 BIOS 分配驱动器号 0x80 的 u 盘可以成功启动。
因为 UD 逻辑0扇区符合上述状况,故重复显示了一次。

试一试在自动列出菜单时,增加判定语句,有 UD 则屏蔽 hd0 或 fd0 。

点评

再问一下,这里的hd0和fd0在有ud的时候肯定是没用的吗? 如果判断的标准是“是否存在ud”,那么在ud存在的情况下,有没有可能别的磁盘或镜像使用了hd0或fd0?  详情 回复 发表于 2014-6-17 18:03
回复

使用道具 举报

196#
发表于 2014-6-17 18:03:50 | 只看该作者
2011yaya2007777 发表于 2014-6-17 17:05
不是让 UD 特意显示 hd0 或 fd0,而是让 FDD 模式启动时(逻辑0扇区没有分区表,有 BPB 表),被 BIOS 分 ...

再问一下,这里的hd0和fd0在有ud的时候肯定是没用的吗?
如果判断的标准是“是否存在ud”,那么在ud存在的情况下,有没有可能别的磁盘或镜像使用了hd0或fd0?
回复

使用道具 举报

197#
发表于 2014-6-17 19:38:43 | 只看该作者
ud 的文件系统格式是 fb,从 ud 启动后,fb 文件系统的驱动程序把这个宿主盘也当做 fb 文件系统格式来处理了。这是因为,宿主盘的开头符合 fb 文件系统的格式。

其实也可以修改 fb 文件系统的驱动程序,让其不要驱动宿主盘。不过,究竟这样做有什么好处,还很难说。
回复

使用道具 举报

198#
 楼主| 发表于 2014-6-17 20:35:50 | 只看该作者
这里的hd0和fd0在有ud的时候肯定是没用的吗

在自动列菜单时,作为条件语句屏蔽掉  hd0 或 fd0 ,即不显示重复项目即可。肯定没有问题。
在其他情况下,又不影响什么,没有必要处理他。
比如: cat --hex (ud)+1  则是错误的,但是cat --hex (hd0)+1  则可以。

点评

这个可以 但是如何判定什么时候该屏蔽 什么时候不该屏蔽 比如0.45c需不需要屏蔽  详情 回复 发表于 2014-6-17 20:57
回复

使用道具 举报

199#
发表于 2014-6-17 20:57:03 | 只看该作者
2011yaya2007777 发表于 2014-6-17 20:35
在自动列菜单时,作为条件语句屏蔽掉  hd0 或 fd0 ,即不显示重复项目即可。肯定没有问题。
在其他情况 ...

这个可以  但是如何判定什么时候该屏蔽  什么时候不该屏蔽  比如0.45c需不需要屏蔽
回复

使用道具 举报

200#
 楼主| 发表于 2014-6-17 21:27:43 | 只看该作者
虽然 0.4.5c 不需要屏蔽,但是作为统一处理,在自动列菜单时一起屏蔽(其实就是存在 UD 时,不显示 hd0 或 fd0 的菜单),没有什么影响。
当存在 UD 时,hd0 或 fd0 有一个就是 UD,但是只有一个,需要判断一下的哪个(通过 0x82b9),不要把另一个屏蔽掉。

点评

通过 *0x82b9&0xff 这样获取驱动器号 然后屏蔽相应的??  详情 回复 发表于 2014-6-17 21:51
回复

使用道具 举报

201#
发表于 2014-6-17 21:51:37 | 只看该作者
2011yaya2007777 发表于 2014-6-17 21:27
虽然 0.4.5c 不需要屏蔽,但是作为统一处理,在自动列菜单时一起屏蔽(其实就是存在 UD 时,不显示 hd0 或  ...

通过 *0x82b9&0xff 这样获取驱动器号  然后屏蔽相应的??
回复

使用道具 举报

202#
 楼主| 发表于 2014-6-18 09:24:00 | 只看该作者
通过 *0x82b9&0xff 这样获取驱动器号  然后屏蔽相应的??

正是

点评

还有个问题 如果ud=hd0的情况下 磁盘交换会有什么影响 比如 map (hd0) (hd1) map (hd1) (fd0) map --hook 会相应的多出一个hd1吗  详情 回复 发表于 2014-6-18 17:57
回复

使用道具 举报

203#
发表于 2014-6-18 17:57:53 | 只看该作者

还有个问题  如果ud=hd0的情况下  磁盘交换会有什么影响  比如

map (hd0) (hd1)
map (hd1) (fd0)
map --hook

会相应的多出一个hd1吗

点评

你是不是写错了? 应该是 map (hd1) (hd0) 吧?你写成了 (fd0),通常不会这么映射的。 ud 不受交换盘符的影响。任何 map 命令都不影响 ud 区的使用。 hd0 与 hd1 交换并 hook 之后,hd1 当然就变成了 新的  详情 回复 发表于 2014-6-18 22:47
回复

使用道具 举报

204#
 楼主| 发表于 2014-6-18 19:58:45 | 只看该作者
本帖最后由 2011yaya2007777 于 2014-6-18 20:03 编辑
会相应的多出一个hd1吗

是的。
即便是 0.4.5c,执行 find 时不显示 hd0,但是 hd0 确确实实存在,执行 map (hd0) (hd1) 同样会多出一个 hd1。

对于 UD,我更倾向于把它当作一种文件系统,诸如 fat,ntfs,或者就是 fb,而不把它当作一个磁盘。
回复

使用道具 举报

205#
发表于 2014-6-18 22:47:09 | 只看该作者
sratlf 发表于 2014-6-18 17:57
还有个问题  如果ud=hd0的情况下  磁盘交换会有什么影响  比如

map (hd0) (hd1)

你是不是写错了?

应该是 map (hd1)  (hd0) 吧?你写成了 (fd0),通常不会这么映射的。

ud 不受交换盘符的影响。任何 map 命令都不影响 ud 区的使用。

hd0 与 hd1 交换并 hook 之后,hd1 当然就变成了 新的 hd0,它当然不会是 ud 的宿主盘。真正的宿主盘是旧的 hd0,也就是新的 hd1。

点评

手误 确实应该是hd0 也就是说交换完成后 用find查找(不加--set-root)ud内容的话实际会找到ud和hd1两个设备上对吧 显示的结果也会是类似#189的样子 只是一个是ud一个变成了hd1??  详情 回复 发表于 2014-6-18 23:09
回复

使用道具 举报

206#
发表于 2014-6-18 23:09:33 | 只看该作者
不点 发表于 2014-6-18 22:47
你是不是写错了?

应该是 map (hd1)  (hd0) 吧?你写成了 (fd0),通常不会这么映射的。

手误  确实应该是hd0

也就是说交换完成后  用find查找(不加--set-root)ud内容的话实际会找到ud和hd1两个设备上对吧  显示的结果也会是类似#189的样子  只是一个是ud一个变成了hd1??
回复

使用道具 举报

207#
发表于 2014-6-18 23:21:51 | 只看该作者
ud 区不受 map 影响,但宿主盘经过映射后能否被 fb 驱动程序识别为 fb 文件系统格式,我还不知道。

也可以考虑修改驱动程序,让宿主盘永远不被识别为 fb 文件系统格式。

具体应该怎样,我没有仔细研究过,由开发者来权衡吧。

回复

使用道具 举报

208#
 楼主| 发表于 2014-6-19 09:19:31 | 只看该作者
显示的结果也会是类似#189的样子  只是一个是ud一个变成了hd1??

是这样的。这比较复杂了。视乎首先通过 *0x82b9&0xff 获取 UD 驱动器号,然后看他映射成什么了,比如 hd1,显示菜单时屏蔽 hd1.

点评

就是比较麻烦 获取得到的0x80或者0x0这样的需要转为hd0 fd0这样的形式。。。会出现0x1这样的情况吗  详情 回复 发表于 2014-6-19 12:05
回复

使用道具 举报

209#
发表于 2014-6-19 12:00:42 | 只看该作者
报告一个bug:
新版从cd0启动卡死





环境:VMware® Workstation 9.0.2 build-1031769
回复

使用道具 举报

210#
发表于 2014-6-19 12:05:55 来自手机 | 只看该作者
2011yaya2007777 发表于 2014-6-19 09:19
是这样的。这比较复杂了。视乎首先通过 *0x82b9&0xff 获取 UD 驱动器号,然后看他映射成什么了,比如 hd1 ...

就是比较麻烦  获取得到的0x80或者0x0这样的需要转为hd0 fd0这样的形式。。。会出现0x1这样的情况吗
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-13 06:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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