无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 11884|回复: 53
打印 上一主题 下一主题

把 天琴080911 精简成 ISOCMD ISZ二级启动 结构

[复制链接]
跳转到指定楼层
1#
发表于 2008-9-27 21:29:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把天琴 080911 一级内核分化成 一级启动内核 和 一级补充内核
需要工具:1、winrar 2、UltraISO
3、注册表编辑软件 4、cmdhere.inf 5、右键CAB.REG
需要技能:能数量使用上述软件,具有基本的cmd脚本编辑能力。
需要添加进内核的文件 ISODrive.sy_ ,isocmd.exe

一、总体框架
1、根据 ghostpe 的文件列表,把一级内核精简成只能启动到 cmd 状态
2、把精简出来的文件 做成 pe_sys.isz 光盘压缩包,成为一级补充内核
3、一级启动内核 启动进入 cmd 状态以后,通过 isocmd 把pe_sys.isz虚拟成z:盘,然后把z:盘的文件放回系统盘X.使系统盘中的系统完整化。
4、把已经完整化的系统启动到 图形界面。
这样做的好处是 一级启动内核(winpe.is_) 体积小,启动时装载速度快,节省启动时所需内存。
二、具体实现方法
1、安装 cmdhere.inf 和 右键CAB.REG(给鼠标右键提供 cmd 支持和 makecab 支持)
右键 cmdhere.inf 选择 安装。然后,你在右键任何一个文件夹的时候右键菜单就会出现 cmd here 的选项,选择它,你就会在cmd状态打开这个文件夹。
双击 右键CAB.REG ,然后,你在右键任何一个文件的时候右键菜单就会出现 CAB最大压缩 的选项,选择它,你就会把该文件压缩成cab格式,扩展名为 ??_。
2、获取 ghostpe 核心文件列表。把 ghostpe 光盘的 内核文件 winpe.is_ 用winrar 解压缩得到winpe.iso,在用ultraiso 把winpe.iso释放到一个文件夹中(暂时定为 d:\pe\pe1)找到里面的 system32 文件夹。在该system32文件夹下的 cmd 状态下运行如下命令:
dir /b /a-d *.* /s > d:\pe\pe1.txt
这个 pe1.txt 就是我们需要的文件列表。
3、释放 天琴 080911 核心文件。同上一步,只是需要注意要把文件释放到 d:\pe\pe2 文件夹中,不能和前面的重复。不必生成列表文件。
4、根据 pe1.txt 提取出 一级补充内核 所需的文件,并制作成 pe_sys.isz
建立 文件夹 d:\pe\pe_sys ,在上一步的 d:\pe\pe2文件夹中找到 system32 文件夹(注意,不是弟2步的那个system32),以cmd方式进入这个system32文件夹,输入如下cmd 命令:
move *.* d:\pe\pe_sys
for /f %c in (d:\pe\pe1.txt) do if exist d:\pe\pe_sys\%c move d:\pe\pe_sys\%c %cd%
此时d:\pe\pe_sys 中的文件就是 一级补充内核 所需的文件。用UltraISO把这些文件做成一个 isz 文件。
1、修改 一级内核,制作成 一级启动内核。
1)在 d:\pe\pe2文件夹里面找到 system32\drivers 文件夹,并把 ISODrive.sy_ 复制到此处。
在 d:\pe\pe2文件夹里面找到 system32 文件夹,并把 isocmd.exe 复制到此处。
2)修改 txtsetup.sif脚本
在 d:\pe\pe2文件夹里面找到 txtsetup.si_ 用winrar 打开之,释放出 txtsetup.sif 到 d:\pe\txtsetup 文件夹
用记事本编辑 txtsetup.sif 找到 [SourceDisksFiles] 段,在该段的最后输入 ISODRIVE.sys=1,,,,,,4_,4,1,,,1,4
找到 [CdRomDrivers.Load] 段,在该段的最后输入 isodrive=isodrive.sys
找到 [CdRomDrivers] 段,在该段的最后输入 isodrive="ISO DVD/CD-ROM Device Driver"
保存后,右键这个 txtsetup.sif 文件 选择 CAB最大压缩,把这个文件压缩成 txtsetup.si_ 。用这个 txtsetup.si_ 覆盖那个d:\pe\pe2 里面的原始 txtsetup.si_ 。
3)修改 setupreg.hiv 注册表文件
在 d:\pe\pe2文件夹里面的SYSTEM32文件夹里找到 setupreg.hi_ 用winrar 打开之,释放出 setupreg.hiv 到 d:\pe\setupreg 文件夹
运行 regedit 注册表编辑器,将这个 setupreg.hiv 以导入配置单元的方式导入,找到配置单元中的 setup\cmdline 项目
把pecmd.exe main pecmd.ini
更换成 cmd.exe /b startpe.cmd 。然后,卸载配置单元。
右键这个 setupreg.hiv 文件 选择 CAB最大压缩,把这个文件压缩成 setupreg.hi_ 。用这个 setupreg.hi_ 覆盖那个d:\pe\pe2 里面的原始 setupreg.hi_ 。
4)创建 startpe.cmd
用记事本 编辑如下内容生成 startpe.cmd 并保存到 d:\pe\pe2 里面的那个 system32 文件夹中
-------------------
title startpe
cd /d "%~dp0"
echo.开始加载PE_SYS.ISZ.....
PATH %windir%;%windir%\system32
for %%i in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
if exist %%i:\WXPE\PE_SYS.ISz (SET OPDrv=%%i:\WXPE&goto :mount_iso)
)
GOTO :ERROR1
:mount_iso
isocmd -mount z: %OPDrv%\PE_SYS.ISz >nul
SET OPExt=
goto load_sys
GOTO :END
:ERROR1
ECHO 找不到PE_SYS.ISz!
GOTO :END
:load_sys
path %path%;z:\
ECHO 运行 LSASS.EXE
START /D%WinDir%\system32 LSASS.EXE
ECHO 运行 SERVICES.EXE
START /D%WinDir%\system32 SERVICES.EXE
ECHO 设置FBWF 空间
START /WAIT PECMD.EXE FBWF P40 L48 H96
ECHO 复制必要的文件到系统
copy z:\*.* %windir%\system32
ECHO 调用系统脚本 PECMD MAIN PECMD.INI
start PECMD.EXE MAIN PECMD.INI
echo LOAD_SYS脚本运行完毕...
:end
----------------
5)重新制作 winpe.is_

