中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: GRUB 可以启动 CDROM 了, 棒! 上一主题 | 下一主题
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『楼 主』:  GRUB 可以启动 CDROM 了, 棒!

引自 http://www.linuxeden.com/download/softdetail.php?softid=1026

grub for dos 本身没有消息, 不过我刚刚从 GNU GRUB 网站看到这样一条令人振奋的消息:
Success booting CD from a GRUB prompt(从 GRUB 提示符成功引导 CDROM)
对于我们中的很多人来说, 这太好了! 简言之, menu.lst 项目如下:

# CD-ROM via Smart Boot Manager
title Boot CD-ROM or DVD
kernel (hd0,0)/image/memdisk
initrd (hd0,0)/image/sbm.bin

此处利用了 syslinux 中的 memdisk 以及 Smart Boot Manager 中的 sbm.bin(后者的开发人员也是中国人). 太完美的组合! 漂亮!

-------------------------------------------

更新: 利用 SBM, 成功在 grub for dos 0.2.0pre7 启动 CDROM! 从以下 FTP 网址

ftp://ftp.mcc.ac.uk/beta/local/teaching_cluster/disks/

下载 sbm.bin 文件, 这个文件其实是一个 1.44M 的软盘映像, 只不过尾部截断了. 将这个文件尾部用 00 填充, 填充之后变成一个 1474560 字节的软盘映像, 假定填充之后的文件叫做 sbm.img, 把它放在硬盘 FAT12/16/32 分区之下, 并保证物理扇区连续存放. 这时候, 用 GRUB 的软盘仿真功能就可以启动 SBM 了【SBM 有引导 CDROM 的功能】. 命令举例如下:

title Boot SBM on floppy image
map (hd0,0)/sbm.img (fd0)
chainloader (hd0,0)/sbm.img
boot

需要说明的是, SBM 在我的 VMWARE 虚拟机中不能探测到 VMWARE 的 CDROM 设备, 因而无法引导 VMWARE 的 CDROM. 希望 SBM 的开发者能够改进一下.






因为我们亲手创建,这个世界更加美丽。
2004-6-5 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 2 楼』:  

這其實並非GRUB本身支持從CD啟動嘛,衹是借助於您以前提到過的SBM而已,就跟我們以前用的GRUB+BCDL成功用GRUB啟動CD時沒什麼區別的,況且到現在為止仍然不能從ISO文件啟動,唉。。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-6-5 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 3 楼』:  

这次不同了, 这个 SBM.BIN 可以集成到 GRUB 中, 完全没有困难了. 不过我现在有别的一些事情急需做. 等我的事情忙完了再来做集成 SBM 的工作.

另外, wengier 兄能否再介绍一下 BCDL 的内部实现情况, 它的特点, 以及集成它有什么主要困难. 以前你曾介绍过, 不过我已经忘了.

ISO 的事情还遥远着呢, 不过你也可以说说想法, 哪怕是重复以前的想法也可以. 我都忘了差不多了, 现在记忆力太差了.

另外, SBM 在 VMWARE 下无法启动 CDROM, 不知道 BCDL 在 VMWARE 下行不行呢? 也许我们可以集成 BCDL 而不是 SBM. 我对此不熟悉, 希望听听您的见解.






因为我们亲手创建,这个世界更加美丽。
2004-6-5 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 4 楼』:  

在我的记忆中,我以前用BCDL是在VMWare、VPC等中正常使用过。不过现在我好久没用VMWare了。

BCDL是通过三个部分组成的,第一部分:一个512字节的启动扇区或启动扇区文件,就相当于BOOTGRUB;第二部分:启动CD的主程序BCDL.BIN,就相当于GRLDR;第三部分,一个用MSCDEX接口的普通DOS光驱驱动程序,如VIDE-CDD.SYS。BCDL.BIN自动调用这个DOS光驱驱动程序,然后用它提供的MSCDEX接口自动从此光驱启动。

