无忧启动论坛

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

native版的mini pecmd测试,添加mount命令--2011-4-4

    [复制链接]
301#
发表于 2011-5-12 11:55:04 | 只看该作者

回复 #329 xhwfq 的帖子

老大,怎么加的wimftlr驱动?
我这里将小小强的改成这种格式,怎么折腾都不行,您是怎么操作的,给讲一下。。。。。谢谢您!!!
回复

使用道具 举报

302#
发表于 2011-5-12 15:15:04 | 只看该作者
[SCSI.Load]
......
WIMFLTR=WIMFLTR.SYS,4
回复

使用道具 举报

303#
发表于 2011-5-12 15:21:17 | 只看该作者
在txtsetup.sif里面[scsi.load]添加wimfltr驱动
把驱动文件复制到drivers目录下。


上传一个我修改的版本。
1. 添加两个命令echotype
2. 修正执行不带任何参数的if命令蓝屏的问题。
3. 支持访问\\?\cdrom0\abcd之类的路径。

比如可以这样。

if exist \\?\cdrom0\test.txt type \\?\cdrom0\test.txt

也可以直接从上面复制文件,不过不支持直接mount上面的文件,对这些不熟。

附件包含native.exe使用fre x86 wxp编译的。
附带补丁文件(包含前面的补丁)

[ 本帖最后由 chenall 于 2011-5-12 15:23 编辑 ]

native.rar

29 KB, 下载次数: 40, 下载积分: 无忧币 -2

回复

使用道具 举报

304#
发表于 2011-5-12 15:38:53 | 只看该作者
原帖由 friend8179 于 2011-5-12 15:28 发表
DIFF文件用什么软件处理?

总不能手工+,-吧


另:liulaotou2写的驱动laotou2.SYS从支持改名WINDOWS,然后删除掉,节省X盘空间,不知道这些正在使用的文件如何删除掉的


用patch命令打补丁呀。
回复

使用道具 举报

305#
发表于 2011-5-12 15:41:12 | 只看该作者

回复 #330 andos 的帖子

最新的WinMount 3.5.0504已经支持wim了。下面的内容摘自help文件:

支持格式:MOU, RAR, ZIP, 7Z, CAB、ARJ、ISO、GZ、BZ2、TAR、WIM、ISO、BIN、BWT、MDS/MDF 、NRG 、IMG、ISZ 、CUE、CCD、APE、FLAC、WV、VHD(Virtual PC)、VDI(Virtual Box)、VMDK。

WinMount 格式:

MOU:高压缩比高速率压缩格式。采用随机解压算法,用多少解多少。可加密,可挂载成虚拟硬盘或虚拟文件夹。
WMT:硬盘存储格式。可加密,可挂载成虚拟硬盘,支持只读和可写两种模式。
目前只有WinMount可以打开MOU 和 WMT,这两种格式将会在合适的时候开放源码和API接口。

————
命令行

--------------------------------------------------------------------------------

1. Mount压缩文件或文件夹

命令行:winmount -m [文件路径] [-drv:盘符和路径] [-NoWriteback:] [-attach:]

说明:
-drv:将文件mount至盘和路径,不指定则默认分配路径,参数可以不写。
-NoWriteback:只读盘,参数可以不写
-attach:使用过滤驱动(mount到已存在的路径)
[文件路径]被挂载文件的源路径,可以带全路径、相对路径或者不带路径,文件路径用引号栝起。
[盘符和路径]挂载到的虚拟路径。

举例:

1) 将压缩格式mount到指定路径
winmount -m "E:\test.mou" -drv:Z:\

2) 将文件夹mount到指定路径
winmount -m "E:\test" -drv:Z:\abc

3) 将多个压缩文件或文件夹mount到指定路径(路径之间用空格分开)
winmount -m "E:\test.mou" "E:\test.rar" "E:\test.zip" -drv:Z:\abc

适合: *.mou,*.rar,*.zip或文件夹

2. Mount CD/DVD文件

命令行:winmount -m [文件路径] [-drv:盘符] [-NoWriteback:] [-attach:]

举例: winmount -m "E:\test.iso" -drv:Z:\

适合:*.iso, *.bin, *.cue, *.ccd, *.mds, *.mdf, *.nrg,, *.img, *.isz, *.ape, *.flac, *.wv
另外,*.wim, *.wmt也适合此命令行

3. Mount多分区的文件