用 UltraISO 对d:\pe\pe2 里面的东西打包 成 winpe.iso,右键 winpe.iso ,选择
CAB最大压缩,把这个文件压缩成 winpe.is_
6、把上面制作的 winpe.is_ 和 pe_sys.isz 放回 天琴 080911 光盘的wxpe文件夹中覆盖原有文件。


至此,基本完成了我们最初的目的。当然还需要进一步的修改和磨合,这需要您自己去DIY 了。


2008.09.27

目前比较成形的 修改内核  支持 112M内存 启动
http://bbs.wuyou.net/forum.php?mod=viewthread&tid=129351&extra=page%3D1






[ 本帖最后由 dos时代菜鸟 于 2008-9-28 12:04 编辑 ]

天琴pe精简成ISZ结构.rar

61.67 KB, 下载次数: 387, 下载积分: 无忧币 -2

2#
发表于 2008-9-27 21:42:16 | 只看该作者
楼主精简后有多大?要多大的内存才能启动?
回复

使用道具 举报

3#
发表于 2008-9-27 21:43:13 | 只看该作者
不错,这个想法好。太厉害了
回复

使用道具 举报

4#
发表于 2008-9-27 22:22:56 | 只看该作者
实在是不喜欢那个dos黑窗口啊!
回复

使用道具 举报

5#
发表于 2008-9-27 23:38:15 | 只看该作者
原帖由 lsj0416 于 2008-9-27 22:22 发表
实在是不喜欢那个dos黑窗口啊!


呵呵,有得有失的嘛。距离完美还差得远,诸君努力啦!
回复

使用道具 举报

6#
发表于 2008-9-27 23:56:15 | 只看该作者
原版也是二级结构
只不过你换了一种方式的二级结构
你这种方式就是可以让一级更小一些,但是二级就变大了
一级加二级,总的来说还是没少
我觉得你这就像比如把 3+2 折腾成 2+3 其实还是 =5 没变
回复

使用道具 举报

7#
 楼主| 发表于 2008-9-28 07:02:11 | 只看该作者
原帖由 wxb 于 2008-9-27 23:56 发表
原版也是二级结构
只不过你换了一种方式的二级结构
你这种方式就是可以让一级更小一些,但是二级就变大了
一级加二级,总的来说还是没少
我觉得你这就像比如把 3+2 折腾成 2+3 其实还是 =5 没变


