无忧启动论坛

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

支持含有碎片的文件仿真

    [复制链接]
31#
 楼主| 发表于 2014-5-1 16:10:29 | 显示全部楼层
1# 已经更新。
支持最多 32 段碎片。可以在 0PE 下正常运行了。
回复

使用道具 举报

32#
 楼主| 发表于 2014-5-2 06:54:22 | 显示全部楼层
交换一下驱动器:
map (hd0) (hd)
map (0) (hd0)
map --hook
find --set-root /boot/win8.1.iso
回复

使用道具 举报

33#
 楼主| 发表于 2014-5-2 17:23:35 | 显示全部楼层
有一处失误,已经修正于 1#。
请 mdyblog  测试。
回复

使用道具 举报

34#
 楼主| 发表于 2014-5-4 21:19:34 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2015-3-16 10:16 编辑

请 mdyblog  测试。
回复

使用道具 举报

35#
 楼主| 发表于 2014-5-5 10:35:19 | 显示全部楼层
请教不点:
asm.S 中有 段代码,不太理解,请赐教。它牵扯到是否需要恢复旧的EMU的数据。
  1.         movw        0x413, %ax                /* Memory size in Kb */
  2.         shlw        $6, %ax                        /* Memory size in paragragh */
  3.         cmpw        0x4E, %ax                /* 0000:004E=current int 13 segment */
  4.         jne        1f                        /* not hooked */

  5.         movw        %ax, %ds                /* DS=current int13 code segment */

  6.         /* check our int13 signature "$INT13SFGRUB4DOS" */
  7.         cmpl        $0x544E4924, 0x103        /* $INT */
  8.         jnz        2f
  9.         cmpl        $0x46533331, 0x107        /* 13SF */
  10.         jnz        2f
  11.         cmpl        $0x42555247, 0x10B        /* GRUB */
  12.         jnz        2f
  13.         cmpl        $0x534F4434, 0x10F        /* 4DOS */
  14.         jnz        2f
复制代码
回复

使用道具 举报

36#
 楼主| 发表于 2014-5-5 13:13:38 | 显示全部楼层
唉,真笨。知道 movw  0x413, %ax 是把 0x413 处的内容赋给 ax,却没理解 cmpw 0x4E, %ax 是比较 0x4e 处存储的值,以为是比较 0x4e 这个值。低级错误。
回复

使用道具 举报

37#
 楼主| 发表于 2014-5-13 10:57:25 | 显示全部楼层
1# 已经更新,请下载。
回复

使用道具 举报

38#
 楼主| 发表于 2014-5-13 19:50:09 | 显示全部楼层
是测试版.
blocklist 路径/文件名
回复

使用道具 举报

39#
 楼主| 发表于 2014-5-13 20:58:22 | 显示全部楼层
0502和0513版都有一个问题  vmware虚拟机测试的  执行find --devices=h 结果会包含 (cd) 设备和所有 (hd)设备

0.4.6a 版本可以查找被 BIOS 识别为硬盘,但是没有分区表的磁盘或img文件。由于 vmware 虚拟机启动光盘时,分配驱动器号为 0x9f,故包含在硬盘范围(0x80-0x9f)。
已经修正于 1#。
回复

使用道具 举报

40#
 楼主| 发表于 2014-5-26 13:30:06 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2014-5-26 13:32 编辑

是执行完这一行
command (bd)/SYS/SISO RUN="--automenu --not-show.exe /TEMP/"
然后再执行
map --mem (bd)/SYS/WINPE.ISO (0xff)
时提示找不到文件?

不要关闭 debug,在命令行下逐条执行,是否执行第一项后改变了 bd?
如果是,那后一项不使用 bd, 使用 ud 好了.
回复

使用道具 举报

41#
 楼主| 发表于 2014-6-4 16:05:45 | 显示全部楼层
ntfs 文件系统支持 16Kb 以内的非常驻属性列表。
回复

使用道具 举报

