无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 25704|回复: 63
打印 上一主题 下一主题

基于grub4dos的合盘,新突破,★11.14新增续尾法

  [复制链接]
跳转到指定楼层
1#
发表于 2009-11-13 15:11:07 | 显示全部楼层 回帖奖励 |倒序浏览 |阅读模式
=========================
09.11.13

pe区研究合盘的高手多,转一下。详见:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=142163&page=2#pid1829891

使用grub4dos-0.4.4-2009-11-13.zip的--replace功能,可以方便修改文件,如果介质不可写,可考虑载入内存后修改。其意义在于在一定程度上使grub4dos支持了变量功能。

至少就”合盘“而言,这是重要突破。合盘者得研究一下了。

原帖由 chenall 于 2009-11-12 23:35 发表
...
说明下为什么要加这个功能,主要是为了使用方便,像启动PE1.X时。还有需要使用变量的时候可以把文件先加载到内存然后替换掉。
比如要把几个PE1.X合在一起,按照以前的方式,需要多个启动文件(SETUPLDR.BIN)。
有了这个就不需要了,呵呵
只要一个SETUPLDR.BIN就通用(这个SETUPLDR.BIN需要没有自校验)。
一个例子(未测试,理论上可用)
title WXPE and WINNT.XPE
map --mem /WXPE/SETUPLDR.BIN (rd)
cat --locate=I386 --replace=WXPE (rd)+1
cat --locate=WINNT.SIF --replace=WINNT.XPE (rd)+1
chainloader (rd)+1
root ()

title TYPE and TYPE.XPE
map --mem /WXPE/SETUPLDR.BIN (rd)
cat --locate=I386 --replace=TYPE (rd)+1
cat --locate=WINNT.SIF --replace=TYPE.XPE (rd)+1
chainloader (rd)+1
root ()

=========================
09.11.14 《grldr续尾法》
为演示grub4dos的高级命令和程式菜单技术,这里提供一个新方法,我称之为《grldr续尾法》。

原理是在grldr的尾部续上一些东西,在grub4dos菜单中用高级命令甚至程式菜单去访问。这样可以减少文件数,甚至单文件化。并且便于藏入ud、置于网启服务器端等。

这是对老毛桃911pe改造后的结构:
H:\
│  grldr
│  
└─MINIPE
        OP.WIM
        WINPE.INI
        WINPE.IS_
注意启动相关文件只有一个grldr,原来setupldr.bin、ntdetect.com、winnt.xpe等都不见了(被封装到grldr尾部了)。WINPE.IS_(核心)、OP.WIM(外置)、WINPE.INI(配置)保持原版没动,其它东西精简掉了。这样清爽些吧。
即使合盘,也不难做到所有启动相关文件只有一个grldr。并且,grldr和核心WINPE.IS_可以轻易藏入ud、置于网启服务器端成为本地启动/网启两用等等。

这是grldr内置菜单:

  1. ;说明:
  2. ;1、使grldr内置菜单后体积是512的整数倍,例如体积为222720字节(即435扇区),不满时可通过增加本菜单注释内容凑满。
  3. ;2、复制原版启动光盘iso得到iso副本,对副本保留其中setupldr.bin、ntdetect.com、winnt.xpe、WINPE.IS_四个文件,删除其它文件。
  4. ;3、将副本中WINPE.IS_用同体积空白文件替换,目的是减少压缩后体积,WINPE.IS_实际长度为26655412。
  5. ;4、副本iso用gzip压缩后体积为208897,占409个扇区,
  6. ;5、将副本iso续于grldr尾部,得到最终的大体积grldr,作为最终iso的引导文件。
  7. debug off
  8. clear
  9. pause --wait=0 PE loader by Pseudo 2009.11.14
  10. pause --wait=0 Loading /MINIPE/WINPE.IS_...
  11. map --mem=0xB000 /GRLDR (rd)
  12. map --mem (rd)435+409,208897 (0xff)
  13. map --hook
  14. dd if=(cd)/MINIPE/WINPE.IS_ of=(0xff)/MINIPE/WINPE.IS_
  15. chainloader (0xff)
  16. ;这里随便写些注释使grldr内置菜单凑满435扇区...
  17. ;123456789012345678901234567890123456789012345678901234567890
  18. ;123456789012345678901234567890123456789012345678901234567890
  19. ;123456789012345678901234567890123456789012345678901234567890
  20. ;123456789012345678901234567890123456789012345678901234567890
  21. ;12345678901234567890123456
