无忧启动论坛

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

支持含有碎片的文件仿真

    [复制链接]
31#
发表于 2014-8-16 11:16:54 | 显示全部楼层
本帖最后由 mdyblog 于 2014-8-19 05:20 编辑
不点 发表于 2014-8-15 10:32
看到你在 MBROS 那个帖子 28 楼的 “原理知识普及”,满怀希望能看到真正的讲解,却只得到了几行含糊不清的 ...


不点大师,你好!

一。 是 完全免费且无功能限制,不是开源(至少目前还没开)。



二。

分开将,某些特点别的软件也有。作为一个用户解决方案, 整个作为一个大特点吧。

1. 安全。象UD一样,UDm是一个深度隐藏区,普通的程序无法访问。(这个  UD也支持。)

2. 万能U盘启动。采用和UD相似的方法来支持U盘BIOS启动,理论上同样有高的成功率。(这个  UD也支持。)

3. 支持UEFI启动-----*****

4. 支持 GPT分区-----*****

5. 有标准文件系统,
   因此可在系统或PE中直接挂载到盘符(只读/可写),并且被更多的启动器支持,例如grub4dos, grub, grub2, linux。支持直接挂载,使得PE可以避免数据搬移就能直接访问UDm分区。
    grub4dos、grub2、windows、linux,  等不必为UDM专门开发驱动程序。


6. 容易修复。"引导部分"  可随时恢复, 分区表丢失可随时重新设定。(UD就支持 “引导码” 修复。)

7. 支持 只读的 “软光盘”-----*****
   插到一般机器上,自动加载盘符,但是 是只读的。 这样保护MBROS系统不受误操作和病毒影响。
    和 “深度隐藏” 是排斥选项, 可以切换 模式。
   MBROSTOOL 可以修改,升级其内容。

8. 支持 只读的 “钢光盘”-----*****
   内容不能修改。 但可以重新换个ISO(只是更新保留空间部分,其它的数据和启动信息不动)。
   作为多分区中的一个UDm分区。

9. 支持 多种包的直接软量产
   iso zip rar 7z fba mos  img  ...

大概就是解决这些问题吧。
回复

使用道具 举报

32#
发表于 2014-8-16 11:26:31 | 显示全部楼层
本帖最后由 mdyblog 于 2014-8-16 11:28 编辑
135956 发表于 2014-8-15 19:01
我也看得头晕。。。反复没看完。。。最终点击浏览器的右上角按键了事。

你好!
那个说明书, 是 “操作”说明书。
需要对着软件看。 光看不做,理解很难的。(很多操作逻辑就在界面上,一目了然)
拿个U盘, 安个VM虚拟机。 边操作边看说明书。
操作在VM中。
启动测试在实机上。
回复

使用道具 举报

33#
发表于 2014-8-19 07:32:26 | 显示全部楼层
不点 发表于 2014-8-11 15:39
你这属于 “开拓、尝试、创新”。这期间会出现很多意想不到的问题。有的是自己的编程失误造成的,有的是对 ...

怎么运行内存中的脚本?
(md)0x200+1
是一段#!BAT 引导的 脚本。 不是菜单。
怎么运行它啊?
回复

使用道具 举报

34#
发表于 2014-8-20 18:02:30 | 显示全部楼层
本帖最后由 mdyblog 于 2014-8-20 18:13 编辑
不点 发表于 2014-8-19 10:53
运行一个程序文件或脚本批处理文件,其方法都是一样的,可以采用以下两种方法之一:

1、用 “ command  ...


谢谢回复。
我原来也是这么想的,但是失败:不认识的格式。


是不是设计有这个功能, 但是出问题了,没工作。
回复

使用道具 举报

35#
发表于 2014-8-20 18:20:02 | 显示全部楼层
pseudo 发表于 2014-8-20 18:12
作为批处理标识,批处理文件内容要以
!BAT
开头吧。而你用

