无忧启动论坛

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

关于饭大新PE中智能判断zip和hdd的GRUB启动脚本!

[复制链接]
跳转到指定楼层
1#
发表于 2012-5-23 22:15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
饭大的最新版03 极速PE中,用了iftitle语句来判断新老机子,从而智能处理老机子的启动速度和新机子的蓝屏。语句如下:
#以下为新机子的noram方式,兼容式好,防蓝屏。本人添加说明
iftitle [if exist (hd0)/grldr]  1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
command (ud)/BOOT/GRUB/F6IMG
map (ud)/TANGO/XPBOOT.ISO (0xff)
map (ud)/TANGO/TWO.ISO (0xfa)
map --e820cycles=3
map --rehook

chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN

#以下为老机子的ram方式,启动速度快。本人添加说明
iftitle [if exist (fd0)/grldr]  1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
command (ud)/BOOT/GRUB/F6IMG
map --mem (ud)/TANGO/XPBOOT.ISO (0xff)
map (ud)/TANGO/TWO.ISO (0xfa)
map --rehook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN

在以上的脚本中,因为新机子不会识别为fd0(USB-zip),从而判别出新老机子,构思很妙。有没有其它更好的方案呢?
#Z大 2012hotmai等提供了以下一个新方案,大家可以测试:
title  1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
command (ud)/BOOT/GRUB/F6IMG
calc *0x82b9&0xff && map (ud)/TANGO/XPBOOT.ISO (0xff) !map --mem (ud)/TANGO/XPBOOT.ISO (0xff)
map (ud)/TANGO/TWO.ISO (0xfa)
calc *0x82b9&0xff && map --e820cycles=3
map --hook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN


个人想问一下:
1.新机子采用非防真内存直接map,map --e820cycles=3这种蓝屏现在会不会解决?
说明一下,以前遇到一台联想本本,map -mem,不加map --e820cycles=3蓝屏;但用map不加map --e820cycles=3正常启动。
2如果是光盘版ISO文件,刻录光盘和量产到U盘,及U+到U盘,电脑的启动设备号又是什么,有统一的标准吗?
请grub高手指点。


以下为某位大大的说法:
增加了 map --e820cycles 参数。
用法:
map --e820cycles=数值
然后执行 map --hook 或 map --rehook
默认时,map --e820cycles=-1,即 0xFFFFFFFF,表示 int15 永远 hook 上。如果 map --e820cycles=0,则执行 map --hook 之后, int15 处于 unhook 状态。
对于 rockrock99 的 DELL 笔记本,必须执行
map --e820cycles=0
map --hook
才行。
普通的正常电脑,只需 map --hook 就可以了,因为默认时,e820cycles 是 (-1),即 int15 也永久 hook 上。
对于不正常的电脑,如果 int15 一直 hook 上,则有些驱动程序会死掉。因此,需要调整 int15 被 hook 上的次数。
可以试试 e820cycles=0,1,2,3,...,看看是否存在某个值,使得驱动程序不再死掉。

[ 本帖最后由 zds1210 于 2012-5-24 11:38 编辑 ]
2#
 楼主| 发表于 2012-5-23 23:20:32 | 只看该作者
不知道这样子 判断会不会出错,应该要广泛测试一下。
回复

使用道具 举报

3#
发表于 2012-5-24 08:06:47 | 只看该作者
我的是格式化时选zip 和 chs ,并且第二句去掉了“command (ud)/BOOT/GRUB/F6IMG” (我选用的PE内核自带部分常用磁盘驱动),map --mem (ud)/TANGO/XPBOOT.ISO (0xff) 这句都带上了mem,对新机感觉带不带应该区别不大。
测试了6台机子,新老机自动判断正常。

[ 本帖最后由 一望无垠 于 2012-5-24 08:52 编辑 ]
回复

使用道具 举报

4#
发表于 2012-5-24 08:10:41 | 只看该作者
title  1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
command /BOOT/GRUB/F6IMG
map /TANGO/XPBOOT.ISO (0xff)
calc *0x82b9&0xff && map /TANGO/TWO.ISO (0xfa) ! map --mem /TANGO/TWO.ISO (0xfa)
map --hook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN
回复

使用道具 举报

5#
 楼主| 发表于 2012-5-24 10:34:42 | 只看该作者
原帖由 zhaohj 于 2012-5-24 08:10 发表
title  1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
command /BOOT/GRUB/F6IMG
map /TANGO/XPBOOT.ISO (0xff)
calc *0x82b9&0xff && map /TANGO/TWO.ISO (0xfa) ! map --me ...

老大的语句相当精练,功能一样吗?
但是老大这个 应该是可见区的,还是,二级内核还是直接map为好,一级内核要判断分仿真内存map或直接Map.请Z大上来修正一下脚本,供大家测试。