关于从ISO文件启动的想法,就是说用一个虚拟光驱程序来代替这个通常的光驱驱动,使得这个虚拟光驱驱动自动提供MSCDEX接口的ISO文件光驱虚拟,这样BCDL就可以从此ISO映象文件启动了。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-6-9 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 5 楼』:  

最近这几天, 我一直在考虑 ISO 启动的深层问题. 遗憾的是, 就我的认识而言, 这个问题严格来讲是不可能的.

真实的 CDROM 设备的启动, 已经不是难题. 问题的焦点就在于 ISO 文件能否启动.

如果单单考虑  bootable CDROM 规范, 则是比较容易在 ISO 上给以实现的, 因为这个标准不涉及硬件. 也就是说, ISO 文件放在那里, 我们当然可以读出其中的启动代码, 例如, 如果这个 ISO 中有个 1.44M 的软盘启动映像, 我们就可以像 grub for dos 那样用它来仿真一个真实的软盘, 这样, 这个软盘映像的启动是不成问题的了.

但是不可解决的困难在于软盘映像获得控制之后的情况.

1. 如果软盘影像中的执行过程不再访问光驱, 那么这个系统将非常完美, 不会碰到障碍.

2. 如果软盘影像中的执行过程有访问光驱硬件的指令, 如 VIDE-CDD.SYS 之类的光驱驱动程序, 或者 linux 的光驱驱动程序, 那么, 这些光驱驱动都将失常, 原因是它们都要访问物理硬件设备. 以前我曾经提到过, 在实模式下, 只有 int 指令可以接管(重新定向), 而 I/O 指令不可能被接管, 因而也不可能仿真这些 IO 指令. 这样, 我们就无法将那些访问 CDROM 的硬件指令转化成访问 ISO 文件的指令. 也就是说, 虚拟软盘上的那些访问 CDROM 的指令都将失败. 我这里说 IO 指令不能被仿真, 是说不能简单的被仿真, 如果单步跟踪, 遇到 IO 指令就加以更改, 当然是可以的, 但这太复杂, 超出我们的讨论范围. 或者用 VM86 模式也可以仿真, 这也太复杂, 也超出我们的讨论范围.

SHSUCDHD这个软件是依赖于 DOS 的, 它的程序中有很多判断 INDOS 标志的. 即便如此, 我觉得它也难以仿真一个真实的光驱.

可以做一个简单的试验: 你那一个 win98 的启动光盘的 ISO, 用 SHSUCDHD 来仿真并引导, 当 win98 的 config.sys 提示如何启动时, 你选择"需要带 CDROM 支持的启动", 这时候要加载各种 CDROM.SYS 文件, 以及 mscdex 程序. 当这些加载完毕, 你在 DOS 命令行试图访问光盘. 你能访问吗? 不出意料的话, 肯定不能访问, 也就是说, 肯定不能访问 ISO 文件中的内容. 当然这时候如果你的真实光驱中有光盘的话, 你仍然可以访问这张真实光盘, 因为 CDROM.SYS 和 MSCDEX.EXE 就是干这个的. 但你不能按照所希望的那样来访问 ISO 中的文件.

看来这个问题目前只能放弃掉.




因为我们亲手创建,这个世界更加美丽。
2004-6-9 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 6 楼』:  



  Quote:
以下是引用不点在2004-6-9 上午 05:10:29的发言:
最近这几天, 我一直在考虑 ISO 启动的深层问题. 遗憾的是, 就我的认识而言, 这个问题严格来讲是不可能的. 

真实的 CDROM 设备的启动, 已经不是难题. 问题的焦点就在于 ISO 文件能否启动.

如果单单考虑  bootable CDROM 规范, 则是比较容易在 ISO 上给以实现的, 因为这个标准不涉及硬件. 也就是说, ISO 文件放在那里, 我们当然可以读出其中的启动代码, 例如, 如果这个 ISO 中有个 1.44M 的软盘启动映像, 我们就可以像 grub for dos 那样用它来仿真一个真实的软盘, 这样, 这个软盘映像的启动是不成问题的了.

