无忧启动论坛

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

grub4dos,怎么判断多个光驱中,哪个光驱里面有启动光盘?请高手指点。

[复制链接]
跳转到指定楼层
1#
发表于 2008-11-24 13:46:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
grub4dos,怎么判断多个光驱中,哪个光驱里面有启动光盘?请高手指点。

用grub4dos做了多菜单的启动u盘。里面加入了一项从光盘启动。如果只有一个光驱,调用bootcd.img来实现,但是多个光驱的时候。怎么让grub自动搜寻多个光驱里面的光盘。判断哪张光盘是可以启动。就从可启动的光盘启动。
2#
发表于 2008-11-24 14:49:14 | 只看该作者
在光盘启动方面,我觉得有如下问题需要说明:

1. grub4dos 需要用 cdrom --init 命令初始化光驱,然后才能发现系统中的光驱和光盘。这个初始化,等于是动用 GRUB4DOS 的 CDROM 驱动程序,不依赖于 BIOS。但是,这个方法失败的频率是较高的,粗略来讲,成功和失败,各占 50%。【但是较新的机器似乎都倾向于支持 grub4dos 的 cdrom --init,所以,失败的大多是老的机器。】由 cdrom --init 所初始化的光驱,可能有多个,它们是 (cd0), (cd1), (cd2), (cd3) ....,究竟你的盘片是在哪个里面,那就不好说了,你自己得试验一下才知道。在网上找一些教程看看,学习 cdrom --init 的相关用法,比如如何从 (cd0) 启动你的光盘。

2. 如果你的机器设置为从光盘启动,并且光盘盘片的启动格式是 no-emulation 模式,那么,进入 GRUB 之后,有个设备 (cd) 就是这个光盘了。这个 (cd) 是 BIOS 给的,所以,成功率很高,可以认为是 100%。(cd)设备是 BIOS 的,它不需要 cdrom --init 就可以直接使用。这个设备就是用来启动你的系统的那个 cdrom 设备。但是,光盘盘片必须是 no-emu 模式才可以让 BIOS 自动创建这个 (cd) 设备,否则,BIOS 可能创建,也可能不创建。如果有多个 cdrom 驱动器,BIOS 可能只创建一个 (cd),也可能创建多个 CDROM 设备(但这不能保证,所以,我们假定只有一个 CDROM 被赋予了 BIOS 盘号)。