命令行:winmount -m 硬盘镜像文件 [-drv:盘符] [-Part:分区号(0,1...)] [-NoWriteback:]

说明:-Part:指定分区号,0为第1个分区,1为第2个分区

举例:winmount -m Win2003.vhd -part:2

适合:*.vhd, *.vdi, *.vmdk

4. Mount 空盘

命令行:winmount -drv:X -sectors: 空盘大小

0x400000=2G, 0x200000=1G

举例:winmount -drv:X -sectors:0x400000

5. 快速Mount

命令行:winmount -M [文件路径] -attach: -drv:盘符

举例:winmount -M E:\test.mou -attach: -drv:E

6. unmount驱动器

1) unmount指定驱动器
winmount -unmount:X

2) unmount全部驱动器
winmount -unmountall

7. 压缩文件

命令行:winmount -C [文件列表] [-o:目标文件]

说明:
-o:指定目标文件, 目标文件可以缺省路径、带全路径或者相对路径。

举例:winmount -C "E:\test" "E:\test.txt" -o:E:\test.zip

适合压缩为:mou, zip, 7z

8. 解压文件

命令行:winmount -E [压缩文件列表] [-o:目标文件夹]

举例:winmount -E "E:\test.zip" "E:\test.mou" -o:E:\

适合解压缩:mou, zip, rar, 7z

9. 智能解压

命令行:winmount -E [压缩文件列表] "-s:目标文件夹"

举例:winmount -E "E:\test.zip" "E:\test.mou" “-s:E:\test”

10. 格式转换

命令行: winmount -T [压缩文件]

举例: winmount -T E:\test.rar

适合转换: rar, zip, 7z

11. WinMount帮助

命令行: winmount -h
————
WinMount 3.5.0504 绿色便携版下载地址:
http://www.xdowns.com/soft/4/124/2008/Soft_45589.html
回复

使用道具 举报

306#
发表于 2011-5-12 15:47:20 | 只看该作者

回复 #337 2011_dihuo0 的帖子

这是我把ERD.WIM MOUNT到Z:\A的情况


目录1内的才是 Index 1

如果有用错请指正

[ 本帖最后由 andos 于 2011-5-12 15:51 编辑 ]
回复

使用道具 举报

307#
发表于 2011-5-12 16:21:37 | 只看该作者
我也来说说
WinMount

其实算起来这是挺好的一个软件,我之前也用过一段时间。
不过我觉得他们好像太"照顾"用户了,使得使用起来,感觉很不顺手。

我曾经有去提了一些意见,刚开始说要接受,后面说是因为可能会引发安全性问题又不考虑了。

后面我再试用了一段时间,我用了很多方法都不能达到我所希望的效果,就没有继续了。

我也不知最新版本有增加了什么功能。

而且好像到目前为止还没有自动运行的功能。

不过现在的WINMOUNT相比以前是好多了,至少比较不会蓝屏了。
回复

使用道具 举报

308#
发表于 2011-5-12 18:33:05 | 只看该作者
原帖由 chenall 于 2011-5-12 16:21 发表
我也来说说
WinMount

其实算起来这是挺好的一个软件,我之前也用过一段时间。
不过我觉得他们好像太"照顾"用户了,使得使用起来,感觉很不顺手。

我曾经有去提了一些意见,刚开始说要接受,后面说是因为 ...

不过,目前它的确没照顾到PE上使用
或者有人去反映下,让它支持PE的用法
那样或者不用管FBWF,无论PE 1-3都可以向X:挂WIM了,这也是一个不错的选择
回复

使用道具 举报

309#
发表于 2011-5-12 19:55:23 | 只看该作者

回复 #338 andos 的帖子

我又到官方网站下载了最新版的,加载wim确实存在你说的问题,我以前没有用它加载过wim,只是知道有这么一个功能而已。我为我莽撞的提议道歉。

[ 本帖最后由 2011_dihuo0 于 2011-5-12 21:46 编辑 ]
回复

使用道具 举报

310#
发表于 2011-5-12 21:36:18 | 只看该作者

终于使USB1.0在不到2分钟的时间启动了PE!!!