复制代码
附件是模板,使用UltraISO工具,用老毛桃911原版(MD5:9354b013057548d1282451008309b7e9  BootCD.ISO)里的WINPE.IS_,OP.WIM替换模板里的同名文件即可使用。
直接刻盘、量产为usb-cdrom。或用bootice装grub4dos到U盘mbr,然后把iso中文件放入u盘即可。
——sorry,好像写死了(cd)/MINIPE/WINPE.IS_,只能刻盘、量产为usb-cdrom,如果放入u盘、硬盘得自己相应修改一下这里的(cd)。参见#52楼

附件只是演示原理,故只针对老毛桃911原版,有兴趣者可以参考此法原理DIY自己的PE,有关数值对应关系已经给出,相应变动即可。后面有时间我可以提供更通用的模板。

整个改造过程不动刀子,没有改动原版文件内容,比较忠实于原版,只是做引导文件单一化处理。
许多pe都可以这么处理。

[ 本帖最后由 pseudo 于 2009-11-16 17:34 编辑 ]

grldr911.rar

295.55 KB, 下载次数: 516, 下载积分: 无忧币 -2

评分

参与人数 2无忧币 +10 收起 理由
879792799 + 5 很给力!
gues1688 + 5 很给力!

查看全部评分

2#
 楼主| 发表于 2009-11-13 16:41:22 | 显示全部楼层
原帖由 天涯海角1216 于 2009-11-13 15:43 发表
回复一下,楼主别见怪!

chenall大师:
你将“把WINNT.SIF文件放到比较长的目录下了,例子
CSPE\KERNEL\WINNT.SIF”
能详细说一下吗?

如果把WINNT.SIF放在SETUPLDR.BIN里就好了,这很难?!

既然大家回复了,我干脆把内容贴过来,大家就在这里讨论算了。

按传统思路修改SETUPLDR.BIN,把WINNT.SIF内容放在里面没必要,思路可以开点。

正如chenall说的,WINNT.SIF可以放在meunu.lst里。其实随便放哪个目录(目录长度不限),或那个映像里,或嵌入某文件(包括SETUPLDR.BIN)里都可以。甚至藏入ud里、放在远程网启服务器端都是可以的。文件取什么名,名多长也没多少限制。

grub4dos的高级命令、程式菜单可以实现很强的功能。

感觉现在一些pe,尤其是一些合盘的pe,与启动相关的目录、文件多了点,有精简余地。
0PE将启动文件打扫干净,什么SETUPLDR.BIN、NTDETECT.COM等都看不到了,启动相关文件只有一个grldr。
即便是常见结构如老毛桃的911的pe,也可以基于grub4dos精简目录、文件,以求清爽。

我提出过一些理念,供大家参考:

提倡一种理念:
统一全内置版、全外置版
统一本地启动版、pxe网启版
统一U盘版(USB-CDROM、USB-HDD、USB-ZIP、ud、U+版)、移动硬盘版、硬盘版、光盘版
统一xp-pe、2003-pe,高度共享
统一维护版、上网版、娱乐版、全能版,统一骨头版、小版、完整版:体积、功能丰俭由人,组件化、外置化,自由扩展、随意剪裁(只增删不修改)、无缝衔接
统一引导文件,用于引导的文件、目录尽量少,盘上目录清爽,单独存在的文件一般都是可删除组件,否则尽量打包合并
各种版本全部合一(内核、外置全方位尽量合一),一个版本顶多个。

[ 本帖最后由 pseudo 于 2009-11-13 17:04 编辑 ]
回复

使用道具 举报

3#
 楼主| 发表于 2009-11-14 18:34:35 | 显示全部楼层
为演示grub4dos的高级命令和程式菜单技术,这里提供一个新方法,我称之为《grldr续尾法》。见#1楼。
回复

使用道具 举报

4#
 楼主| 发表于 2009-11-14 23:14:07 | 显示全部楼层

回复 #28 lwz 的帖子

回复 #28 lwz 的帖子
“追尾法”确实好听些,呵呵

回复 #29 zxw 的帖子
7-zip就行
回复

使用道具 举报

5#
 楼主| 发表于 2009-11-14 23:32:33 | 显示全部楼层
原帖由 玄天 于 2009-11-14 23:11 发表
懒得折腾,直接用grub启动iso合盘更方便吧:)

有所不同。