[ 本帖最后由 zds1210 于 2012-5-24 10:46 编辑 ]
回复

使用道具 举报

6#
 楼主| 发表于 2012-5-24 10:38:21 | 只看该作者
原帖由 一望无垠 于 2012-5-24 08:06 发表
我的是格式化时选zip 和 chs ,并且第二句去掉了“command (ud)/BOOT/GRUB/F6IMG” (我选用的PE内核自带部分常用磁盘驱动),map --mem (ud)/TANGO/XPBOOT.ISO (0xff) 这句都带上了mem,对新机感觉带不带应该区 ...

无垠,建议新机还是 不带mem,直接map,可以防部分新型笔记本电脑非SRS驱动的蓝屏。饭大的处理方式是比较通用些。老机直接map,加载速度太慢,但仿真内存mem快,老机不会有兼容性的问题。
回复

使用道具 举报

7#
发表于 2012-5-24 10:46:05 | 只看该作者
title  1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
command /BOOT/GRUB/F6IMG
calc *0x82b9&0xff && map /TANGO/XPBOOT.ISO (0xff) !map --mem /TANGO/XPBOOT.ISO (0xff)
map /TANGO/TWO.ISO (0xfa)
calc *0x82b9&0xff && map --e820cycles=3
map --hook
chainloader (0xff) || chainloader (0xff)/WXPE/SETUPLDR.BIN

按照一楼的意思结合4楼z大的翻译。
回复

使用道具 举报

8#
 楼主| 发表于 2012-5-24 10:49:15 | 只看该作者
原帖由 2012hotmail 于 2012-5-24 10:46 发表
title  1. 启动 Native Tango XPPE \n 启动Tango 风格的 XPE \n DIY自逆天使的TangoPE
command /BOOT/GRUB/F6IMG
calc *0x82b9&0xff && map /TANGO/XPBOOT.ISO (0xff) !map --mem /TANGO/XPBOOT.ISO (0xff)
...

谢谢,不过map前面应该可带UD

[ 本帖最后由 zds1210 于 2012-5-24 10:52 编辑 ]
回复

使用道具 举报

9#
发表于 2012-5-24 10:53:52 | 只看该作者
http://bbs.wuyou.net/forum.php?m ... amp;highlight=unmap 看这个帖子,学习。2011kcyou提出的“有没有必要添加“map --unmap”命令释放内存,菜单应怎样写?”一时看不明白。

水仙花的ISO菜单:
title [4] 启动XP微型PE IMG内核 用F6IMG
command (0xff)/F6IMG (0xff)/SRS
#下面两句把我们虚拟的资源盘(0xff)消掉,否则会在PE里看到,不美观还费内存
map --unmap=0xff
map --rehook
chainloader ()/MKRL/ldrimgpe

能否借鉴到UD版?
回复

使用道具 举报

10#
发表于 2012-5-24 10:56:47 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

11#
 楼主| 发表于 2012-5-24 11:05:30 | 只看该作者
原帖由 kenhun 于 2012-5-24 10:56 发表
最近饭大真红。。。P大什么时候搞好0PE啊。。。没有7PE 。。SRS驱动的硬伤对平时维护来说是个大麻烦~

意思7PE可以识别新的SRS驱动?一直不太明白这个意思。
回复

使用道具 举报

12#
发表于 2012-5-24 11:05:39 | 只看该作者

回复 #1 zds1210 的帖子

这个不是判断新、老机的菜单。实际也无法判断新、老机。
这个是判断启动U盘是ZIP还是HDD格式。
因为ZIP方式,如果非--mem方式仿真,速度很慢,加载一级内核要达2-3分多钟。
而--mem方式则20多秒。
回复

使用道具 举报

13#
发表于 2012-5-24 11:07:24 | 只看该作者

回复 #1 zds1210 的帖子

晕死了。。
只是一个简单的iftitle....
并且这个菜单是 幸运的草 提供给我的。。。。我看现成的就懒得写了。。。。
回复

使用道具 举报

14#
 楼主| 发表于 2012-5-24 11:07:41 | 只看该作者
原帖由 幸运的草 于 2012-5-24 11:05 发表
这个不是判断新、老机的菜单。实际也无法判断新、老机。
这个是判断启动U盘是ZIP还是HDD格式。
因为ZIP方式,如果非--mem方式仿真,速度很慢,加载一级内核要达2-3分多钟。
而--mem方式则20多秒。

实测就是新老机子,新机子中U盘用zip格式,但测试结果还是noram格式,你可以在菜单中后加ram和noram测试就明白了。
回复

使用道具 举报