有一个老U盘和老主板,
用U盘自动加速器USB_ACC,对1.0的U盘不支持,
骨头版的PE进入桌面要7、8分钟,
用了Native的版的,进入桌面不到2分钟,效果明显。
我是这样做的:
1、从镜像中提取出MINIPE文件夹,放到U盘的可见分区根目录;
2、将提取后的镜像另存(只有4.02M),放到ud;
3、编辑menu.lst如下:
title [0] 启动Native-CDM版PE \n ●Native-CDM版PE ●挂接根目录MINIPE文件夹中TOOLS.WIM ●启动速度快
clear
map (ud)/natpe.iso (0xff) || map --mem (ud)/natpe.iso (0xff)
map --hook
chainloader (0xff)
回复

使用道具 举报

311#
发表于 2011-5-13 00:25:53 | 只看该作者
经过跟踪,查资料。终于发现了一个很容易导致蓝屏的问题。

在GetFullPath函数中。

以下语句是不需要的,因为RtlInitAnsiString并不分配内存。
RtlFreeAnsiString(&as);(跟踪时发现经常执行到这里就死掉了,把这个注释掉就OK)

相关资料。
RtlInitAnsiString 和 RtlInitUnicodeString 初始化时不分配内存。不能使用 RtlFreeUnicodeString 函数. ANSI_STRING 和 UNICODE_STRING 中的 Buffer 指向一个字符串常量,当调用 RtlFreeUnicodeString 时字符串常量占用的地址被释放。所以产生错误。

RtlAnsiStringToUnicodeString 函数被调用时,将为目标变量分配内存。所以在不使用该变量时要用 RtlFreeUnicodeString 函数释放内存,以免内存泄漏。


另外不知是否有内存泄露的现象,发现执行lp命令时,native.exe程序占用的内存好像会越来越多。

[ 本帖最后由 chenall 于 2011-5-13 00:28 编辑 ]
回复

使用道具 举报

312#
 楼主| 发表于 2011-5-13 00:56:05 | 只看该作者
宣布个好消息。。。
cmd.exe移植初步成功。。
排除一些bug后出个M1(学微软。我也出预览版)
需要尝鲜的到
https://nativecmd.googlecode.com/svn/trunk
检出代码自行编译。。
回复

使用道具 举报

313#
 楼主| 发表于 2011-5-13 01:02:23 | 只看该作者
原帖由 chenall 于 2011-5-13 00:25 发表
经过跟踪,查资料。终于发现了一个很容易导致蓝屏的问题。

在GetFullPath函数中。