以往启动的是整个iso,iso内含启动相关文件setupldr.bin、ntdetect.com、winnt.xpe等。整个iso被启动后,有的pe可能找不到“外置程序”。整体启动iso可能慢、耗内存。
现在被grldr启动的是不含上述启动相关文件的、本身不可启动的pe核心WINPE.IS_,启动后可以正常找到外置。pe结构还是原来的结构,核心不变,但引导部分单文件化了。

稍加改造做成通用模板,使用起来比原来并不折腾。
回复

使用道具 举报

6#
 楼主| 发表于 2009-11-14 23:39:17 | 显示全部楼层
原帖由 go2 于 2009-11-14 23:21 发表
P大:
1.WINPE.IS_用空白文件。。。
如何创建相同大小的空白文件
2.原来的WINPE.IS_放哪里,或是你提供的模版的grldr已包括定制的用gzip压缩文件

1、
  1. FILESIZE.COM WINPE.IS_ 26655412
复制代码
2、WINPE.IS_等在iso副本里,压缩后拼接到grldr尾部,得到模板里最终大体积grldr。

说明:
若压缩就按压缩后的体积算,不压缩也可以,但要按原体积算。我在注释里提供的数值,就是后面命令中用到的数据,不难对应变通。

整个改造过程没有改动原版文件内容,比较忠实于原版,只是做引导文件单一化处理。许多pe都可以这么处理。

[ 本帖最后由 pseudo 于 2009-11-14 23:48 编辑 ]

FILESIZE.rar

6.11 KB, 下载次数: 106, 下载积分: 无忧币 -2

回复

使用道具 举报

7#
 楼主| 发表于 2009-11-15 00:13:10 | 显示全部楼层

回复 #36 go2 的帖子

去年的圣诞版、今年的〇peZip扩展版二合一090620.zip和ftp上最新版(可能后面还有点变动)是0PE比较好的版本。

不一定有时间再出个终结版,有可能是不了了之的淡出。

谢谢go2兄和其他朋友关心支持。
回复

使用道具 举报

8#
 楼主| 发表于 2009-11-15 13:20:44 | 显示全部楼层
原帖由 nu852 于 2009-11-15 10:01 发表
請問沒有 "匯編知識", 是否也可以個人將 原来 setupldr.bin、ntdetect.com、winnt.xpe 等文件,
续上 grldr 的尾部.
有否一步一步的教程, 讓個人也嘗試 將文件, 续上 grldr 的尾部.

不需要什么汇编语言知识。

把老毛桃的iso文件BootCD_070911.ISO用UltraISO工具打开,删除文件,保留setupldr.bin、ntdetect.com、winnt.xpe、WINPE.IS_四个文件(我给的模版中好像还多了个winpe.ini忘记删掉),再按#35楼方法弄个同体积的空白文件WINPE.IS_覆盖iso内同名文件,就得到要附于grldr尾部的iso文件。

用7-zip工具以gzip格式将其压缩(只是为了减少体积,其实不压缩也可以),假设压缩后文件为BootCD_070911.ISO.gz,那么,将其续于grldr后的dos命令是
  1. copy /b grldr+BootCD_070911.ISO.gz /b
复制代码

这样就得到一个由两个文件拼接起来的grldr了。grub4dos在使用这个grldr时,会忽略后面拼接的部分。

当然,拼接前对grldr应处理一下:
一是内置好菜单,不内置也可以,但外面多个菜单文件,稍微不爽,另外菜单外置找起来困难,还容易找错。
二是扇区对齐,就是说使grldr的体积刚好为512的整数倍,这样便于将来定位访问后面拼接的BootCD_070911.ISO.gz部分。由于菜单内置,可以通过增减菜单内容,例如加些垃圾注释来调整grldr的大小达到扇区对齐。
原帖由 zxw 于 2009-11-15 10:22 发表
谢谢,我就是用7-zip压缩的,启动无反应

用7-zip工具以gzip格式将其压缩
回复

使用道具 举报

9#
 楼主| 发表于 2009-11-15 13:39:56 | 显示全部楼层

回复 #41 玄天 的帖子

原理上字体、背景等等,随便什么都可以,甚至整个pe都可以做成单个grldr文件,不过那样意义不大。
我主要是提倡引导相关东西单文件化,即使合盘也可以做到。总之,按这样的理念去做会有利于清爽:
统一引导文件,用于引导的文件、目录尽量少,盘上目录清爽,单独存在的文件一般都是可删除组件,否则尽量打包合并
回复

