无忧启动论坛

标题: 支持含有碎片的文件仿真 [打印本页]

作者: 2011yaya2007777    时间: 2014-3-19 11:08
标题: 支持含有碎片的文件仿真
本帖最后由 2011yaya2007777 于 2015-5-17 11:26 编辑

支持含有碎片的文件仿真。最多 32 段碎片。
不加载光驱时,占用 11 Kb 内存。加载光驱时,占用 13 Kb 内存。

同时更该了 usb2.0 驱动设备枚举代码。完善了驱动器号识别。驻留内存精简到 4 Kb。
支持WinXP及后续系统的短文件名大小写。根据短文件名结构偏移0C处:位3=1表示文件名小写,位4=1表示文件扩展名小写。

修正了 udf 格式光盘驱动 bug。

目前已经解决 XP 启动蓝屏,加载 0PE 失败的问题。与 grub4dos 0.4.5c 及旧版 grub4dos 0.4.6a 完全兼容,可以正确地卸载或合并映射插槽。若全部采用新版,则可传递碎片信息。

ntfs 文件系统支持 8Kb 以内的非常驻属性列表。
完善了 iso9600_Joliet 文件格式的识别问题,应对 mkisofs2.01 产生的 bug。

修正了iso9600_Joliet 文件格式转义符显示问题。
增加了更新说明。

支持 16 插槽映射。

ext4 分区支持 64 位功能,支持元块组。
grldr头部、grldr.mbr 支持搜索 gpt 分区的 grldr。
修正了 bootlace,修正了 find。

使用 bootlace.com 安装 grldr.mbr 到 gpt 分区类型的设备。

内置 usb2.0 可以驱动原生4k扇区磁盘。
改进 NTFS 文件系统:
        对于驻留属性文件(小文件),可以写,也可用 blocklist 显示信息。
        对于非驻留属性列表,取消长度限制。

下载地址
http://grub4dos.chenall.net/

加载 usb 驱动失败,反馈失败信息专用 grldr 下载地址
http://bbs.c3.wuyou.net/forum.php?mod=attachment&aid=MjExNjY3fGUyNjFmYjQ2fDE3MTc4MTgxMTh8MHw%3D


作者: jack95    时间: 2014-3-19 12:33
本帖最后由 jack95 于 2014-3-19 12:50 编辑

有没有办法判定文件的碎片是否大于8块?


测试成功,很不错,要是能支持80段碎片就更好了
作者: 2011niumao    时间: 2014-3-19 13:58
很好很方便的功能扩充!下载测试中...
作者: 2012hongrui    时间: 2014-3-19 14:07
这个功能想都想到梦里去了,顶一个,为yaya点个赞。
作者: 2012hongrui    时间: 2014-3-19 14:08
为yaya点个赞!
作者: 2012idle    时间: 2014-3-19 14:26
本帖最后由 2012idle 于 2014-3-19 14:30 编辑

一台明基电脑主板是p4m890t-m2,usb --init 提示 usb 设备未就绪。用 金士顿 dt101  16G U 盘
----------------
更新 使用 usb --delay=3找到 usb 。加载镜像以小段后自动重启
作者: tpss12    时间: 2014-3-19 20:39
本帖最后由 tpss12 于 2014-3-20 10:53 编辑

對不起yaya, 是本人犯了一個嚴重錯誤,指令少打了一個 \ 所致,可正常 ls本機硬碟!

作者: 2011yaya2007777    时间: 2014-3-19 21:16
加载镜像以小段后自动重启

可能负载不足,u盘插倒后置端口。

以此版從u盤啟動grldr,發現無法 ls本機硬碟,

本機硬碟被BIOS分配什么号?find 什么结果?cat 什么结果?
作者: 2012idle    时间: 2014-3-20 00:05
华硕 f8v 方法都试了都是提示未找到 usb 设备请尝试重启(已重启多次)
作者: 3ax31a    时间: 2014-3-20 09:47
支持一个,希望以后更好!
作者: 2012idle    时间: 2014-3-20 10:41
2011yaya2007777 发表于 2014-3-19 21:16
可能负载不足,u盘插倒后置端口。

是后置 USB 口
作者: tpss12    时间: 2014-3-20 10:54
2011yaya2007777 发表于 2014-3-19 21:16
可能负载不足,u盘插倒后置端口。

對不起yaya, 是本人犯了一個嚴重錯誤,指令少打了一個 \ 所致,可正常 ls本機硬碟!
作者: 2011yaya2007777    时间: 2014-3-20 13:17
华硕 f8v 方法都试了都是提示未找到 usb 设备请尝试重启(已重启多次)

1. 华硕 f8v 是否支持 usb3.0 设备?即有没有 usb3.0 插孔?
2. 测试时是否插入 usb2.0 设备?
3. 测试时是否还插入 usb3.0 设备?

作者: 2012rospartner    时间: 2014-3-20 13:49
firadisk不支持碎片的化,ramos还是不能使用碎片img和vhd.
作者: 2012idle    时间: 2014-3-20 13:51
2011yaya2007777 发表于 2014-3-20 13:17
1. 华硕 f8v 是否支持 usb3.0 设备?即有没有 usb3.0 插孔?
2. 测试时是否插入 usb2.0 设备?
3. 测试 ...