42#
 楼主| 发表于 2014-6-5 08:20:27 | 显示全部楼层
进入菜单或命令行,顶部有版本信息。
回复

使用道具 举报

43#
 楼主| 发表于 2014-6-6 06:40:30 | 显示全部楼层
以前 fsys_ntfs.c 占用内存 3e0000-3e5fff;现在占用 3e0000-3ebfff。
死机的原因应当是加载 G4D 之后,加载 WinXP 之前,运行的某个程序产生了内存冲突。

点评

小心点,有可能是你多占用的内存所导致的内存冲突。grub4dos 的内存占用比较乱,没有仔细归纳总结,很容易自己就产生冲突。  详情 回复 发表于 2014-6-10 11:14
最近一次的修改是否有问题 如下图 之前的版本没问题  详情 回复 发表于 2014-6-8 13:46
回复

使用道具 举报

44#
 楼主| 发表于 2014-6-10 10:59:22 | 显示全部楼层
压缩文件映射时应当使用 --mem 参数解压到内存。
以前版本对于压缩文件映射时没有 --mem 参数,则提示错误60:文件在磁盘不连续。当前版本没有提示,以后打个补丁。
回复

使用道具 举报

45#
 楼主| 发表于 2014-6-11 15:24:42 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2014-6-11 16:26 编辑
原来看帖子里说强制加载 usb 驱动是要修改grldr文件里的两个字节

在菜单或命令行输入: usb --init

一个512MB 的 TF卡+读卡器组合

请上传磁盘镜像文件.

点评

加入 usb --init 命令解决问题。谢谢丫丫。  详情 回复 发表于 2014-6-11 20:23
回复

使用道具 举报

46#
 楼主| 发表于 2014-6-11 20:31:48 | 显示全部楼层
加入 usb --init 命令解决问题。

我还是想弄清楚不加载 usb 驱动,为什么会丢失可见分区。方便的话,请上传TF卡的镜像文件。

点评

说明一下,我的那个LDRNTD文件,是放在可见区的/GRUB目录下的,UD区里也同样有/GRUB假目录,不过没有这个文件。UD区导致的镜像文件,请点击这个链接 http://pan.baidu.com/s/1gdDZO0j 下载。  详情 回复 发表于 2014-6-11 20:43
回复

使用道具 举报

47#
 楼主| 发表于 2014-6-12 10:27:45 | 显示全部楼层
清楚了,立即修正。
回复

使用道具 举报

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

使用道具 举报

49#
 楼主| 发表于 2014-6-13 08:44:23 | 显示全部楼层
usb --init 出现的提示信息是:

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

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

是这个意思。
回复

使用道具 举报

50#
 楼主| 发表于 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 驱动不完善。
回复

使用道具 举报

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

使用道具 举报

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

使用道具 举报

53#
 楼主| 发表于 2014-6-17 17:05:23 | 显示全部楼层
没有明白“特意让它显示”是什么意思?

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

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

使用道具 举报

54#
 楼主| 发表于 2014-6-17 20:35:50 | 显示全部楼层
这里的hd0和fd0在有ud的时候肯定是没用的吗

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

使用道具 举报

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

使用道具 举报

56#
 楼主| 发表于 2014-6-18 09:24:00 | 显示全部楼层
通过 *0x82b9&0xff 这样获取驱动器号  然后屏蔽相应的??

正是
回复

使用道具 举报

57#
 楼主| 发表于 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,而不把它当作一个磁盘。
回复

使用道具 举报

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

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

使用道具 举报

59#
 楼主| 发表于 2014-6-19 13:06:22 | 显示全部楼层
会出现0x1这样的情况吗

从 UD 启动,被 BIOS 识别为 fd0,如果执行 map (fd0) (fd1),就会出现 fd1==UD 。
不从 UD 启动,就不会出现。
回复

使用道具 举报

60#
 楼主| 发表于 2014-6-19 20:45:53 | 显示全部楼层
新版从cd0启动卡死

1#已经修正。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-26 13:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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