严格的说,pe_sys.isz 只是作为 老的一级内核 的分离部分,单独存放于磁盘上,并不能说 就是 二级内核。
不能简单的看作 朝三暮四 。这样做,至少减少了启动时 的内存压力,可以加快内核的加载速度。当pe进入 cmd 状态以后,在进一步补充文件。
winpe.is_ 体积过大,小内存电脑就无法在启动的时候装载他。更谈不上启动了。
而且这样做,把内核分成几个 功能块来逐步加载,更适合 diy 。
有人说不喜欢 那个 dos 窗口 ,那么 电脑启动的时候 bios 检测的时候屏幕还黑黑呢,上面还有好多英文呢,这只是启动的必经阶段而已。我觉得 做 pe 应该从 实用角度出发,而不是 喜好的眼光占主导。希望诸位老大还是客观 的从研究功能的角度出发,考虑问题。

那些 只想着吃鱼,而不想自己去打渔的懒家伙,真有些让人 哀其不幸、怒其不争 阿。

[ 本帖最后由 dos时代菜鸟 于 2008-9-28 07:09 编辑 ]
回复

使用道具 举报

8#
发表于 2008-9-28 08:01:50 | 只看该作者
原帖由 dos时代菜鸟 于 2008-9-28 07:02 发表


有人说不喜欢 那个 dos 窗口 ,那么 电脑启动的时候 bios 检测的时候屏幕还黑黑呢,上面还有好多英文呢,这只是启动的必经阶段而已。我觉得 做 pe 应该从 实用角度出发,而不是 喜好的眼光占主导。希望诸位老大还是客观 的从研究功能的角度出发,考虑问题。


赞同!
想当年我用DOS3.1 DOS5.0(1994年)DOS6.22+UCDOS6.0(1995年)!呵呵!回想起来岂痛苦!!
回复

使用道具 举报

9#
发表于 2008-9-28 08:15:05 | 只看该作者
楼主这样折腾,无非就是为了在更低的内存下启动,可是,64M内存的机器还有多少?128M的机器还有多少?
我认为照顾低内存的机器的限度最低128M就可以了,再低,意义不大。
不能为了照顾低内存无谓地牺牲一些东西,比如美观等等。
试想,从DOS的黑窗口进入图形界面,再冒出一个Dos黑窗口总是不爽的!
佩服楼主的钻研精神,但是钻研的方向要选对。
自己的想法不知楼主爱听否?
回复

使用道具 举报

10#
 楼主| 发表于 2008-9-28 08:40:57 | 只看该作者
这样折腾,还是有必要的。
牺牲启动时的界面美观,提升启动速度,我个人认为还是值得的。
在usb盘上,短时间内把一级启动内核载入内存,来减少内存压力。并不是简单的考虑照顾小内存电脑这么简单!这样启动总比 瞪大眼睛 着急的看着 “loading ” 的死屏幕 调用过程要“美观”吧!
回复

使用道具 举报

11#
 楼主| 发表于 2008-9-28 08:50:39 | 只看该作者
把内核分级加载 的最初目的就是要减少 一级内核的体积
减少一级内核的体积,就是要 缩短启动过程 winpe.is_ 载入内存时的时间,减轻内存压力。
同时空出更多内存在启动时也会起到一定的加速作用。

如果 把各级内核都放在一起 估计 winpe.is_ 至少32M 解压缩 后 winpe.iso 至少 54M ,如果把如此大的内核在启动的时候一并加载,会花费多少内存?启动的时候 "LOADING " 的过程会多长时间?然后再运行OP.WIM里面的软件,估计 256M内存的电脑都要吃紧。
回复

使用道具 举报

12#
发表于 2008-9-28 08:53:09 | 只看该作者
我觉得你的减少内存压力的说法不成立
一开始是少了,但是后面还是要把其它的都加载进去
总量还是一样的,分两部走最终用的内存还是没有少
甚至我怀疑虚拟Z盘比挂载WIM用的内存还多
回复

使用道具 举报

13#
发表于 2008-9-28 08:55:28 | 只看该作者
原帖由 dos时代菜鸟 于 2008-9-28 08:50 发表
把内核分级加载 的最初目的就是要减少 一级内核的体积
减少一级内核的体积,就是要 缩短启动过程 winpe.is_ 载入内存时的时间,减轻内存压力。
同时空出更多内存在启动时也会起到一定的加速作用。