使用道具 举报

10#
 楼主| 发表于 2009-11-15 14:56:09 | 显示全部楼层
原帖由 zxw 于 2009-11-15 14:27 发表
最开始我请教提问之前就是这样压缩的。
看来还要多研究一下。

附件是拼接前的两个文件以及用来执行拼接的批处理。拼接后就得到#1楼模板的最终grldr文件。

拼接前.rar

281.87 KB, 下载次数: 158, 下载积分: 无忧币 -2

回复

使用道具 举报

11#
 楼主| 发表于 2009-11-15 16:50:54 | 显示全部楼层

回复 #47 zxw 的帖子

描红处(0xff)前空一格
描蓝处你比我有经验。不过建议先删掉,后面(hd-1,0)处根据具体某台机器情况直接写死为(fd0)、(hd0,0)、(hd0,3)之类。

我觉得成功之前往往怎么弄都弄不好,成功之后往往怎么弄都弄不坏。所以先务求在特定环境尽快成功,有成功先例再考虑通用性。
回复

使用道具 举报

12#
 楼主| 发表于 2009-11-16 17:30:02 | 显示全部楼层
原帖由 chenall 于 2009-11-15 19:29 发表
附加到GRLDR,
我倒是觉得这样做更麻烦,,,
还不如直接打包为一个ISO文件,更简单。

如果是指整体启动iso,这是现成的。
如果是指将准备附加到grldr的东西打包为一个iso文件单独放置,那么外面就多了个文件。
附加到grldr是不改变原来格局,只把引导相关部分单文件化的方式之一。
回复

使用道具 举报

13#
 楼主| 发表于 2009-11-16 17:31:06 | 显示全部楼层

兼顾光启、U启

原帖由 zxw 于 2009-11-15 15:38 发表
...描蓝处是我增加的一句,不知是否恰当?...

描蓝处可删?试试这样子能不能兼顾光启、U启:

  1. ;说明:
  2. ;1、使grldr内置菜单后体积是512的整数倍,例如体积为222720字节(即435扇区),不满时可通过增加本菜单注释内容凑满。
  3. ;2、复制原版启动光盘iso得到iso副本,对副本保留其中setupldr.bin、ntdetect.com、winnt.xpe、WINPE.IS_四个文件,删除其它文件。
  4. ;3、将副本中WINPE.IS_用同体积空白文件替换,目的是减少压缩后体积,WINPE.IS_实际长度为26655412。
  5. ;4、副本iso用gzip压缩后体积为208897,占409个扇区,
  6. ;5、将副本iso续于grldr尾部,得到最终的大体积grldr,作为最终iso的引导文件。
  7. debug off
  8. clear
  9. pause --wait=0 PE loader by Pseudo 2009.11.14
  10. pause --wait=0 Loading /MINIPE/WINPE.IS_...
  11. map --mem=0xB000 /GRLDR (rd)
  12. map --mem (rd)435+409,208897 (0xff)
  13. map --hook
  14. dd if=()/MINIPE/WINPE.IS_ of=(0xff)/MINIPE/WINPE.IS_
  15. chainloader (0xff)
  16. ;这里随便写些注释使grldr内置菜单凑满435扇区...
  17. ;123456789012345678901234567890123456789012345678901234567890
  18. ;123456789012345678901234567890123456789012345678901234567890
  19. ;123456789012345678901234567890123456789012345678901234567890
  20. ;123456789012345678901234567890123456789012345678901234567890
  21. ;1234567890123456789012345678
复制代码
回复

使用道具 举报

14#
 楼主| 发表于 2009-12-5 01:05:17 | 显示全部楼层
原帖由 天涯海角1216 于 2009-12-4 19:37 发表
大师:
如果用硬盘使用,应该如何修改?用什么工具?
谢谢!

大师不在。
我代为解答:
#1楼chenall给出的菜单,可以用于从硬盘启动。
我给的菜单,用Ultraedit改为#52楼的,可用于从硬盘启动。此外,使用chenall的新版grldr,还支持将(cd)改为(bd),但新版体积有变,相关数据要相应调整。
回复

使用道具 举报

15#
 楼主| 发表于 2009-12-6 21:33:51 | 显示全部楼层

回复 #57 dhbtljj 的帖子

只给出示例以说明原理和可行性,要做通用模板得编程了
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-15 04:02

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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