那是09 年的笔记本,只有 usb 2.0 口,测试时就只插入那个 U 盘
作者: 2011yaya2007777    时间: 2014-3-20 21:59
本帖最后由 2011yaya2007777 于 2014-3-27 15:16 编辑

请 2012idle 测试。
在命令行执行: usb --init
显示一部分信息后暂停,截图后按任意键继续.
最后进入死循环。

作者: 2012idle    时间: 2014-3-21 10:12
2011yaya2007777 发表于 2014-3-20 21:59
请 2012idle 测试。
在命令行执行: usb --init
显示信息后进入死循环。

明基那个台式结果。华硕 F8V 现在不在我手上,要改天才能测试

DSC_0068.gif (1.36 MB, 下载次数: 427)

DSC_0068.gif

作者: asqw101451    时间: 2014-3-21 10:43
感谢更新,辛苦了
作者: 2011yaya2007777    时间: 2014-3-21 15:35
明基那个台式结果。

从照片看,产品ID为1642的u盘已经被正确识别。
测试华硕 F8V 时,请重新从16楼下载。
作者: 2012idle    时间: 2014-3-21 16:37
2011yaya2007777 发表于 2014-3-21 15:35
从照片看,产品ID为1642的u盘已经被正确识别。
测试华硕 F8V 时,请重新从16楼下载。

不用 usb --init 可以正常启动就是非常慢。使用后从加载的那小段镜像看提速很明显,就是 2 秒不到就重启了。现在那台机器客户已经拿走,无法继续测试。F8V 的,我尽快找时间去测试一下。
作者: 2012idle    时间: 2014-3-21 17:28
本帖最后由 2012idle 于 2014-3-21 17:31 编辑

另外发现用这版本在 富士康 45cm-s 主板上加载 WES7SP1_32_64_CN.iso (6个碎片)启动到一半提示 adp94xx.sys 0xc000098,没有碎片的文件不会。需要提供什么具体的信息?
作者: 2011yaya2007777    时间: 2014-3-21 19:59
加载 WES7SP1_32_64_CN.iso
map --hook之后,read 0x413,将值乘以2,然后以此值截图1扇区
cat --hex (md)0x计算值+1