15#
发表于 2012-5-24 11:12:22 | 只看该作者
原帖由 幸运的草 于 2012-5-24 11:05 发表
这个不是判断新、老机的菜单。实际也无法判断新、老机。
这个是判断启动U盘是ZIP还是HDD格式。
因为ZIP方式,如果非--mem方式仿真,速度很慢,加载一级内核要达2-3分多钟。
而--mem方式则20多秒。


一般新机不管是U盘格式化成zip或hdd,都认做是HDD,从这个意义上讲,也就判断了。
回复

使用道具 举报

16#
 楼主| 发表于 2012-5-24 11:16:05 | 只看该作者
原帖由 一望无垠 于 2012-5-24 11:12 发表


一般新机不管是U盘格式化成zip或hdd,都认做是HDD,从这个意义上讲,也就判断了。

嗯。手工选择直接ram或noram也是一种好方法,智能判别应该有兼容性的硬伤,机子情况是复杂的。

[ 本帖最后由 zds1210 于 2012-5-24 11:17 编辑 ]
回复

使用道具 举报

17#
发表于 2012-5-24 11:39:14 | 只看该作者

回复 #10 kenhun 的帖子

至今不准备玩7pe。
7pe、8pe、9pe早已出来,但我还停留在0pe。

组raid时,7pe也有缺驱动问题。您如果有0pe不认盘的机器,请提供“三要素”信息,应该没有搞不定的。

0PE不对用户提map字样,不谈菜单,通吃新老机。或者说,那些问题很早前已经处理好了。
用户只需摆放组件,增减看得到的组件,不修改文件。
回复

使用道具 举报

18#
 楼主| 发表于 2012-5-24 11:42:43 | 只看该作者
原帖由 pseudo 于 2012-5-24 11:39 发表
至今不准备玩7pe。
7pe、8pe、9pe早已出来,但我还停留在0pe。

组raid时,7pe也有缺驱动问题。您如果有0pe不认盘的机器,请提供“三要素”信息,应该没有搞不定的。

0PE不对用户提map字样,不谈菜单,通 ...

对于map不map,你是怎么解决的,让我们在普通PE中参考,pe大。
回复

使用道具 举报

19#
发表于 2012-5-24 12:09:14 | 只看该作者

回复 #18 zds1210 的帖子

呵呵,不解决,就是慢点。。
或者下他N个包。。。什么全解开,版解开,不解开之类的。。。
总之不提MAP但是提解不解开。
回复

使用道具 举报

20#
 楼主| 发表于 2012-5-24 12:10:37 | 只看该作者
原帖由 hotdll 于 2012-5-24 12:09 发表
呵呵,不解决,就是慢点。。
或者下他N个包。。。什么全解开,版解开,不解开之类的。。。
总之不提MAP但是提解不解开。

在老机子中,不解开速度太慢了,解开还是快。有空研究一下P大是怎么智能解决的。
回复

使用道具 举报

21#
发表于 2012-5-24 12:24:25 | 只看该作者

回复 #18 zds1210 的帖子

pe快速启动首先是思路,我的几个帖子


U启速度取决于U启内核
  
★统一PE

快速U启0PE——半解开部署方式

可供参考。足迹大也是受0PE启发后弄出了native。

具体实现可以看菜单,有网友做过注释。实例见:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=210105&highlight=
那是针对特定pe结构的。

对于楼主的pe,可以参考幸大、z大的意见处理。
回复

使用道具 举报

22#
发表于 2012-5-24 12:33:10 | 只看该作者
觉得那个智能判断还是有点问题的。。。。
我u盘启动,bios认作usb-hdd,g4d启动是(hd0,0),而用饭大的f6img就出错,识作是(fd0,0)了,判断有误啊。
用s版主的run模块则正常。。。
回复

使用道具 举报

23#
 楼主| 发表于 2012-5-24 13:09:44 | 只看该作者
原帖由 135956 于 2012-5-24 12:33 发表
觉得那个智能判断还是有点问题的。。。。
我u盘启动,bios认作usb-hdd,g4d启动是(hd0,0),而用饭大的f6img就出错,识作是(fd0,0)了,判断有误啊。
用s版主的run模块则正常。。。

嗯。所以,我请大家努力一下,搞出一个好的方案,在grub没有解决mem 蓝屏的时候,我们只能智能的选择一下。嗯。这个对于普通内核、native 内核,对于以后的win7都是一样要面前的问题。mem蓝屏,=3不等于3蓝屏,难道就是要手工增加N项二次菜单吧?
回复

使用道具 举报

24#
发表于 2012-5-24 14:42:54 | 只看该作者
用这个语句,win7pe 也可以自动判断 速度模式或兼容模式了。难的是有的机子适合兼容模式、有的机子适合速度模式,不绝对以新老为界。很新的机子一般兼容模式快。
回复

使用道具 举报

25#
发表于 2012-5-24 15:11:21 | 只看该作者

回复 #24 一望无垠 的帖子

这个世界上没有完美的模式。

有的只是不断进取的心。。。。
回复

使用道具 举报

26#
发表于 2012-5-24 19:41:00 | 只看该作者
发现一个重要问题:在我07年浪潮台式机(cpu2140 内存1g via主板)上,用新版grldr,可以执行菜单的判断语句,但开机启动出现英文到出现启动菜单画面,足足等了3分钟。

换用旧版的grldr,可以很快到菜单画面,但不能执行判断语句(写有这个判断语句的菜单条根本不出现)!
回复

使用道具 举报

27#
 楼主| 发表于 2012-5-25 16:22:44 | 只看该作者
经实测,这个脚本还是有问题,老机子也会被识别为ram,新机子却识别为on ram,唉。希望大家提供能智能的脚本。
回复

使用道具 举报

28#
发表于 2012-5-25 23:15:17 | 只看该作者
饭大的判断语句 菜单,在我的旧电脑上,(USB-ZIP)。 会和这个GHOST菜单 起冲突,不知道为什么。在新电脑上没有问题。

症状: 如果03PE 或 WIN7 PE 。。 用饭大的判断语句。饭大的这个GHOST菜单就不能用,会出错!!

title  2. 启动 GHOST 恢复系统镜像
calc *0x82b9&0xff || uuid (fd0,0) | echo -n | echo -n | echo -n | echo -n | set id=
calc *0x82b9&0xff && uuid (hd0,0) | echo -n | echo -n | echo -n | echo -n | set id=
if not "-"=="%id:~4,1%" set id=0000-0000
map --mem (ud)/IMGS/UGHOST.LZMA (fd0)
map --rehook
cat --locate=0000-0000 --number=2 (fd0)/findud.bat > nul
write --offset=%?% (fd0)/findud.bat %id%
chainloader (fd0)+1
rootnoverify (fd0)

如果把判断语句去掉,就没有问题了。

很奇怪  不知道为什么,难道这个GHOST菜单,还会去搜索别的菜单。
回复

使用道具 举报

29#
发表于 2012-6-8 18:20:54 | 只看该作者
原帖由 一望无垠 于 2012-5-24 10:53 发表
http://bbs.wuyou.net/forum.php?m ... amp;highlight=unmap 看这个帖子,学习。2011kcyou提出的“有没有必要添加“map --unmap”命令释放内存,菜单应怎样写?”一时看不明白。

水仙花的ISO菜单:
t ...

那个菜单老了,现在应该是这个:

  1. iftitle [if exist /MKRL/Win7PE/NV7PEKR1.IMG || find --set-root /MKRL/Win7PE/NV7PEKR1.IMG] 启动Win7PE(自适应模式)
  2. debug 1
  3. echo 正在以自适应模式加载WIn7PE,请稍后……
  4. set mem=
  5. checkrange 0x1:0x40000 read 0x8298 && set mem=
  6. calc *0x82b9&0xff || set mem=--mem ! set mem=
  7. dd if=(md)0+1 of=()/boot/grub/temp bs=512 count=1 || set mem=--mem
  8. if /i "%@root%"=="(cd)" set mem=--mem
  9. if /i "%@root%"=="(pd)" set mem=--mem
  10. if /i "%@root%"=="(fd0)" set mem=--mem
  11. if /i "%@root%"=="(fd1)" set mem=--mem
  12. map %mem% /MKRL/Win7PE/NV7PEKR1.IMG (hd0) || map --mem /MKRL/Win7PE/NV7PEKR1.IMG (hd0)
  13. map %mem% /MKRL/Win7PE/NV7PEKRL.IMG (0x9E) || map --mem /MKRL/Win7PE/NV7PEKRL.IMG (0x9E)
  14. map --mem ()/boot/TinyTools.LZMA (0xCE)
  15. map --mem /MKRL/Win7PE/MOUNT.GZ (hd17)
  16. checkrange 0x0 read 0x60006 && map --e820cycles=3
  17. map --unmap=0x5
  18. map --hook
  19. echo Finished loading!
  20. chainloader (hd0,0)/bootmgr
  21. root (hd0,0)
  22. boot
复制代码

这个应该万无一失,而且不会出现因为软盘司机的问题
回复

使用道具 举报

30#
 楼主| 发表于 2012-6-8 21:05:06 | 只看该作者
原帖由 2011czmxbb52 于 2012-6-8 18:20 发表

那个菜单老了,现在应该是这个:

iftitle  启动Win7PE(自适应模式)
debug 1
echo 正在以自适应模式加载WIn7PE,请稍后……
set mem=
checkrange 0x1:0x40000 read 0x8298 && set mem=
calc *0x82b9 ...

谢谢,有空测试一下,现在真没有好的方法解决兼容与速度的问题。
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-17 22:48

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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