无忧启动论坛

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

[求助] 求个带判断语句的启动菜单的写法

[复制链接]
跳转到指定楼层
1#
发表于 2015-9-16 01:04:06 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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这个东西确实不太深入,命令也记不住了,特来求助。
推荐
发表于 2015-9-16 09:51:40 | 只看该作者
本帖最后由 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区回答的人会更多一些。

点评

但是从CDROM启动的话hd(0,0)就不一定是谁了 ?? 从内存启动的  详情 回复 发表于 2015-9-16 10:22
回复

使用道具 举报

3#
 楼主| 发表于 2015-9-16 10:22:10 | 只看该作者
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)就不一定是谁了  ??
  从内存启动的



































































点评

我的意思是从CDROM map到内存还是ud map到内存,两种方式里hd0不同。CDROM启动hd0有可能是硬盘也有可能是U盘  详情 回复 发表于 2015-9-16 10:26
回复

使用道具 举报

4#
发表于 2015-9-16 10:26:24 | 只看该作者
2011678 发表于 2015-9-16 10:22
但是从CDROM启动的话hd(0,0)就不一定是谁了  ??
  从内存启动的

我的意思是从CDROM map到内存还是ud map到内存,两种方式里hd0不同。CDROM启动hd0有可能是硬盘也有可能是U盘

点评

所以才要加判断,要不就直接决定菜单命令里写不写交换磁盘了  详情 回复 发表于 2015-9-16 13:47
回复

使用道具 举报

5#
 楼主| 发表于 2015-9-16 10:28:17 | 只看该作者
我后面说的很清楚,两种情况的分开写,两种用途嘛,如果有能力写个通用的更好
回复

使用道具 举报

6#
 楼主| 发表于 2015-9-16 10:31:00 | 只看该作者
其实目的很简单,就是要进入PE后打开DISKGEN,可以看到U盘不是hd0就可以了
回复

使用道具 举报

7#
 楼主| 发表于 2015-9-16 13:47:50 | 只看该作者
lbw2007 发表于 2015-9-16 10:26
我的意思是从CDROM map到内存还是ud map到内存,两种方式里hd0不同。CDROM启动hd0有可能是硬盘也有可能是 ...

所以才要加判断,要不就直接决定菜单命令里写不写交换磁盘了
回复

使用道具 举报

8#
 楼主| 发表于 2015-9-16 14:50:41 | 只看该作者
自己写了一个,不知道对不对:
量产用的菜单:
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
回复

使用道具 举报

9#
发表于 2015-9-17 07:30:31 | 只看该作者
if exist (hd0,0)/ghost肯定不对
根据我的经验grldr找不到文件夹,在文件夹里面随便放一个文本文档用来寻找

你交换磁盘的目的是什么?
回复

使用道具 举报

10#
 楼主| 发表于 2015-9-17 10:26:12 | 只看该作者
目的是不让U盘的非量产区被识别为HD0
回复

使用道具 举报

11#
 楼主| 发表于 2015-9-17 10:40:42 | 只看该作者
那个文件夹果然没被识别,在GHOST后面加/也不能识别,还是加文件吧。谢谢lbw2007
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-4-19 10:43

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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