无忧启动论坛

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

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

  [复制链接]
34#
 楼主| 发表于 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

回复

使用道具 举报

33#
发表于 2009-11-14 23:35:54 | 只看该作者
“将副本中WINPE.IS_用同体积空白文件替换,目的是减少压缩后体积,WINPE.IS_实际长度为26655412
;4、副本iso用gzip压缩后体积为208897,占409个扇区”

好像有些明白了。。。这些只是为了得到一个数字,为后面的map --mem (rd)435+409,208897 (0xff)做准备吧

[ 本帖最后由 go2 于 2009-11-14 23:37 编辑 ]
回复

使用道具 举报

32#
 楼主| 发表于 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结构还是原来的结构,核心不变,但引导部分单文件化了。

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

使用道具 举报

31#
发表于 2009-11-14 23:21:55 | 只看该作者
P大:

1.WINPE.IS_用空白文件。。。
如何创建相同大小的空白文件

2.原来的WINPE.IS_放哪里,或是你提供的模版的grldr已包括定制的用gzip压缩文件

[ 本帖最后由 go2 于 2009-11-14 23:30 编辑 ]
回复

使用道具 举报

30#
 楼主| 发表于 2009-11-14 23:14:07 | 只看该作者

回复 #28 lwz 的帖子

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

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

使用道具 举报

29#
发表于 2009-11-14 23:11:30 | 只看该作者
懒得折腾,直接用grub启动iso合盘更方便吧:)
回复

使用道具 举报

28#
发表于 2009-11-14 22:32:19 | 只看该作者
请教,gzip压缩最好用什么压缩器?
回复

使用道具 举报

27#
发表于 2009-11-14 21:52:39 | 只看该作者
大师独创


追尾法
回复

使用道具 举报

26#
发表于 2009-11-14 21:29:19 | 只看该作者
楼主思维独特,创新探究,学习了!
回复

使用道具 举报

25#
发表于 2009-11-14 21:19:37 | 只看该作者
真正搞技术的的地方.先顶再学习.
回复

使用道具 举报

24#
发表于 2009-11-14 20:32:32 | 只看该作者
P&C二大师之技,炉火纯青,让人叹服!
回复

使用道具 举报

23#
发表于 2009-11-14 19:50:55 | 只看该作者
如果没有看明白的朋友可以去我的搏客看一下,我今天写的文章
对这些的图文解释,了解了这些想改其它东西比如I386要改长一点也行了。
http://www.chenall.com/blog/2009/11/SETUPLDR.html
回复

使用道具 举报

22#
发表于 2009-11-14 19:06:46 | 只看该作者
原帖由 chenall 于 2009-11-14 17:32 发表
忘了说一点第十三个字符不可以为\0,否则就没办法用了。

比如你覆盖了0s字符为f,
如下使用
write --offset=0x2a432 (rd)+1 1234\\RXPE.SIF\0
那winnt.sif里面的
OsLoadOptions=需要改成f=

这些如果不 ...

相信我明白了, 也成功啟動了.

因為 1234\\RXPE.SIF\0 第十三個字元開始, 是 OsLoadOptions 所屬範圍,
"1234\\RXPE.SIF\0" 這字串中, 第十三個字元 是 "F", 而第十四個字元 是 \0
所以 Winnt.sif 內之
OsLoadOptions=
需要改成
F=

謝謝!
回复

使用道具 举报

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

使用道具 举报

20#
发表于 2009-11-14 17:32:33 | 只看该作者
忘了说一点第十三个字符不可以为\0,否则就没办法用了。

比如你覆盖了0s字符为f,
如下使用
write --offset=0x2a432 (rd)+1 1234\\RXPE.SIF\0
那winnt.sif里面的
OsLoadOptions=需要改成f=

这些如果不清楚最好不要乱改。
回复

使用道具 举报

19#
发表于 2009-11-14 17:28:46 | 只看该作者
注意看一下我的原贴,后面的
"
从这个路径的第十三个字符也就是从"L”开始是属于以前OsLoadOptions的位置,
所以WINNT.SIF里面的OsLoadOptions要相应的改变,后面\0结束。(最长不得超过28个字符,否则就不好改了)
"
需要对应的改WINNT.SIF里面的OsLoadOptions为新的字符才行的。
回复

使用道具 举报

18#
发表于 2009-11-14 16:08:05 | 只看该作者
原帖由 chenall 于 2009-11-13 18:13 发表
menu.cfg内容
title cspe
#先加载SETUPLDR.BIN到内存。
map --mem=0xB000 ()/CSPE/KERNEL/SETUPLDR.BIN (rd)
#修改winnt.sif路径
write --offset=0x2a432 (rd)+1 CSPE\\KERNEL\\LOADER.CFG\0
chainloader (rd)+1
root ()

我使用 grub4dos-0.4.4-2009-11-12 版本,
及 繁體 peldr 作測試.

write --offset=0x2a432 (rd)+1 12\\RXPE.SIF\0
啟動成功.

write --offset=0x2a432 (rd)+1 12\\RXPE.SIF\0\0
啟動失敗. 當寫入第十三個字元便失敗了. (覆蓋原有 OsLoadOptions 的第一個字元)

想問是否一定要使用, 你的 SETUPLDR.BIN (合併版本)
才可最多寫 28 字元, 而仍可啟動 WinPE 成功呢?
回复

使用道具 举报

17#
发表于 2009-11-13 21:27:44 | 只看该作者
大师级的人物毕竟不同凡响,受教了。
回复

使用道具 举报

16#
发表于 2009-11-13 21:25:36 | 只看该作者
原帖由 玄天 于 2009-11-13 03:57 发表
启动文件还是不改路径和文件名最好,折腾的乱七八糟过一段时间只怕连改的人也不明白哪是哪了*.*