作者: 2012idle    时间: 2014-3-22 12:42
2011yaya2007777 发表于 2014-3-21 19:59
加载 WES7SP1_32_64_CN.iso
map --hook之后,read 0x413,将值乘以2,然后以此值截图1扇区
cat --hex (m ...


未拍到的都是 000

DSC_0074.gif (1.44 MB, 下载次数: 435)

DSC_0074.gif

作者: 2012idle    时间: 2014-3-22 13:26
正常可用的

DSC_0079 (2).gif (1.4 MB, 下载次数: 433)

DSC_0079 (2).gif

作者: 2012idle    时间: 2014-3-22 13:34
用一楼的的 grldr 引导 mhdd.iso (官方 iso 镜像)出现

QQ截图20140322133214.png (1.27 KB, 下载次数: 455)

QQ截图20140322133214.png

作者: 2012idle    时间: 2014-3-22 17:46
华硕 F8V 的结果

DSC_0088.GIF (1.29 MB, 下载次数: 454)

DSC_0088.GIF

作者: 2011yaya2007777    时间: 2014-3-23 21:44
有一处 bug 已经排除,请从一楼重新下载。
请 2012idle 测试一下 21 楼及 25 楼的情况。
作者: 2011yaya2007777    时间: 2014-3-23 22:16
本帖最后由 2011yaya2007777 于 2014-3-24 07:02 编辑

26楼不是预期结果。
请从16楼重新下载测试。若发生滚屏,请按暂停键。(有的是 PAUSE ,有的是 Fn + F12)
测试时,去除无关紧要的usb设备,仅保留键盘,鼠标,u盘。
作者: 2012idle    时间: 2014-3-24 09:48
本帖最后由 2012idle 于 2014-3-24 09:51 编辑
2011yaya2007777 发表于 2014-3-23 21:44
有一处 bug 已经排除,请从一楼重新下载。
请 2012idle 测试一下 21 楼及 25 楼的情况。


21# 问题解决。25# 情况依旧,华硕 F8V 确实出现滚屏,速度很快,用原来的附件根本来不及暂停,这个我找个时间再去测
使用的 镜像如下

mhdd.7z

403.51 KB, 下载次数: 8


作者: 2011yaya2007777    时间: 2014-3-24 22:00
25#问题已经解决.请从一楼下载.
作者: 2011yaya2007777    时间: 2014-3-24 22:22
测试华硕 F8V ,请从16#重新下载,显示一部分信息后暂停,截图后按任意键继续.
拔掉摄像头,usb猫等,即不需要,又信息超大.
作者: 2012idle    时间: 2014-3-26 09:46
本帖最后由 2012idle 于 2014-3-26 09:47 编辑
2011yaya2007777 发表于 2014-3-24 22:00
25#问题已经解决.请从一楼下载.


25# 问题未再出现。不过发现在某些主板下(如上面的富士康45cm-s 主板) usb -init 需要执行两次才可以,一次执行提示成功,但找不到文件。华硕 F8V 当时测试时除测试用的 U 盘并无外接其它设备。估计是内置的摄像头造成的。
作者: 2012idle    时间: 2014-3-26 14:06
插一个 移动硬盘在 富士康 45cm-s 上 usb --init 认不到

QQ截图20140326140509.png (595.42 KB, 下载次数: 250)

QQ截图20140326140509.png

作者: 2012idle    时间: 2014-3-26 18:30
2011yaya2007777 发表于 2014-3-24 22:22
测试华硕 F8V ,请从16#重新下载,显示一部分信息后暂停,截图后按任意键继续.
拔掉摄像头,usb猫等,即不需要, ...

信息滚动前的。

DSC_0107.JPG (2.67 MB, 下载次数: 242)

DSC_0107.JPG

作者: 2011yaya2007777    时间: 2014-3-26 21:53
本帖最后由 2011yaya2007777 于 2014-3-27 15:17 编辑

33# 富士康 45cm-s
已经检测到u盘,产品ID=0840。至于“执行提示成功,但找不到文件”,等明天更新1楼后再测试。


作者: 2012idle    时间: 2014-3-27 13:57
本帖最后由 2012idle 于 2014-3-27 14:01 编辑
2011yaya2007777 发表于 2014-3-26 21:53
33# 富士康 45cm-s
已经检测到u盘,产品ID=0840。至于“执行提示成功,但找不到文件”,等明天更新1楼后再 ...


一个就是那个低速设备了。执行 usb --init 前 U 盘肯定插入识别了,这些我都是从 那个启动 U 盘上测试的。另外华硕 F8V 那台不用 usb --init 其实速度也还可以,现在就我遇到的情况看,不成功的多半是本来速度还可以的。(新机 h61 b75  h81b85这些都是 usb --init 失败的)
作者: 2011yaya2007777    时间: 2014-3-27 15:19
本帖最后由 2011yaya2007777 于 2014-3-28 21:01 编辑

更正:
34# 华硕 F8V
信息显示,有6个根端口,其中1个插入高速设备。但是没有成功复位。
请再次测试。
作者: 2011yaya2007777    时间: 2014-3-27 15:20
33# 富士康 45cm-s
请从1楼下载后再测试。
作者: 2012idle    时间: 2014-3-28 16:43
2011yaya2007777 发表于 2014-3-27 15:20
33# 富士康 45cm-s
请从1楼下载后再测试。

1 楼的附件,执行 usb --init 后USB 设备未就绪,记得以前某个版本是可以的。http://bbs.wuyou.net/forum.php?m ... amp;authorid=469263 这个时候的版本是可用的
作者: 2012idle    时间: 2014-3-28 19:02
2011yaya2007777 发表于 2014-3-27 15:19
更正:
34# 华硕 F8V
信息显示,有6个根端口,其中1个插入高速设备。但是没有成功复位。

就显示如下结果

2014-03-28_185525.gif (224.35 KB, 下载次数: 276)

2014-03-28_185525.gif

作者: 2011yaya2007777    时间: 2014-3-28 21:04
本帖最后由 2011yaya2007777 于 2015-3-16 10:15 编辑

请 2012idle 再使用这个测试一下 '华硕 F8V' 及 '富士康 45cm-s' .
作者: 2012idle    时间: 2014-3-28 21:45
2011yaya2007777 发表于 2014-3-28 21:04
请 2012idle 再使用这个测试一下 '华硕 F8V' 及 '富士康 45cm-s' .

F8V
分别用两个端口测试的

2014-03-28_214158.gif (185.49 KB, 下载次数: 278)

2014-03-28_214158.gif

2014-03-28_214218.gif (200.38 KB, 下载次数: 272)

2014-03-28_214218.gif

作者: fujianabc    时间: 2014-3-28 23:08
2012rospartner 发表于 2014-3-20 13:49
firadisk不支持碎片的化,ramos还是不能使用碎片img和vhd.

firadisk最近看来有待更新了,按理firadisk支持碎片化更加容易的。
另外,firadisk也不支持win 8.1
作者: 篮下现在、    时间: 2014-3-29 01:10
这是什么,不懂
作者: 2011yaya2007777    时间: 2014-3-29 08:12
F8V
分别用两个端口测试的

请确认,是使用 41# 的 grldr 吗?以前是复位 1 次,这版本是失败后再重复复位 4 次。怎么会没有任何效果?
作者: 2012idle    时间: 2014-3-29 09:50
2011yaya2007777 发表于 2014-3-29 08:12
请确认,是使用 41# 的 grldr 吗?以前是复位 1 次,这版本是失败后再重复复位 4 次。怎么会没有任何效果 ...

我复制进去的,应该没错才对,难道提示是否覆盖点成取消了?因为那台笔记本已经卖给一个朋友了,不是很方便测试,改天我再确认一下。
作者: 2012idle    时间: 2014-3-29 10:05
本帖最后由 2012idle 于 2014-3-29 12:59 编辑
2011yaya2007777 发表于 2014-3-28 21:04
请 2012idle 再使用这个测试一下 '华硕 F8V' 及 '富士康 45cm-s' .


刚看了那个 U 盘,grldr 是昨天编译的,另外富士康 45cm-s 的结果.另外这块板用 11.30 的 grldr 0x1fb 处修改为 02 强制加载可以用

2014-03-29_100101.gif (7.5 KB, 下载次数: 254)

2014-03-29_100101.gif

2014-03-29_100146.gif (231.02 KB, 下载次数: 268)

2014-03-29_100146.gif

作者: 2011yaya2007777    时间: 2014-4-1 10:47
1# 版本可以提交了。
作者: 2012idle    时间: 2014-4-1 12:48
2011yaya2007777 发表于 2014-4-1 10:47
1# 版本可以提交了。

华硕的已经再被卖一手了,已经无法测试。昨天失业了,富士康 45cm-s 主板也碰不到了。这事就到这边了
作者: xyzxp    时间: 2014-4-2 23:11
使用最近几版grldr 启动下边2个PE进入桌面前蓝屏!yaya大看看是不是菜单问题,老版本正常。

title 极速WIN_XPPE维护系统
calc *0x8280 || set mem=yes
calc *0x82b8 && calc *0x82b9&0xff || set mem=yes
echo $[1102] Loading  XP_PE, please wait ...
root (ud)
/BOOT/GRUB/SRSF6
map (ud)/BOOT/NXP.ISO (0xfa)
if %mem%==yes && map --mem (ud)/BOOT/XPB.iso (0xff) ! map (ud)/BOOT/XPB.iso (0xff)
map --e820cycles=3
map --rehook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN
#0
title 极速2003_PE 维护系统   
calc *0x8280 || set mem=yes
calc *0x82b8 && calc *0x82b9&0xff || set mem=yes
echo $[1102] Loading  2003_PE, please wait ...
root (ud)
/BOOT/GRUB/SRSF6
map /BOOT/03pe.ISO (0xfa)
if %mem%==yes && map --mem (ud)/BOOT/03.iso (0xff) ! map (ud)/BOOT/03.iso (0xff)
map --e820cycles=3
map --rehook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN


作者: 2011yaya2007777    时间: 2014-4-3 20:22
请提供你使用的 SRSF6, NXP.ISO, XPB.iso
作者: 2012idle    时间: 2014-4-3 21:26
2011yaya2007777 发表于 2014-4-3 20:22
请提供你使用的 SRSF6, NXP.ISO, XPB.iso

我也发现了同样的问题。用 fbinst tools 启动0pe,加载后在启动界面蓝屏了。出问题的都是 xp/03 pe,win8 pe不会
作者: xyzxp    时间: 2014-4-3 22:10
本帖最后由 xyzxp 于 2014-4-3 23:41 编辑

我使用的是无垠的 FBA版pe  DIY了一下 附件短信已经发送。

http://bbs.wuyou.net/forum.php?m ... &extra=page%3D1
作者: xyzxp    时间: 2014-4-4 00:02
不加载SRSF6依旧蓝屏。

title 极速WIN_XPPE维护系统
calc *0x8280 || set mem=yes
calc *0x82b8 && calc *0x82b9&0xff || set mem=yes
echo $[1102] Loading  XP_PE, please wait ...
root (ud)
map (ud)/BOOT/NXP.ISO (0xfa)
if %mem%==yes && map --mem (ud)/BOOT/XPB.iso (0xff) ! map (ud)/BOOT/XPB.iso (0xff)
map --e820cycles=3
map --rehook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN

。。。。。
作者: 2012fengxi    时间: 2014-4-5 14:42
用这个版本的grub导致firadisk不能识别map -mem的硬盘
作者: fujianabc    时间: 2014-4-6 16:44
2012fengxi 发表于 2014-4-5 14:42
用这个版本的grub导致firadisk不能识别map -mem的硬盘

firadisk已经很久没更新了,也该更新一下了
作者: bolodhzs    时间: 2014-4-9 09:18
下载测试中。。。。
作者: mdyblog    时间: 2014-4-9 10:27
为什么 USB --init
后,我的U盘由(hd0) 变为(fd0) ???????
作者: 2011yaya2007777    时间: 2014-4-9 20:21
为什么 USB --init
后,我的U盘由(hd0) 变为(fd0) ???????

U盘是(hd0),没有分区表,识别为硬盘问题多多,故意为之。这是特色。
作者: xyzxp    时间: 2014-4-9 21:05
2011yaya2007777 发表于 2014-4-9 20:21
U盘是(hd0),没有分区表,识别为硬盘问题多多,故意为之。这是特色。

请问yaya大我反馈的问题如何了?
作者: 2011yaya2007777    时间: 2014-4-10 08:32
还没有找到原因。
只加载1个没有问题。 如 map (ud)/BOOT/XPB.iso (0xff)
加载2个(无论哪个在前)则有问题。
作者: mdyblog    时间: 2014-4-10 13:15
本帖最后由 mdyblog 于 2014-4-10 13:17 编辑
2011yaya2007777 发表于 2014-4-9 20:21
U盘是(hd0),没有分区表,识别为硬盘问题多多,故意为之。这是特色。


我测试的这个恰好有分区表。
USB 前 可以  ls  (hd0,0)/
USB 后 可以  ls  (fd0,0)/
我测试,有没有分区, 都是(hd0)变成(fd0)


1: 这样 以前 可以
map --in-situ (hd0)8000+600000  (hd0)
map (hd0)  (hd1)
map --hook
现在 对应改为
map --in-situ (fd0)8000+600000  (hd0)
这条非法了, 说(fd0) 不支持 --in-situ


2: 这样 以前 可以
map --in-situ (hd0)8000+600000  (fd0)
map (fd0)  (hd1)
map --hook
但是 fd0 还是 U 盘, 甚至 分区表都在。还能  ls  (fd0,0)/, 还是原来的内容。

3:USB 加速 好象, 对PE 启动 有问题。 启动到一半, 就失败了。 (不加速是可以启动的。)




作者: 2011yaya2007777    时间: 2014-4-10 14:50
把分区表贴上来。另外请说明版本。
作者: mdyblog    时间: 2014-4-11 14:05
本帖最后由 mdyblog 于 2014-4-11 19:03 编辑

2011yaya2007777 发表于 2014-4-10 14:50
把分区表贴上来。另外请说明版本。


当时高糊涂了, 那个PE的分区表可以切换。
重新测试了下,确实是没有分区表时才会 (hd0)变(fd0)
谢谢。

另外:
usb --init  (hd0)变为(fd0)后,下面的命令怎么改才能 启动 那个PE.
%ldr% 是  引导文件。
(hd0)%pe%+%ps%   处存储的是一个PE分区IMG。没有usb 是可以启动。


map --heads=255 --sectors-per-track=63  (hd0)%pe%+%ps% (fd1)
map --hook
map (fd1) (fd0)
map (fd0) (fd1)
map --hook
rootnoverify (fd0) && chainloader (fd0)%ldr%  && boot

我在线修该了几次, 不是说 什么 fd0 不支持,就是PE最开始 加载的进度条加载到一半时,死了。

当时在线敲了什么也忘了。
现在想 usb --init
后, 用上面的命令来  USB加速 启动 PE。

作者: 不点    时间: 2014-4-11 20:36
map --in-situ 参数的意思是仅仅虚拟分区表,不虚拟数据扇区。所以,如果没有分区表,那就不能进行虚拟。

另外 --in-situ 参数是为 win98 设计的,现在估计一般都用不上了。因此,长期以来也没有改进相关的代码,比如说,拒绝对软盘的分区表进行操作,因为在早期我们认为,软盘不可能有分区表。

yaya 如果有时间的话,可以尝试修改一下,看看假如允许 --in-situ 对软盘进行操作,会不会出问题?


作者: mdyblog    时间: 2014-4-11 23:32
本帖最后由 mdyblog 于 2014-4-12 10:15 编辑
2011yaya2007777 发表于 2014-4-10 14:50
把分区表贴上来。另外请说明版本。


今天 重新测试了,, 有分区表 还是(hd0) 转为 (fd0).
grub ver: 0.4.6a  2014-03-06


分区表:


PECMD.EXE  导出的详细分区信息 :
磁盘:1
  磁盘信息 磁盘号   大小(字节)         柱面数 磁头数 扇数 扇区 媒体     签名 总线
              1    31009800192           3770    255   63  512   12 C3072E00  7 MBR
  字符说明 激活 __本分区起始__ 分区 __本分区结束__ _______本分区______ ______本分区_______
  激活为0x80    磁头_扇区_柱面 类型 磁头_扇区_柱面 _____起始扇区号____ _____扇区总数______
  主分区1: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  主分区2: 0x00 0x7A 0x3C 0x7F 0x07 0xE3 0xA7 0xFC 0x00 0x40 0x1F 0x00 0x00 0x40 0x9C 0x00
  主分区3: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  主分区4: 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
  标志   : 0x55 0xAA
  全部分区: -1  1   -3  -4
  分区  类型 激活(1) 起始(字节)     长度(字节)    隐藏扇区     结尾(字节) 物理# 盘符
    -1  0x00   0              0              0           0              0    1   
     1  0x07   0     1048576000     5242880000     2048000     6291456000    2  F:
    -3  0x00   0              0              0           0              0    3   
    -4  0x00   0              0              0           0              0    4   
DiskGinus 分区表备份, MBR备份见附件。

U盘分区.MBR.zip

20.13 KB, 下载次数: 1


作者: mdyblog    时间: 2014-4-11 23:36
不点 发表于 2014-4-11 20:36
map --in-situ 参数的意思是仅仅虚拟分区表,不虚拟数据扇区。所以,如果没有分区表,那就不能进行虚拟。
...

那里 是一个 分区IMG, 就缺一个 分区表, 就是 硬盘了。
需要方便的 模拟一个硬盘分区   (hd0,0)。

支持 98 因该就可以了。
启动PE, 也是实模式 模拟而已, 是WIM 启动。 调入内存后就不要这个 虚拟盘了。

作者: 2011yaya2007777    时间: 2014-4-12 07:17
本帖最后由 2011yaya2007777 于 2014-4-12 07:20 编辑

由于分区表没有激活,故判定为无分区表。你既然可以切换,没有激活,那一定是当成软盘,使用 BPB 表参数了。
不使用 --in-situ ,试一试重建分区 partnew 指令。

我研究一下,--in-situ 如何支持软盘。
作者: 不点    时间: 2014-4-12 07:30
没有激活分区的分区表,也是合法分区表。不应该判定为非法分区表。


作者: mdyblog    时间: 2014-4-12 10:10
本帖最后由 mdyblog 于 2014-4-12 10:12 编辑
不点 发表于 2014-4-12 07:30
没有激活分区的分区表,也是合法分区表。不应该判定为非法分区表。


是啊!!!
windows  DIskGinus 都认啊。
只要 有最后的55AA , 且最少 有一个合法的 分区表项, 就是 合法/有 分区表啊!!

判定 "合法的 分区表项 " 应该 通过 ”分区类型字节非0“ 来判断,其它15字节不管了。

》》重建分区 partnew 指令
这个 不太友好, 就用 来启动一下, 就修改人家的分区表。 人家不设激活,有人家的道理---那只是一个数据分区。


作者: mdyblog    时间: 2014-4-12 10:24
本帖最后由 mdyblog 于 2014-4-12 14:39 编辑

2011yaya2007777 发表于 2014-4-12 07:17
由于分区表没有激活,故判定为无分区表。你既然可以切换,没有激活,那一定是当成软盘,使用 BPB 表参数了 ...


》》我研究一下,--in-situ 如何支持软盘。
1:
这应该  本来该就不是一个 软盘吧。 只是被登记在fd下而已。
U盘 不受软盘操作的限制。

2:
另外, 能否 usb --init 命令能否加一个开关, 强制 hd还是 fd.
usb --type  typeparam  --init
如:
usb --type  %?_BOOT%  --init
usb --type  %@root%  --init
如果typeparam 以(fd 或fd开头或0-0x7F(除掉几个),(当前U盘) 就强制fd
如果typeparam 以(hd 或hd开头或0x80-0x9F, (当前U盘) 就强制hd
如果typeparam 以(cd 或cd开头或0xA0-XX, (当前U盘) 就强制cd
。。。

这样启动菜单可以前后一致。
实际上 最主要的还是用来后续启动的设备(先root, 那么就是root设备)。

3:还可以这样确定 磁盘的类型,保持不变。
记住磁盘的 签名(4字节)  和 磁盘大小等细节。
usb 2.0 驱动后,
再根据这些 信息,恢复原来的类型。



作者: 2011yaya2007777    时间: 2014-4-14 10:16
本帖最后由 2011yaya2007777 于 2014-4-14 10:30 编辑
由于分区表没有激活,故判定为无分区表

这句话表述的不够严谨,应当是分区表无效。
实际是,usb 驱动要确定启动盘,并获取相应驱动器启动分区的参数。你的逻辑0扇区,既有分区表又有 BPB 表。分区表没有一项激活,明显说明你是以 FD  方式启动。“那个PE的分区表可以切换”,说明他可以在 FD 和 HD之间切换,而当前正在 FD 模式,故识别为软盘启动没有任何错误。
至于后续启动的设备,可以使用 find --set-root 确定其根目录。
作者: mdyblog    时间: 2014-4-14 11:37
本帖最后由 mdyblog 于 2014-4-14 11:43 编辑
2011yaya2007777 发表于 2014-4-14 10:16
这句话表述的不够严谨,应当是分区表无效。
实际是,usb 驱动要确定启动盘,并获取相应驱动器启动分区的 ...


1:
还是希望 保持原来的新式。
原来是(hd) 还是(hd)
原来是(fd)还是(fd)

要么程序自己记住。
要么提供一个开关  --type  typeparam
usb --type  typeparam  --init

2:
>>分区表没有一项激活,明显说明你是以 FD  方式启动。
这个不对啊。
启动时 还没到 分区启动, 所以 当前 是 HD还是 FD 和此无关。
比如 grub4dos装在MBR。
grub4dos启动时, 还没进分区。
grub4dos后续操作 也不需要  “分区表项激活”,  grub4dos启动分区 不看这个的。

“分区表项激活” 目前,只是 MS 的默认 MBR-CODE 用来启动分区; grub4dos不用, 一般直接菜单选择。


作者: 不点    时间: 2014-4-14 11:59
本帖最后由 不点 于 2014-4-14 12:02 编辑

grub4dos 的 C 语言源代码有一个函数 probe_mbr() ,经过了长期的改造,现在应该十分稳定。它能够严格地检查分区表的合法性。随机的乱数据很难通过检查。同时,它又能适应所有的分区软件所建立的分区表(至少目前没有见到失败报告)。诚如 mdyblog 所说,有没有激活项,不能成为判断软盘或硬盘的标准。分区表是否合法,才应该成为判断的标准。
作者: 2011yaya2007777    时间: 2014-4-14 21:07
本帖最后由 2011yaya2007777 于 2014-4-18 11:06 编辑
还是希望 保持原来的新式。

试一试这个.
作者: hhh333    时间: 2014-4-15 05:45
如何判断是4.5c还是4.6a
作者: mdyblog    时间: 2014-4-15 22:50
本帖最后由 mdyblog 于 2014-4-15 22:52 编辑
2011yaya2007777 发表于 2014-4-14 21:07
试一试这个.


usb --init
后 (hd0) 还是 (hd0)

不过有个奇怪的新问题,下面的代码不能工作了。
map  (%boot%)0x4100+0x400000  (fd1)
map --hook
map  (fd1)   (fd0)
map  (fd0)   (fd1)
map --hook

-------
//其中, boot  是0x8280地址返回的, 看了下正确的。0x80.
访问 (fd0) 无效。
单步试了下,
第一个 --hook 后正常,(fd1) 可访问。
在 转为 (fd0) 后,就不能访问了。
真奇怪了, 上面代码没有问题啊!!!!
作者: 不点    时间: 2014-4-15 23:22
您的代码等价于如下的简化代码:

map  (%boot%)0x4100+0x400000  (fd0)
map  (fd0)   (fd1)
map --hook

您可以先核实一下这个简化代码是否能够工作?


作者: mdyblog    时间: 2014-4-16 16:40
本帖最后由 mdyblog 于 2014-4-16 16:43 编辑
不点 发表于 2014-4-15 23:22
您的代码等价于如下的简化代码:

map  (%boot%)0x4100+0x400000  (fd0)


//这个没问题的。
//我这样能启动PE。
//
//原来应该没问题啊!????

看错了。 晚上回去试试。

我现在这样能启动PE。
map  (%boot%)0x4100+0x400000  (fd0)
map --hook
root (fd0) ......
作者: 不点    时间: 2014-4-16 20:09
那就让 yaya 解决 78 楼的问题吧。应该是个 bug 了。


作者: mdyblog    时间: 2014-4-16 22:15
不点 发表于 2014-4-15 23:22
您的代码等价于如下的简化代码:
map  (%boot%)0x4100+0x400000  (fd0)
map  (fd0)   (fd1)
map --hook
您可以先核实一下这个简化代码是否能够工作?

测试。 可以启动。
作者: 2011yaya2007777    时间: 2014-4-18 11:13
在 转为 (fd0) 后,就不能访问了。
真奇怪了, 上面代码没有问题啊!!!!


78# 的问题已经解决。

使用最近几版grldr 启动下边2个PE进入桌面前蓝屏!

50# 启动 WinXP 出现 7f 蓝屏问题,终于解决了。

请从 1# 下载。
作者: 2011yaya2007777    时间: 2014-4-18 11:24
可以尝试修改一下,看看假如允许 --in-situ 对软盘进行操作,会不会出问题?

假如允许 --in-situ 对软盘进行操作,需要探测 from 及 to 驱动器有没有分区表,在具有的情况下,才能执行。
还需要预先读 from 及 to 驱动器。比较啰嗦。等有特别需求时再更改吧。

请教不点,好像程序头部把内置菜单移动到 3M 处,其他没有移动。但是有的函数将 0x1F000,0x20000,0x2F000 等内存作为缓存,岂不是覆盖了 grldr ?
作者: 2011yaya2007777    时间: 2014-4-18 11:28
如何判断是4.5c还是4.6a

程序末尾有个签名,但位置容易变动,不宜从命令行获得。如果有特别理由,可以设置一个识别字节。
作者: xyzxp    时间: 2014-4-18 13:35
2011yaya2007777 发表于 2014-4-18 11:13
78# 的问题已经解决。

实机测试蓝屏问题解决了,以前进入PE认不到 U 盘问题也没有了,感谢 YAYA 大辛苦了!
作者: mdyblog    时间: 2014-4-18 14:15
本帖最后由 mdyblog 于 2014-4-18 14:31 编辑
2011yaya2007777 发表于 2014-4-18 11:24
假如允许 --in-situ 对软盘进行操作,需要探测 from 及 to 驱动器有没有分区表,在具有的情况下,才能执 ...



1:
to 的 分区表 不需要 探测。
这条命令  不是模拟下有磁盘的 某个分区, 那样泰复杂了, 目前好像也没必要。
而是直接 建立一个虚拟硬盘, 伪造一个分区表,分区的 内容 就用的 制定的内容。

2:
我说的那种情况 的 --in-situ 不需要  from 探测分区表。
只有指定 (fd0,0)  这种形式 的 from 才需要。用来找到 数据源。
此种 可以转为 下面我现在用的这种情况。


我这里  数据源已经 已经是扇区序列形式了  (fd0)A+B, 不用再通过分区表找了。

综上所叙,这种情况的 难度就大大降低了。
希望先把这种情况解决。至于 (fd0,0)这种from, 再慢慢来。
作者: mdyblog    时间: 2014-4-18 14:27
本帖最后由 mdyblog 于 2014-4-18 14:28 编辑
2011yaya2007777 发表于 2014-4-18 11:28
程序末尾有个签名,但位置容易变动,不宜从命令行获得。如果有特别理由,可以设置一个识别字节。


干脆开1K的常数区 和4K的变数区。位置固定。

1K的常数区 :放版本等系统信息。以后加。有点用的都加上。

4K的变数区: 类似变量, 但没有名字,不会被set 清空,不会被其它程序(脚本)覆盖。
                   目前由于机制原因,变量数太少。容易溢出。
  开始 4字节 保存尾指针, 和pop指针(frame pointer)。
   脚本开始 pushv或pushva(自动popv), 脚本返回 自动或手动popv.
作者: xyzxp    时间: 2014-4-18 15:20
本帖最后由 xyzxp 于 2014-4-18 15:35 编辑

title 极速2003_PE 维护系统   
echo $[1102] Loading  2003_PE, please wait ...
usb --init
calc *0x8280 || set mem=yes
calc *0x82b8 && calc *0x82b9&0xff || set mem=yes
root (ud)
/BOOT/GRUB/SRSF6
map (ud)/BOOT/03pe.iso (0xfa)
if %mem%==yes && map --mem (ud)/BOOT/03.iso (0xff) ! map (ud)/BOOT/03.iso (0xff)
map --e820cycles=3
map --rehook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN

在我的另外一台机器上测试 加载SRSF6后又不能进入桌面了(XPPE情况相同 usb --init 加不加都一样),菜单取消这一行 /BOOT/GRUB/SRSF6正常,老版本也正常。

菜单加这一行 /BOOT/GRUB/SRSF6后出现下边图片情况:




作者: 2012idle    时间: 2014-4-18 16:32
2011yaya2007777 发表于 2014-4-18 11:13
78# 的问题已经解决。

直接用 run /0PE.iso 启动 0PE还是 7F 蓝屏。
作者: 2011yaya2007777    时间: 2014-4-18 16:44
本帖最后由 2011yaya2007777 于 2014-4-18 17:14 编辑

我在虚拟机测试,强制加载 SRSF6 失败后,任可以进入桌面。
好像没有加载  (ud)/BOOT/03pe.iso (0xfa)
你从 1# 重新下载一个试一试,前一个有问题。

实机测试,有一次如你所测,其他 5 次任意选择方案,加载失败后正常进入桌面。
作者: 2011yaya2007777    时间: 2014-4-18 17:18
直接用 run /0PE.iso 启动 0PE还是 7F 蓝屏。

如果使用 map 没有问题,那就不是当前版本的问题。
作者: xyzxp    时间: 2014-4-18 17:49
本帖最后由 xyzxp 于 2014-4-18 17:55 编辑
2011yaya2007777 发表于 2014-4-18 16:44
我在虚拟机测试,强制加载 SRSF6 失败后,任可以进入桌面。
好像没有加载  (ud)/BOOT/03pe.iso (0xfa)
你 ...


下午版本和上午版本实机测试现象一样。


我测试几次都不行。
作者: 2012idle    时间: 2014-4-18 17:50
本帖最后由 2012idle 于 2014-4-18 17:59 编辑
2011yaya2007777 发表于 2014-4-18 17:18
如果使用 map 没有问题,那就不是当前版本的问题。


同样直接用 run
使用 2014.01.17 的 grldr 可以正常启动

1# 的 grldr 用

  1. map /0pe.iso (0xff)
  2. map --hook
  3. chainloader (0xff)
  4. 依旧是蓝屏
复制代码

作者: 2011yaya2007777    时间: 2014-4-18 18:12
7f 蓝屏,后面括号里的数据是什么?
作者: 510819776    时间: 2014-4-18 18:20
支持了 这个好呀  不知道支持gpt不
作者: mdyblog    时间: 2014-4-18 20:19
510819776 发表于 2014-4-18 18:20
支持了 这个好呀  不知道支持gpt不

支持GPT。
作者: mdyblog    时间: 2014-4-18 23:51
本帖最后由 mdyblog 于 2014-4-18 23:57 编辑
2011yaya2007777 发表于 2014-4-18 11:13
78# 的问题已经解决。



usb 命令没了?



78#楼问题没发测。 (原来是 usb 后执行的)

作者: 2011niumao    时间: 2014-4-19 15:02
4月18日版本很棒。

使用grub4dos的map命令 引导arch-linux-vhd 终于成功了。
   
原来测试过第一个版本,没有成功。
作者: 2011niumao    时间: 2014-4-19 15:04
mdyblog 发表于 2014-4-18 20:19
支持GPT。

有此惊喜阿???不太敢相信。不过我也用不到。无法测试。
作者: mdyblog    时间: 2014-4-19 15:08
本帖最后由 mdyblog 于 2014-4-19 15:12 编辑
2011niumao 发表于 2014-4-19 15:04
有此惊喜阿???不太敢相信。不过我也用不到。无法测试。


用 MBROS (UDv2) ,再选用  grldr 为 BIOS启动器, 即可。

测试很容易: 那个U盘,用DiskGinus 删除所有分区,转为GPT。
再用  MBROS (UDv2) 格式化, 拷入 grldr, 编辑menu.lst
        




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