3. 如果使用外部的软件(例如 bootcd.img 来启动光驱,那么控制权已经完全交给这个外部程序,grub4dos 就不再起任何作用了。
回复

使用道具 举报

3#
 楼主| 发表于 2008-11-24 15:20:06 | 只看该作者
原帖由 不点 于 2008-11-24 14:49 发表
在光盘启动方面,我觉得有如下问题需要说明:

1. grub4dos 需要用 cdrom --init 命令初始化光驱,然后才能发现系统中的光驱和光盘。这个初始化,等于是动用 GRUB4DOS 的 CDROM 驱动程序,不依赖于 BIOS。但是 ...




感谢楼上朋友的回答,看来要成功获取biso返回的光盘值。对光盘的启动格式有要求的话。通用性就不那么好了。我在grub,menu.lst里面加入了光盘启动选项。当然不一定是要用grub来实现自动搜寻。通过调用外部命令boot.img,或者整个批出来来实现也可以。只要能在菜单项选择从光盘启动后。能够从多个光驱里面识别出哪个光盘有启动盘就ok。希望大家给想想办法。

看了http://bbs.wuyou.net/forum.php?mod=viewthread&tid=127383 dos时代菜鸟 的NSET妙用 DOS下启动光盘所在光驱的判定似乎有点启发。正在消化中。

[ 本帖最后由 xintiandi 于 2008-11-24 15:26 编辑 ]
回复

使用道具 举报

4#
发表于 2008-11-24 18:19:43 | 只看该作者
楼主,2楼这位是grub4dos目前的作者,不会误导你的。。。
回复

使用道具 举报

5#
发表于 2008-11-24 19:40:43 | 只看该作者
chainloader 命令会自动判断加载的启动文件是否受支持,或者说能检查其能否被引导。
因此,满足楼主要求且只检查 10 个cdrom 的话,菜单如下:

title boot cdrom
cdrom --init && map --hook
chainloader (cd0) && boot
chainloader (cd1) && boot
chainloader (cd2) && boot
chainloader (cd3) && boot
chainloader (cd4) && boot
chainloader (cd5) && boot
chainloader (cd6) && boot
chainloader (cd7) && boot
chainloader (cd8) && boot
chainloader (cd9) && boot
cdrom --stop                                    ;强烈建议加上本句
map --rehook
pause --wait=3 not found cdrom        ;本句非必要,起提示作用

(vm 中测试时需要把光驱安排在ide主节点上,例如 0:0 ,1:0 ,2:0等,不能是0:1 ,1:1之类。)

[ 本帖最后由 zw2312914 于 2008-11-24 19:49 编辑 ]
回复

使用道具 举报

6#
发表于 2008-11-24 21:35:13 | 只看该作者
http://bbs.znpc.net/viewthread.php?tid=5376&;page=1&extra=page%3D1#pid33256

[ 本帖最后由 zw2312914 于 2008-11-24 22:41 编辑 ]
回复

使用道具 举报

7#
 楼主| 发表于 2008-11-25 09:07:12 | 只看该作者
原帖由 zw2312914 于 2008-11-24 21:35 发表
http://bbs.znpc.net/viewthread.php?tid=5376&;page=1&extra=page%3D1#pid33256



非常感谢兄弟的帮忙,但是我这边的电脑。很多都不用ide接口了。光驱和硬盘几乎都是sata的,只有少数机子是sata硬盘,ide光驱。这个有解决方案吗?grub的命令有限,估计是不是要用调用外部img文件的方式来实现,就像调用bootcd.img这样的方式。

我看了dos时代菜鸟 NSET妙用 DOS下启动光盘所在光驱的判定,给他发了个消息。昨天发的,没想到今天就回复了。内容如下:

“用 aset +findcd +dready 可以更完美的实现调用指定光盘上的程序。
具体可以参考:
http://www.brsbox.com/filebox/do ... da07224a04b8ee55388
这是一个img文件,里面通过循环判断每一个光盘中是否存在需要调用的程序文件来实现预期功能。具体看f_cd.bat ”


我先把他提供的附件传上来。供大家研究。晚上回去在看看。

[ 本帖最后由 xintiandi 于 2008-11-25 09:14 编辑 ]

DOSTOOLS.part1.rar

240 KB, 下载次数: 180, 下载积分: 无忧币 -2

DOSTOOLS.part2.rar

193.28 KB, 下载次数: 181, 下载积分: 无忧币 -2

回复

使用道具 举报

8#
发表于 2008-11-25 09:19:47 | 只看该作者
一个是dos,一个是grub,不同的方案,没有可比性。
你的标题写的是grub。
回复

使用道具 举报

9#
发表于 2008-11-25 09:43:54 | 只看该作者
光驱除了IDE、SATA外还有USB、1394和声卡(早期)等接口。
回复

使用道具 举报

10#
 楼主| 发表于 2008-11-25 10:16:20 | 只看该作者
原帖由 lianjiang 于 2008-11-25 09:19 发表
一个是dos,一个是grub,不同的方案,没有可比性。
你的标题写的是grub。



我的意思是如果grub能够直接实现就更好。如果实现效果不好。能不能改成grub引导img文件,img文件里面内置dos系统和相关的dos程序来判断多个光驱是否启动光盘。
的确如楼上所说的光驱接口类型那么多。如果加载驱动,通用性也是个问题。如果bios能识别这些类型的光驱。获取bios的值,但怎么判断是否有启动光盘呢。看来不好办了。

[ 本帖最后由 xintiandi 于 2008-11-25 10:21 编辑 ]
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-11-15 20:42

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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