以下语句是不需要的,因为RtlInitAnsiString并不分配内存。
RtlFreeAnsiString(&as);(跟踪时发现经常执行到这里就死掉 ...

这个问题有段时间让我很头痛。。当时是为了让expand能创建多级目录
很奇怪。。动态分配内存的会有问题,但是用数组却没问题。。。
这个版本我暂时就不继续开发了。。可能以后会继续吧。。
cmd.exe和kernel32.dll移植成功了。。但是太肥。。编译后有将近600k不过压缩一下应该能到200k
也不算太大
回复

使用道具 举报

314#
发表于 2011-5-13 01:02:52 | 只看该作者
整合了前面的补丁,并再增加了一个命令scd

暂时可以代替之前的一堆if exist c:\minipe\wxpe.wim cd c:\minipe\wxpe.wim..if exist h:\minipe\wxpe.wim

使用新的scd命令一行就搞定了

scd \minipe\wxpe.wim

功能,从C:开始查找\minipe\wxpe.wim如果找到就切换到该目录。

另外注释掉了几个RtlFreeAnsiString,具体原因看前面的贴子。

ps: 我对这些根本就不熟悉,都是临时找资料研究的,比较懂行的人看下会不会有什么问题。

之前经常蓝屏的可以试试这个版本看看还会不会。

另外还有一个比较好用的方法来可以避免蓝屏。

经过测试发现其实很多蓝屏的原因,是因为程序出错自动退出了,这时如果已经挂载了WXPE.WIM那就会直接进入桌面,否则就是蓝屏。

避免的办法就是另开一个native.exe进程来执行脚本。这样万一这个脚本执行过程中出现了问题退出了也不会导致蓝屏。

方法如下。
1.SYSTEM32目录下的native.cfg内容如下两行
native.exe load native.usr
if exist winlogon.exe exit

native.usr的内容可以随便你写。这样一般情况下就不会出现因为程序出错退出而导致的蓝屏问题。

注: native.usr最后面需要有一条exit命令返回主程序。

[ 本帖最后由 chenall 于 2011-5-13 01:11 编辑 ]

native.rar

30.03 KB, 下载次数: 36, 下载积分: 无忧币 -2

回复

使用道具 举报

315#
发表于 2011-5-13 01:05:02 | 只看该作者
原帖由 2011足迹 于 2011-5-13 01:02 发表

这个问题有段时间让我很头痛。。当时是为了让expand能创建多级目录
很奇怪。。动态分配内存的会有问题,但是用数组却没问题。。。
这个版本我暂时就不继续开发了。。可能以后会继续吧。。
cmd.exe和kernel ...



明天再测试,希望越来越好用。重要的是最好不要和太多的大DLL关联。
回复

使用道具 举报

316#
发表于 2011-5-13 02:12:07 | 只看该作者
原帖由 chenall 于 2011-5-13 01:05 发表



明天再测试,希望越来越好用。重要的是最好不要和太多的大DLL关联。


那是不是意味着现在4M就可以到cmd窗口了
回复

使用道具 举报

317#
发表于 2011-5-13 05:58:45 | 只看该作者

回复 #346 chenall 的帖子

我一直纳闷,若存在于硬盘上的minipe\wxpe.wim,此刻nativePE应该还未加载SRS驱动,应该搜不到的!反正我用P大您之前的修改的逆天使的那个基于native 技术的ISO 版PE在VM6.0下,即便进入PE桌面了,也不能看到SCSI硬盘。

还有,若minipe\wxpe.wim藏于UD,nativePE应该也搜不到。那native技术的PE在这种情况下是不是无以为继?
回复

使用道具 举报

318#
发表于 2011-5-13 06:03:02 | 只看该作者
不知有人测试过否,fbinst.exe,在native环境下能不能运行?
回复

使用道具 举报

319#
发表于 2011-5-13 06:53:09 | 只看该作者

回复 #339 chenall 的帖子

同感,在PE中似乎并不那么好使,不知现在的版本如何?现在也忘记了究竟是哪些地方不好使了。
回复

使用道具 举报

320#
发表于 2011-5-13 07:20:32 | 只看该作者
原帖由 chiannet 于 2011-5-13 06:03 发表
不知有人测试过否,fbinst.exe,在native环境下能不能运行?




嗯 我也想知道这个!!!
回复

使用道具 举报

321#
发表于 2011-5-13 08:03:02 | 只看该作者

回复 #346 chenall 的帖子

scd命令好象不太灵光

[ 本帖最后由 xhwfq 于 2011-5-13 08:33 编辑 ]
回复

使用道具 举报

322#
发表于 2011-5-13 08:17:16 | 只看该作者
原帖由 2011足迹 于 2011-5-13 00:56 发表
宣布个好消息。。。
cmd.exe移植初步成功。。
排除一些bug后出个M1(学微软。我也出预览版)
需要尝鲜的到
https://nativecmd.googlecode.com/svn/trunk
检出代码自行编译。。


非常好的消息,辛苦了。
我是不是可以开始动工了?
回复

使用道具 举报

323#
 楼主| 发表于 2011-5-13 08:30:25 | 只看该作者

回复 #354 Plantsoot 的帖子

还是先观望一下吧..kernel.dll的可靠性还不确定..我怕你驾驭不了...
另外kernel还会有较大的变动...
回复

使用道具 举报

324#
发表于 2011-5-13 08:57:24 | 只看该作者
很热闹啊!我也来凑凑热闹。
解决PE3.0下,不能在X盘创建目录的问题:
native.exe的源代码,NtFile.c文件NtFileOpenDirectory函数的一段改为:
NtCreateFile(&hFile,
    FILE_LIST_DIRECTORY | SYNCHRONIZE | FILE_OPEN_FOR_BACKUP_INTENT,
    &ObjectAttributes,
    &IoStatusBlock,
    0,
    FILE_ATTRIBUTE_NORMAL,
    FILE_SHARE_READ | FILE_SHARE_WRITE,
    FILE_CREATE,
    FILE_SYNCHRONOUS_IO_NONALERT | FILE_DIRECTORY_FILE,
    NULL,
    0);

另外,上传一个解压7z格式的lib文件。

7zdec_native.zip

131.9 KB, 下载次数: 39, 下载积分: 无忧币 -2

回复

使用道具 举报

325#
发表于 2011-5-13 08:59:57 | 只看该作者

回复 #355 2011足迹 的帖子

新版的我编译失败,晕倒。
下载的时候貌似杀毒软件出现过提示,我再试试。
回复

使用道具 举报

326#
发表于 2011-5-13 10:31:00 | 只看该作者

回复 #350 chiannet 的帖子

一直是全藏入ud的
http://bbs.wuyou.net/forum.php?m ... p;page=9#pid2195494

最简单方法就是把wim放在可见区。其次是放在ud的iso内。
回复

使用道具 举报

327#
 楼主| 发表于 2011-5-13 10:40:26 | 只看该作者

回复 #358 friend8179 的帖子

必须说一下...因为kernel.dll对ntdll.dll导出函数的依赖比较大..所以保险起见是使用xp编译环境
使用xp版编译的时候我hack了一下..xp的ntdll.dll缺少的我们需要的函数我都补全了..
使用03或win7编译环境的时候这些函数自动屏蔽...因为他们的ntdll.dll已经包含这些函数..
根据你的截图可以确定是这个原因
缺少的是RtlInitAnsiStringEx
03编译环境编译的版本放在pe1.5上可能会更好点...因为这些函数是原生的...能避免部分bug
另外说一些...scripts里面有编译脚本...
build.bat是使用的chk x86 wxp
build-free.bat是使用的fre x86 wxp

需要自定义编译环境可以令写一个脚本然后设置
TYPE=chk/fre
ARCH=x86/x64
VER=wxp/wnet/wlh/win7
然后call build.bat就可以了

[ 本帖最后由 2011足迹 于 2011-5-13 10:47 编辑 ]
回复

使用道具 举报

328#
 楼主| 发表于 2011-5-13 10:57:59 | 只看该作者
    if (!NT_SUCCESS(Status))
      {
         RtlFreeHeap(GetProcessHeap(), 0, MountDevName);
        if (Status == STATUS_BUFFER_OVERFLOW)
         {
            BufferLength = sizeof(MOUNTDEV_NAME) + MountDevName->NameLength;
           continue;
         }
         else
         {
            NtClose(FileHandle);
            SetLastErrorByStatus(Status);
            return FALSE;
         }
      }

reactos的程序员居然会犯这样的错误...不知道free build能不能正确执行..反正check build的时候死循环了
回复

使用道具 举报

329#
发表于 2011-5-13 11:05:09 | 只看该作者
试着编译了一个试一下,在QEMU中测试,发现反应明显变慢了。
另外之前的NATIVESHELL还会继续更新吗?
今天再看了一下,发现有好几处有分配内存却没有释放内存
具体的可以直接使用lp/lm命令测试
这两个命令调用的函数都是只分配不释放的。所以会发现占用的内存会越来越大(每次执行会增加64KB左右的内存)

经过修改效果明显改善。

再上传一个早上编译版本。

顺便再上传一个基于新的native.exe的微型测试用PE。(修改自TahgoPE)


http://u.115.com/file/e6yjluas#
TangoPE.iso

注: 看到前面有好几个人说找不到硬盘,这是正常的,因为一级内核里面没有任何的硬盘驱动。

可以配合SRSF6模块加载驱动来使用。当然了这个只是作为测试用途.

EDIT: 关于测试PE提供的接口,有兴趣的可以自己YY
1.启动时会优先加载#:\native.cfg
  Q: 如何才能使用#:?
      使用GRUB4DOS map --mem一个你自己的IMG文件(比如可以把二级内核放在这里)。必须使用以下命令map才可以在#:找到这个镜像的内容
      map --mem --add-mbt --sectors-per-track=8 /path/myext.img (0x9e)
      具体的应用方法可以自己研究。
2.然后加载光盘根目录下的native.cfg

3.然后就是标准的查找\minipe\wxpe.wim过程使用了一条命令scd \minipe\wxpe.wim实现
  会自动load同目录下的native.xpe

注:使用1,2接口时NATIVE.CFG后面要有EXIT命令,因为这个是通过新的进程来执行的。

有兴趣的可以根据以上接口来实现功能的扩展和自定义。

[ 本帖最后由 chenall 于 2011-5-13 11:26 编辑 ]

native.rar

27.76 KB, 下载次数: 40, 下载积分: 无忧币 -2

回复

使用道具 举报

330#
 楼主| 发表于 2011-5-13 11:14:31 | 只看该作者

回复 #363 chenall 的帖子

NATIVESHELL暂时不更新了..以后不好说...可能会有人需要吧..看情况
在QEMU中测试,发现反应明显变慢了。
这个倒是没注意...函数调用深了..慢是肯定会有的
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-5-12 18:19

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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