如果 把 ...


这个并不是内存的问题
是USB读取速度的问题
早读晚读,你的方法最终还是要读,并没有少读
我还是认为没有什么提升
回复

使用道具 举报

14#
 楼主| 发表于 2008-9-28 09:07:02 | 只看该作者
原帖由 wxb 于 2008-9-28 08:55 发表


这个并不是内存的问题
是USB读取速度的问题
早读晚读,你的方法最终还是要读,并没有少读
我还是认为没有什么提升


1、与USB速度有关,晚读的时候,已经加载了 USB驱动,读取速度会更快
2、与内存有关,启动内核耗费的内存变小,装载内核到内存的等待时间缩短。主要是减轻启动的时候内存的压力。
3、一级补充内核(PE_SYS.ISZ)更便于 修整,便于增加文件和支持脚本。而基本内核除了驱动方面的更新基本不用改动什么。这样从整体上看,内核分制更便于DIY

[ 本帖最后由 dos时代菜鸟 于 2008-9-28 09:08 编辑 ]
回复

使用道具 举报

15#
发表于 2008-9-28 09:12:05 | 只看该作者
原帖由 dos时代菜鸟 于 2008-9-28 09:07 发表


1、与USB速度有关,晚读的时候,已经加载了 USB驱动,读取速度会更快
2、与内存有关,启动内核耗费的内存变小,装载内核到内存的等待时间缩短。主要是减轻启动的时候内存的压力。
3、一级补充内核(PE_SY ...


可是其实大多数电脑都已经直接USB2.0了
我是觉得这样做没什么效果
不赞成你在这个思路上浪费时间
回复

使用道具 举报

16#
 楼主| 发表于 2008-9-28 09:23:45 | 只看该作者
我不太了解 usb2.0.
是不是usb2.0 也是需要驱动才可以发挥作用的吧。
回复

使用道具 举报

17#
 楼主| 发表于 2008-9-28 09:24:52 | 只看该作者
这个框架已经 成熟并成功。我不想再浪费时间讨论了,发出这个帖子,是为了技术交流。
回复

使用道具 举报

18#
发表于 2008-9-28 09:27:32 | 只看该作者
很多机子BIOS直接USB2.0了,不需要再驱动
你说的成熟成功,老是强调开始的时间短,其实只是放在了后面而已
你可以把所有的启动时间计时看一下
我觉得不会有什么效果
回复

使用道具 举报

19#
发表于 2008-9-28 09:47:41 | 只看该作者
如果是老机器,建议使用hhh333的Dos2PE.img镜像预加载usb2.0驱动,我做过测试,正常启动8分钟,预加载USB2.0后不到一分钟。
只是这个IMG镜像需要DIY才能使用。
回复

使用道具 举报

20#
 楼主| 发表于 2008-9-28 09:57:17 | 只看该作者
原帖由 wxb 于 2008-9-28 09:27 发表
很多机子BIOS直接USB2.0了,不需要再驱动
你说的成熟成功,老是强调开始的时间短,其实只是放在了后面而已
你可以把所有的启动时间计时看一下
我觉得不会有什么效果


这话我赞同,不过单从内核分段维护的角度考虑,这样做也是一种尝试。
把脚本都放到 pe_sys.isz 里面运行 ,同时 控制 lsass service 等系统进程的启动,也更便于维护。我觉得,这样管理脚本 更具主动。

原本 天琴080911 需要124m内存启动的,用这个框架112m内存就可以了,这说明这个框架并没有浪费内存的嫌疑,反而会提高系统运行质量。甚至 Nanope 经过对驱动的精简,96m内存就可以启动了。
以往一提到内存,就是单纯的内存空间使用方面的事情,其实这涉及到系统运行质量、速度、cpu占用等多方面的因素。

其实pe内核,无非是那么几十个核心文件和不断补充的磁盘/主板驱动程序。其他的都是外围。

主要参考 Nanope构架 和 内核分段的思想。
回复

使用道具 举报

21#
发表于 2008-9-28 10:02:01 | 只看该作者
似乎很不错啊!
回复

使用道具 举报

22#
发表于 2008-9-28 10:16:34 | 只看该作者
原帖由 dzy 于 2008-9-28 08:01 发表


赞同!
想当年我用DOS3.1 DOS5.0(1994年)DOS6.22+UCDOS6.0(1995年)!呵呵!回想起来岂痛苦!!


哈哈,想当年就多了!

从LASER 310到APPLE-II(1990),CEC-I(也是APPLE-II)到5.25英寸双面360K软盘的APPLE-II(1991),然后是8088到80286单色CGA(1992),80286单色VGA到80386单色VGA(1993),80386单色VGA到80386DX 0.39 彩色VGA(1994),80486 0.39 彩色VGA到80486DX 0.31 隔行扫描彩色VGA(1995),AMD 5X86 0.28 逐行扫描彩色VGA到P5 90 硬盘上到GB级(1996),以上,虽然都不是我自己买的,但是我全部长期用过,伴随了我整个的高中大学时代!!

直到我终于自己组装了属于自己的一台P5 120/16MB/1.2GB/CDROM/14吋彩色逐行,那已经是1997了。呵呵!
回复

使用道具 举报

23#
 楼主| 发表于 2008-9-28 10:30:45 | 只看该作者
当年的5寸软盘 单面的,我还有2盒呢,都发霉了。
3寸软盘好几百张,用来运输游戏。
都没用了。只能用来观测日全食。
当年用软盘在286上玩游戏。
用kv200杀毒,自己破解的一张kv200 老让人羡慕了。如今破解用的软件都没有用武之地了。
呵呵。

[ 本帖最后由 dos时代菜鸟 于 2008-9-28 10:45 编辑 ]
回复

使用道具 举报

24#
发表于 2008-9-28 11:29:16 | 只看该作者
严重支持楼主,我也正转向东邪的PE呢。对PE了解不深入的人永远不了解小内核的好处。
回复

使用道具 举报

25#
 楼主| 发表于 2008-9-28 12:07:20 | 只看该作者
精简 system32 文件到 pe_sys 的cmd命令 有误,应该是下面的:
move *.* d:\pe\pe_sys
for /f %c in (d:\pe\pe1.txt) do if exist d:\pe\pe_sys\%c move d:\pe\pe_sys\%c %cd%

原来的,写反了。呵呵,把应该保留的给放到 pe_sys 里面了。

不好意思。
回复

使用道具 举报

26#
发表于 2008-9-28 13:06:43 | 只看该作者
能否把PECMD.EXE升级到终结版
回复

使用道具 举报

27#
发表于 2008-9-28 13:16:29 | 只看该作者
在有些U盘测试的时候不能发现pe_sys.isz,估计修正USB 驱动程序文件路径  提前放在WINPE.is_可以解决
回复

使用道具 举报

28#
 楼主| 发表于 2008-9-28 16:27:59 | 只看该作者
不能发现 PE_SYS.ISZ?
1、什么U盘,难道无法驱动不成?
2、你把 PE_SYS.ISZ 放在什么地方了?是 WXPE 文件夹么?

[ 本帖最后由 dos时代菜鸟 于 2008-9-28 16:29 编辑 ]
回复

使用道具 举报

29#
发表于 2008-9-28 17:33:35 | 只看该作者
原帖由 wxb 于 2008-9-28 09:27 发表
很多机子BIOS直接USB2.0了,不需要再驱动
你说的成熟成功,老是强调开始的时间短,其实只是放在了后面而已
你可以把所有的启动时间计时看一下
我觉得不会有什么效果

这个我测试过,845/865/945的主板,分两次加载比一次加载大概快15-30秒左右(看内核大小,大概是1.5s/MB)。

原因是很多BIOS会用USB 2.0 Full Speed启动U盘,进入PE后用USB 2.0 High Speed,速度差距可不是一点点。

至于内存方面,小内核可以实现64MB+虚拟内存运行,大内核就无能为力了。

[ 本帖最后由 usbzip 于 2008-9-28 17:39 编辑 ]
回复

使用道具 举报

30#
 楼主| 发表于 2008-9-29 20:57:44 | 只看该作者
从目前看,这是内核分段装载 较好的解决方案了。
因为 系统服务可以通过 CMD 模式下 通过 SERVICES 指令手动启动,对PE系统本身修改和维护更为方便。DLL文件的添加和修改也容易很多。随时可以通过鼠标在CMD 状态暂停指令的运行,脚本控制更具主动。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-1 14:14

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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