谢谢!!!
犯了低级错误。
LINUX习惯了(#!开头)。 没有复查资料。
可以了。

再次感谢!!

回复

使用道具 举报

36#
发表于 2014-8-20 18:22:22 | 显示全部楼层
pseudo 发表于 2014-8-20 18:12
作为批处理标识,批处理文件内容要以
!BAT
开头吧。而你用


请教, G4D 有alilias 之类的机制吗?
alias cmda=(md)0x200+1
以后直接用 有意义点的名字:  cmda
不用没什么意义的: (md)0x200+1

点评

有幸目睹grub4dos的变量、批处理从无到有的发展过程,印象中没有这样的机制。 不过可以试试 set cmda=(md)0x200+1 %cmda% command %cmda% call %cmda% call %^cmda% 是否接近你的意图。  详情 回复 发表于 2014-8-21 15:53
回复

使用道具 举报

37#
发表于 2014-8-21 16:52:15 | 显示全部楼层
不点 发表于 2014-8-20 18:35
很抱歉,批处理功能是 chenall 开发的,我只是猜测应该这样运行。

我真的没有研究过它启动的细节。

谢谢!
回复

使用道具 举报

38#
发表于 2014-8-22 18:05:07 | 显示全部楼层
本帖最后由 mdyblog 于 2014-8-22 18:17 编辑
不点 发表于 2014-7-26 19:16
估计是你搞错了,造成莫名其妙的错觉。
你可以看看 asm.S 开头的那些变量,尤其是 install_partition 和 boot_drive 变量。
传入的 DL 的值会被 0000:8200 处的代码自动存入到 boot_drive 变量中。
但 DH 值不会被自动存入 install_partition 的位 16 - 位 24 的字节上,你必须在传递控制之前修改好,即,你需要自己把 DH 的值存入 install_partition 的位 16 - 位 24 的字节上,然后再把控制转移到 0000:8200 处的代码。
同时,如果 0000:7C00 处含有合法的 BPB 引导扇区,则 grub4dos 有可能会利用这个 BPB 表来确定启动盘的信息。
就是说,在传递控制之前,如果能保证 0000:7C00 处含有某个主分区的引导扇区(或者碰巧是这样),则这个主分区就可能被 grub4dos 当作 boot 设备(以及当前 root 设备)。


你是说这些变量(尤其红色)需要初始化,是吗?0000:8208  我必须先写入实际DH值。

有正确DL,故 可不初始化0000:8280。


0000:8208  4字节(即双字) 启动分区号 install_partition (the boot partition)
0000:8280  4字节(即双字) 启动驱动器号(boot_drive)
0000:829C  4字节(即双字) 当前根分区号(current root partition)
0000:82A0  4字节(即双字) 当前根所在的驱动器(current root drive)



点评

建议你不要切掉开头 16 扇区,不要把事情复杂化。恕我直言,我看不到复杂化以后有什么好处。  详情 回复 发表于 2014-8-22 18:31
回复

使用道具 举报

39#
发表于 2014-9-4 11:13:10 | 显示全部楼层
本帖最后由 mdyblog 于 2014-9-4 11:31 编辑
chenall 发表于 2014-9-3 22:27
麻烦有这个问题的朋友试一下grub4dos.chenall.net的最新版本.

可能是由于我上一个版本修改了变量的地 ...


请问 setlocal的问题。
setlocal  和 endlocal之间,
我想临时设置一下 系统变量怎么写?
  1. setlocal
  2. set aa=111
  3. ... ...
  4. ###我想这里要设置 系统变量ss为%aa%_sys
  5. ##后面aa等局部变量还要用
  6. ... ...
  7. endlocal
复制代码





还有个麻烦, endlocal 后, 前面设置的 root 也作废了。

点评

需要明白的是 setlocal相当于一个新的环境(包括变量路径等设置) endlocal用于恢复之前的环境 如果需要使用到setlocal里面的变量则可以这样. setlocal set aa=1234 root (hd0,5) endlocal && set root=%@r  详情 回复 发表于 2014-9-4 11:56
回复

使用道具 举报

40#
发表于 2014-9-4 12:02:59 | 显示全部楼层
chenall 发表于 2014-9-4 11:56
需要明白的是
setlocal相当于一个新的环境(包括变量路径等设置)
endlocal用于恢复之前的环境

谢谢!!!!
原来写在一行啊!怪不得怎么都不成功。
试试。。。
回复

使用道具 举报

41#
发表于 2014-9-6 12:59:21 | 显示全部楼层
本帖最后由 mdyblog 于 2014-9-8 10:26 编辑

----
回复

使用道具 举报

42#
发表于 2014-10-8 10:17:23 | 显示全部楼层
本帖最后由 mdyblog 于 2014-10-8 15:03 编辑

这个不知道是否是个grub.exe的BUG?
本来的root分区为(cd). wee63 如下代码启动 grub.exe, grub.exe的root分区并没有更新为(hd0,0)
  1. root (hd0,0)
  2. command /boot/grub/grub.exe --config-file="echo root=[%@root%]; pause --wait=30 "
复制代码
显示的root=[(cd)]
而不是 root=[(hd0,0)]

上面 root (hd0,0)生效了, 因为(cd)没有 /boot/grub/grub,.exe,只有 (hd0,0)有。
最新 0.45出0.46都如此。

回复

使用道具 举报

43#
发表于 2014-10-8 15:00:55 | 显示全部楼层
请问,map 的信息如何完全屏蔽,又不丢失 条件码? 如图所示:

点评

debug off 也没屏蔽掉 map 的输出?不会吧?这大概得让 chenall、yaya 去解决了。  详情 回复 发表于 2014-10-8 15:23
回复

使用道具 举报

44#
发表于 2014-10-8 15:05:28 | 显示全部楼层
本帖最后由 mdyblog 于 2014-10-8 15:09 编辑
不点 发表于 2014-10-8 11:27
你的命令行敲错了,grub.exe 中间插入了一个多余的逗号。

根据你的描述,目前我初步认为,这不是 bug。
...


逗号是笔误, 拷贝到帖子上时笔误。实际没有。否则也出不了上图。

意思是grub.exe 无法像grldr 一样 传递 当前 根分区信息。
这和一般理解和习惯很不同啊!!
可惜啊。

还有,这个原因出在 调用者wee63 还是 被调用者grub.exe???
能出(cd), 说明还是传递了信息。 "(cd)"本身也是信息啊!

点评

我上载了一个版本,你看看有没有问题。 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=342350&extra=page%3D1  详情 回复 发表于 2014-10-9 17:11
这个问题,简单说说吧,  详情 回复 发表于 2014-10-8 18:24
回复

使用道具 举报

45#
发表于 2014-10-8 15:33:39 | 显示全部楼层
本帖最后由 mdyblog 于 2014-10-8 18:35 编辑
不点 发表于 2014-10-8 15:23
debug off 也没屏蔽掉 map 的输出?不会吧?这大概得让 chenall、yaya 去解决了。


如 382# 图所示,  "debug off"  “>nul” 都用上了。 还是有漏出来的信息提示。
  1. debug off
  2. map /IMG/SSHYDOS.IMG (fd0) >nul && set ok=1
复制代码


回复

使用道具 举报

46#
发表于 2014-10-8 18:34:44 | 显示全部楼层
2011yaya2007 发表于 2014-10-8 16:34
map 的信息可用屏蔽。一点信息都不想显示。

怎么屏蔽? 一点信息都不想显示。
同时 又不丢失条件码。
下面代码(或等价)能实现:
  1. debug off
  2. map /IMG/SSHYDOS.IMG (fd0) >nul && set ok=1
复制代码
回复

使用道具 举报

47#
发表于 2014-10-10 13:25:28 | 显示全部楼层
不点 发表于 2014-10-9 17:11
我上载了一个版本,你看看有没有问题。
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=342350&ext ...

可以了。
有没有0.46
回复

使用道具 举报

48#
发表于 2014-10-10 14:11:19 | 显示全部楼层
本帖最后由 mdyblog 于 2014-10-10 14:13 编辑

2011yaya2007777 发表于 2014-10-9 11:46
0.4.6a 的 map 在 “debug off ” 时显示信息,已经修正,从官网下载。


好的, 我试试。

另外, 怎么生成空格前导的变量: 变量的前面好多空格。
下面空格都丢了!!!!




下面间接方法,最终临门一脚,还是掉链子了:
回复

使用道具 举报

49#
发表于 2014-10-11 08:54:50 | 显示全部楼层
pseudo 发表于 2014-10-9 11:08
没问题,肯定可以屏蔽。
是mdyblog第二行:
map /IMG/SSHYDOS.IMG (fd0) >nul && set ok=1

debug off
map /IMG/SSHYDOS.IMG (fd0) >nul && set ok=1


map /IMG/SSHYDOS.IMG (fd0) >nul && set ok=1
不知道 什么意思? 两行一样啊!只是字体不同, 用“搜索”能互相找到。
前者为指定“宋体”, 后者为默认字体。

点评

也许 pseudo 用红色标明的 >nul,是说错误就在此处呢?我猜测,他或许是暗示 “>” 和 “nul” 之间应该有个空格?  详情 回复 发表于 2014-10-11 09:06
回复

使用道具 举报

50#
发表于 2014-10-11 09:16:19 | 显示全部楼层
不点 发表于 2014-10-10 16:19
是不是需要用 \x20 来表示一个空格啊?

谢谢!
下面测试 set 命令不翻译\x20



还有我要的是 第二种方法,前导空格数不定,总长度固定17, 后面非空格长度不定(不超过9)。

  1. set Y=:                       %ABC%
  2. set str=%Y:~17%
  3. echo [%str%]
复制代码

点评

变量需要前导空格的可以加引号,例子 set "str= cmd" echo %str%  详情 回复 发表于 2014-10-11 10:46
很抱歉,我不熟悉 grub4dos 里面的批处理程序设计。恐怕你得问问 chenall 才行。chenall 也许有现成的办法来解决这个问题,即使没办法,他也会把它当作 bug 予以修复。  详情 回复 发表于 2014-10-11 09:22
回复

使用道具 举报

51#
发表于 2014-10-11 09:18:04 | 显示全部楼层
不点 发表于 2014-10-11 09:06
也许 pseudo 用红色标明的 >nul,是说错误就在此处呢?我猜测,他或许是暗示 “>” 和 “nul” 之间应该 ...

谢谢!
原来 “>” 和 “nul” 之间 应该有个空格
和cmd还是有点不同哦。
回复

使用道具 举报

52#
发表于 2014-10-11 09:27:51 | 显示全部楼层
不点 发表于 2014-10-11 09:22
很抱歉,我不熟悉 grub4dos 里面的批处理程序设计。恐怕你得问问 chenall 才行。chenall 也许有现成的办 ...

还请问一个wee63的问题。
wee63 的内置菜单, 会在屏幕上显示出来。
怎么干掉,不让显示出来, 还一个清净的屏幕。
不知道 用WINHEX 怎么处理,能搞掉。
不知道是%格式串打印的还是INT直接打印的,因该是前者把。
我是试着抹掉几个%s,没干掉。

回复

使用道具 举报

53#
发表于 2014-10-11 11:05:06 | 显示全部楼层
不点 发表于 2014-10-11 09:41
你可以改源代码,重新编译。有的部分是汇编写的,有的部分是 C 语言。这对你来说都不难。你修改了 wee,那 ...

请问wee源码在哪儿?

点评

wee 的项目在 google code 上,属于 grubutils 项目的一部分。但 google 已经处于半死不活的状态了。我估计 chenall 迟早要把它迁移到 github 上。你等着吧。  详情 回复 发表于 2014-10-11 11:17
回复

使用道具 举报

54#
发表于 2014-10-11 11:09:44 | 显示全部楼层
chenall 发表于 2014-10-11 10:46
变量需要前导空格的可以加引号,例子

set "str=    cmd"

我实验怎么无效啊?str没有被赋值啊?

点评

你的GRUB4DOS版本有些旧了,估计当时还没有这个功能,换成最新的试试看.  发表于 2014-10-11 12:05
回复

使用道具 举报

55#
发表于 2014-10-11 12:11:56 | 显示全部楼层
不点 发表于 2014-10-11 11:17
wee 的项目在 google code 上,属于 grubutils 项目的一部分。但 google 已经处于半死不活的状态了。我估 ...

请麻烦给个网址,下来看看。

点评

grubutils 在这儿: https://code.google.com/p/grubutils/source/browse/#svn%2Fgrubutils wee 在这儿: https://code.google.com/p/grubutils/source/browse/#svn%2Fgrubutils%2Fwee 用 chenall 建立的那  详情 回复 发表于 2014-10-11 15:24
回复

使用道具 举报

56#
发表于 2014-10-11 12:15:34 | 显示全部楼层
>>chenall : 你的GRUB4DOS版本有些旧了,估计当时还没有这个功能,换成最新的试试看.
to chenall :
2014-10-09  可以。
回复

使用道具 举报

57#
发表于 2014-10-13 13:10:03 | 显示全部楼层
本帖最后由 mdyblog 于 2014-10-13 13:19 编辑


/////wee网址, 一直 都打不开。
/////请麻烦直接给我一个包。


用百度浏览器 下下来了, 谢谢!
回复

使用道具 举报

58#
发表于 2014-10-22 08:32:39 | 显示全部楼层
grub4dos 有个 访问加速的命令, 忘了。
请问  “访问加速”怎么来着的?
回复

使用道具 举报

59#
发表于 2014-11-1 13:29:00 | 显示全部楼层
本帖最后由 mdyblog 于 2014-11-1 13:31 编辑

报告一个现象, 不知道 是否算BUG。或者我用的不对?
map --in-situ  (hd0)8192+81920  (hd0)
map (hd0) (hd1)
map --rehook
root (hd0,0)
map (hd0)/a.iso  (hd32)
map --rehook
root  (hd32)

root (hd32)   这里就出现磁盘问题:


说明: (hd0)8192+81920  处 是一个分区的IMG,不是磁盘IMG,没有分区表。map --in-situ  可以访问的。
map --in-situ  (hd0)8192+81920  (hd0)
map (hd0) (hd1)
map --rehook
root (hd0,0)

后可以通过(hd0,0)访问上面的文件。
上面的ISO(连续的)再(非mem)map 到(hd32),(hd32)不能访问。
mem方式是可以的,但是效率不够。
map  --mem  --top  (hd0)/a.iso  (hd32)
map  --rehook
root  (hd32)




点评

怎么不说说 0.4.5c 的情况? 0.4.6 与 0.4.5 的磁盘仿真代码有差别,这一点你该明白吧?所以,涉及到仿真的问题,一定要拿 0.4.5 作为参照物进行对比才行。不然的话,还留着 0.4.5 干什么用?  详情 回复 发表于 2014-11-1 15:45
回复

使用道具 举报

60#
发表于 2014-11-1 15:54:11 | 显示全部楼层
不点 发表于 2014-11-1 15:45
怎么不说说 0.4.5c 的情况?

0.4.6 与 0.4.5 的磁盘仿真代码有差别,这一点你该明白吧?所以,涉及到 ...

0.45C 好像没有 usb加速。
usb加速 对我更重要。
扇区序列  --in-situ   也是我今年央求2011yaya2007777  加上的。
0.45c估计根本没有的。

点评

0.4.5 本来就有 --in-situ 支持。如果没有,如果它的含义不明确,你凭什么让 yaya 加上?  详情 回复 发表于 2014-11-1 15:59
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-2 12:29

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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