无忧启动论坛

标题: 求个带判断语句的启动菜单的写法 [打印本页]

作者: 2011678    时间: 2015-9-16 01:04
标题: 求个带判断语句的启动菜单的写法
本帖最后由 2011678 于 2015-9-16 01:24 编辑

把PE内核map到内存,如果hd(0,0)为硬盘,启动PE;  如果hd(0,0)为U盘,交换hd0,hd1再启动,只交换一次,没有硬盘的时候忽略错误进入下一步。

如果判断不了,可以在U盘非量产区(或者说UD启动盘的可见区)存在GHOST文件夹,用于 find hd(0,0)/ghost 得到返回值。

为了在没有硬盘或者没有GHOST的时候进入PE,判断语句前关闭错误检查,交换hd0,hd1后开启错误检查。




不知道这个思路能不能行.

我要启动的是win8PE(wim和ISO两种格式菜单分别需要一个),也就是一个用于量产的,一个用于UD的。
另外还有要用F6IMG功能


本人对G4D这个东西确实不太深入,命令也记不住了,特来求助。

作者: lbw2007    时间: 2015-9-16 09:51
本帖最后由 lbw2007 于 2015-9-16 09:58 编辑

把PE内核map到内存,如果hd(0,0)为硬盘,启动PE
ud启动的话hd(0,0)为U盘,但是从CDROM启动的话hd(0,0)就不一定是谁了

如果判断不了,可以在U盘非量产区(或者说UD启动盘的可见区)存在GHOST文件夹,用于 find hd(0,0)/ghost 得到返回值
我曾经试过find文件夹,但是结论是 find --set-root /ghost/ 是无效的,ghost文件夹里必须要有具体的文件才行

如果hd(0,0)为U盘,交换hd0,hd1再启动,只交换一次,没有硬盘的时候忽略错误进入下一步
如果hd1也不是硬盘呢?我觉得至少应该用 find --set-root 找到硬盘然后与U盘互换

我要启动的是win8PE(wim和ISO两种格式菜单分别需要一个),也就是一个用于量产的,一个用于UD的
我记得ud也是可以直接启动USB-CDROM里面的8PE的

还有就是完全搞不懂你要做什么,初步推测:
有硬盘,进PE;没硬盘,跳过;然后进行磁盘检查?为了提高兼容性,同时进行CDROM和UD量产。

只有思路没有目的把我弄的一头雾水……

另外grub4dos可以有条件判断的 if exist hd(0,0) /grldr,可以参照这个帖子学习:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=322662

我对G4D也不太熟悉,如果有不对的地方也请大家指正。这个帖子发到grub4dos区回答的人会更多一些。
作者: 2011678    时间: 2015-9-16 10:22
lbw2007 发表于 2015-9-16 09:51
把PE内核map到内存,如果hd(0,0)为硬盘,启动PE
ud启动的话hd(0,0)为U盘,但是从CDROM启动的话hd(0,0)就不 ...

但是从CDROM启动的话hd(0,0)就不一定是谁了  ??
  从内存启动的




































































作者: lbw2007    时间: 2015-9-16 10:26
2011678 发表于 2015-9-16 10:22
但是从CDROM启动的话hd(0,0)就不一定是谁了  ??
  从内存启动的

我的意思是从CDROM map到内存还是ud map到内存,两种方式里hd0不同。CDROM启动hd0有可能是硬盘也有可能是U盘
作者: 2011678    时间: 2015-9-16 10:28
我后面说的很清楚,两种情况的分开写,两种用途嘛,如果有能力写个通用的更好

作者: 2011678    时间: 2015-9-16 10:31
其实目的很简单,就是要进入PE后打开DISKGEN,可以看到U盘不是hd0就可以了
作者: 2011678    时间: 2015-9-16 13:47
lbw2007 发表于 2015-9-16 10:26
我的意思是从CDROM map到内存还是ud map到内存,两种方式里hd0不同。CDROM启动hd0有可能是硬盘也有可能是 ...

所以才要加判断,要不就直接决定菜单命令里写不写交换磁盘了
作者: 2011678    时间: 2015-9-16 14:50
自己写了一个,不知道对不对:
量产用的菜单:
title   启动win8PE
find --set-root /BOOT/bootmgr
errorcheck off
if exist (hd0,0)/ghost
map (hd0) (hd1)
map (hd1) (hd0)
errorcheck on
chainloader /BOOT/bootmgr

UD版的菜单:
title   启动win8PE
F6IMG
map (ud)/boot/pe64.iso (0xff) > nul
map --hook
errorcheck off
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
errorcheck on
chainloader (0xff)
boot
作者: lbw2007    时间: 2015-9-17 07:30
if exist (hd0,0)/ghost肯定不对
根据我的经验grldr找不到文件夹,在文件夹里面随便放一个文本文档用来寻找

你交换磁盘的目的是什么?
作者: 2011678    时间: 2015-9-17 10:26
目的是不让U盘的非量产区被识别为HD0
作者: 2011678    时间: 2015-9-17 10:40
那个文件夹果然没被识别,在GHOST后面加/也不能识别,还是加文件吧。谢谢lbw2007




欢迎光临 无忧启动论坛 (http://wuyou.net/) Powered by Discuz! X3.3