我完全赞同你的看法。现在国內流行的PE很多都把启动路径和文件名换成非标准模式,这样做的“好”处是结构清爽和让人难以修改作者的成品,但绝对不利于技术交流和推广,更不利于走岀世界!
回复

使用道具 举报

15#
发表于 2009-11-13 21:18:14 | 只看该作者
原帖由 chenall 于 2009-11-13 18:13 发表
一个使用的例子
所有的启动文件都在CSPE\KERNEL\目录下
一个SETUPLDR.BIN(论坛上下的合并NTDETECT.COM的版本)
一个CSPE.IMG
一个Loader.cfg
一个menu.cfg

其中Loader.cfg内容
[SetupData]
BootDevic ...



嗯,这个修改方案巧妙,不用整天替换来替换去了。
回复

使用道具 举报

14#
发表于 2009-11-13 21:10:51 | 只看该作者

回复 #10 chenall 的帖子

到底是大师级!!!
巧妙,谢谢!
学习了!!!

建议加精,让更多的人学会!

[ 本帖最后由 天涯海角1216 于 2009-11-13 21:12 编辑 ]
回复

使用道具 举报

13#
发表于 2009-11-13 20:58:56 | 只看该作者

回复 #13 hhh333 的帖子

我顺便也说一下 我的MSI 845E主板,U启只能用SYSLINUX,G4D的话开机自检不能通过,不知道是不是不点大所说的BIOS封杀G4D?
回复

使用道具 举报

12#
发表于 2009-11-13 20:54:24 | 只看该作者
对以g4d作引导的可以大大地精简启动文件,还是比较有用的。但一种启动方式是不够的。以前我碰到一台机子,syslinux作一启时能够U启,但用g4d就启不了,报告给不点,说他的g4d似乎没有linux的兼容性;哪知道没过三天又碰到一台机子,情况却是相反的linux不行而g4d可以。究竟哪个的兼容性好,真的很难说,没办法只有搞双启了。。。。。
回复

使用道具 举报

11#
发表于 2009-11-13 20:08:50 | 只看该作者

回复 #10 chenall 的帖子

也照你样子来试试
非常感激
回复

使用道具 举报

10#
发表于 2009-11-13 19:11:02 | 只看该作者
学习了非常好的东西。
回复

使用道具 举报

9#
发表于 2009-11-13 18:13:48 | 只看该作者
一个使用的例子
所有的启动文件都在CSPE\KERNEL\目录下
一个SETUPLDR.BIN(论坛上下的合并NTDETECT.COM的版本)
一个CSPE.IMG
一个Loader.cfg
一个menu.cfg

其中Loader.cfg内容
[SetupData]
BootDevice="ramdisk(0)"
BootPath="\WXPE\SYSTEM32\"
Loader.CFG="/minint /fastdetect /rdpath=CSPE\KERNEL\CSPE.IMG"

menu.cfg内容
title cspe
#先加载SETUPLDR.BIN到内存。
map --mem=0xB000 ()/CSPE/KERNEL/SETUPLDR.BIN (rd)
#修改winnt.sif路径
write --offset=0x2a432 (rd)+1 CSPE\\KERNEL\\LOADER.CFG\0
chainloader (rd)+1
root ()

这样就可以启动了,还可以把MENU.CFG和LOADER.CFG合并成一个文件(但这需要一些技巧,否则会出错的)
合并的方法,先把MENU.CFG的回车换成MAC的(也就是只有CR)并在前面加一个";"
然后
copy /y loader.cfg+menu.cfg

说明一下
write --offset=0x2a432 (rd)+1 CSPE\\KERNEL\\LOADER.CFG\0
从这个路径的第十三个字符也就是从"L”开始是属于以前OsLoadOptions的位置,
所以WINNT.SIF里面的OsLoadOptions要相应的改变,后面\0结束。(最长不得超过28个字符,否则就不好改了)

顺便再提供其它的修改
修改默认I386目录名

#修改默认目录名
write --offset=0x2A4FB (rd)+1 WXPE

修改默认的TXTSETUP.SIF文件名
write --offset=0x2A502 (rd)+1 TXTSETUP.CFG

嘿嘿,这样子处理后这个菜单就是启动这个PE专用的了,并而和SETUPLDR.BIN没有多大关系(只要是同一版本的就行了),以后要修改路径也方便。不用再对SETUPLDR.BIN开刀了。

注意如果写入的字符超长,第13个字符不可以为\0。一般情况下最好不要超过原来的WINNT.SIF+2 即11个字符。

[ 本帖最后由 chenall 于 2009-11-14 17:34 编辑 ]
回复

使用道具 举报

8#
发表于 2009-11-13 17:36:58 | 只看该作者
原来是先挂到内存读取,又可以replace内存中的目录及文件名,G4D发展得越来越变态了。
回复

使用道具 举报

7#
发表于 2009-11-13 17:14:34 | 只看该作者
#3
这个好像很难。
至于放到长目录,最多应该可以有28个字符。但需要对应的修改WINNT.SIF里面的内容。
因为借用了里面的OsLoadOptions字符。
在0x2a432位置直接用write写入即可。

#6
这就是不改启动文件的方法,启动原文件都是原版的。修改的内容都在GRUB4DOS菜单里面,比以前的方案直观。

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

使用道具 举报

6#
发表于 2009-11-13 16:57:41 | 只看该作者
启动文件还是不改路径和文件名最好,折腾的乱七八糟过一段时间只怕连改的人也不明白哪是哪了*.*
回复

使用道具 举报

5#
 楼主| 发表于 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 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-6-2 00:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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