2012wuzhong 发表于 2014-6-24 19:02:44

用SoftPerfect驱动构建wes7x64-ramos

基本原理来自于“primo-io模式wes7x64-ramos”,http://user.qzone.qq.com/1543764927/blog/1402486319
与primo相比,SoftPerfect生成内存盘明显要迟,在系统将part.img作为系统盘时,主体盘还未建立,此时"\windows\system32"不能直接链接到主体盘,需要一个中转目录,该中转目录的内容应随着附体而改变,如"c:\sys32"。

附体前:系统文件来自于系统盘
┌────────────────┬────────────────┐
part.img系统盘                          此时"C"为系统盘
├─────────────────────────────────┤
\windows\system32      --> \sys32 (实体目录)
├─────────────────────────────────┤
\windows\SysWOW64   --> \WOW64 (实体目录)
└─────────────────────────────────┘
附体后:系统文件来自于主体盘
┌────────────────┬────────────────┬──────────────────────┐
part.img系统盘                          主体盘附体"C"盘                  SoftPerfect主体盘
├────────────────────────────────────────────────────────┤
\windows\system32       --> \sys32 (junction)          --> \windows\system32       
├────────────────────────────────────────────────────────┤
\windows\SysWOW64    --> \WOW64 (junction)      --> \windows\SysWOW64
└────────────────────────────────────────────────────────┘

1、安装驱动并配置内存盘:
boot.wim:在friend8179共享的native文件列表基础上补足以下文件:
\Windows\System32\CodeIntegrity\driver.stl
\Windows\System32\winload.exe

SoftPerfect内存盘://io模式,盘符为"b",克隆附体系统盘"c"
├─users
├─ProgramData
├─Program Files
├─Program Files (x86)
├─WOW64(junction到"c:\windows\sysWOW64",指向主体盘)
├─sys32(junction到"c:\windows\system32",指向主体盘)
└─windows
    │win32k.sys(修改),所有实体文件和目录
    └─system23(junction到"w:\windows\system23",指向系统盘,session相关文件需要放置在系统盘上,否则f4蓝屏)

part.img内存盘://大小64M就够了,盘符为"c",克隆后盘符为"w"
├─WOW64(ntdll.dll,缺少无法运行32位程序)
├─sys32
      │ntdll.dll,apisetschema.dll,smss.exe(修改)
   ├─CodeIntegrity目录(包括bootcat.cache)
   └─drivers(加载win32k.sys之前的驱动:"start=1"以及一些"start=3")
└─windows
    ├─fonts(junction到"b:\windows\fonts")
    ├─inf(junction到"b:\windows\inf")
    ├─system32(junction到"c:\sys32",附体前指向系统盘,附体后指向主体盘)
    ├─SysWOW64(junction到"c:\WOW64",附体前指向系统盘,附体后指向主体盘)
    └─system23(session启动所需文件)

2、注册表设置://bat文件
rem 克隆附体"c"
reg add "hklm\system\ControlSet001\Control\Session Manager\DOS Devices" /v C: /d \??\B: /f >nul 2>nul
rem 克隆系统盘为"w"
reg add "hklm\system\ControlSet001\Control\Session Manager\DOS Devices" /v W: /d \Device\Ramdisk{d9b257fc-684e-4dcb-ab79-03cfa2f6b750} /f >nul 2>nul
rem 非winpe方式启动,fbwf需要如下修改配置
reg add hklm\system\ControlSet001\Services\Fbwf /v EnabledOnAllSkus /t REG_DWORD /d 1 /f >nul 2>nul

3、使用sdi工具,将img文件放入到sdi文件part区。
sdimgr wes7x64.sdi /new
sdimgr wes7x64.sdi /import:part,0,part.img

4、用winhex修改:
wes7x64.sdi偏移0x440处修改为"57494d"(字符"WIM"),0x450处4个字节=0x410处4个字节+0x418处4个字节,注意低位在前。
修改smss.exe,按"Unicode"方式搜寻字符"\system32",偏移0x3e7a处,修改为"System23".
修改win32k.sys,按"Unicode"方式搜寻字符"\system32";偏移0x2b012a,修改为"System23"

5、启用testsigning模式需要使用"dseo13b.exe"处理win32k.sys及其它相关驱动的数字签名。

其它:
1、需要注意驱动文件的更新需要牵涉到3个镜像文件:boot.wim、sdi、SoftPerfect内存盘。
2、system文件的更新,有效位置在boot.wim文件中。
3、主体盘也可以使用其它的ramdisk驱动,如:imdisk、QSoft RAMDisk。需要注意的是:"start=1",相应的驱动文件需要位于硬盘上。

2013xufeng 发表于 2014-6-24 23:20:58

好东西慢慢研究

zhchsgdtc 发表于 2014-6-25 18:46:49

大神又出新作了。
另外,softperfect也有scsi模式,不过很可惜,它的镜像文件是自己的svi格式,不可以编辑,做不了单镜像启动了

promrhxq 发表于 2014-6-25 19:13:28

大神新作收藏慢慢研究

zhangmi 发表于 2014-6-26 14:08:13

大神只讲理论,不出成品啊

2012lujw1991 发表于 2014-6-26 17:28:14

技术贴前排留名!!!
页: [1]
查看完整版本: 用SoftPerfect驱动构建wes7x64-ramos