但是不可解决的困难在于软盘映像获得控制之后的情况.

不点上面所说的应该是指纯粹的软引导方法,即用软件方式来读取可启ISO镜像文件中的引导方法的方法来试图从这个ISO文件引导系统。在这种情况下,确实存在软盘映象启动后无法以真实光驱的方式来读取ISO虚拟光驱中的数据的这个不可解决的问题。

不过我觉得这种纯软引导方法并不是很好,因为不仅存在着以上严重问题,还存在着各种兼容性问题,尤其是当光盘启动格式比较多的时候,这时用此方法显然不怎么好了。而我觉得更好的解决方法应该还是完全虚拟法,即将ISO映像文件完全虚拟成一个物理的光盘驱动器,就像BIOS对硬盘的识别或者GRUB中的map命令那样,比如map (hd0,0)/cd.iso (cd0),即将cd.iso虚拟成物理的光驱,然后直接交由BCDL而不是GRUB去引导它(请注意我现在说的这种方法跟以前说过的SHSUCDHD的方法是不同的,这次是指由GRUB对ISO只进行map成cd然后直接交系统控制权给BCDL)。这样一来不用自己去写光盘引导代码了,二来不存在虚拟光驱中的引导镜像启动后无法识别虚拟光盘本身的问题了,同时兼容性应该也会加强,就类似于已经可以使用的虚拟软盘和硬盘那样。这种方法如何?



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-6-9 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 7 楼』:  

我说过, 任何事情都不能说是绝对不可能的. 那要看你采用什么技术了. 进入保护模式或者 VM86 模式, 用 vmware 类似的技术仿真, 肯定是可以的, 然而, 简单的通过接管 int 调用则肯定是不行的. 我记得以前说过 CDROM 没有像磁盘那样的 int 标准, 只有 ATAPI 硬件标准, 这就是症结所在, 是不可逾越的障碍. 要想根本解决这个问题, 就得等待 CDROM int 扇区读写标准的出台. 遗憾的是, 似乎根本就没有人出面来制定这样的标准, 甚至也没有人有这种要求. 可悲呀, 微软 MSCDEX 的奴隶们都已经习惯了, 麻木了.

我们以前 map 磁盘的时候, 都是简单接管 int 调用. 因为 cdrom  根本就没有 int 扇区读写中断规范, 你怎么去接管? 你接管谁? 你没有接管的对象. 因此用这种 map 的办法来仿真 cd 是完全失效的. 简单来说, 这是目前不可能做到的, 即使将来有可能, 也是非常麻烦的.



[此贴子已经被作者于2004-6-9 上午 06:58:33编辑过]






因为我们亲手创建,这个世界更加美丽。
2004-6-9 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 8 楼』:  

那能不能想想另一种思路呢。现在DOS下驱动USB光驱或1394光驱通常都是首先加载USBASPI.SYS和1394ASPI.SYS之类的程序将USB接口或1394接口在实模式下用软件方法转换成SCSI接口,然后在DOS下直接加载SCSI光驱的驱动程序就可以驱动这个被转换成SCSI光驱的USB光驱或1394光驱了。所以能不能这样,用GRUB将ISO光盘映象“转换”成SCSI接口,这样将控制权交给BCDL后就可以用相应的SCSI光驱驱动程序来加载并且从这个虚拟的SCSI光驱启动了。不行这样是否可以做到?



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2004-6-9 00:00
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
不点
银牌会员

不甘寂寞的人


积分 2491
发帖 1115
注册 2003-9-24
状态 离线
『第 9 楼』:  

GRUB 没有转换硬件接口的功能. 事实上我认为困难就在于 ISO 文件是软的, 而 USB/SCSI/IDE 等都是硬的, 如果能转换的话, 也一定很难, 很复杂, 至少我是这么认为的. 我没有接触过这方面的知识, 无从下手.





因为我们亲手创建,这个世界更加美丽。
2004-6-9 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: