|
根据楼主的描述,一般情况下是做不到的。这涉及到很深刻的问题。涉及到当初规范的制定。
启动 ISO(光盘) 的方式,与启动软盘和启动硬盘的方式是不一样的。
启动 ISO,需要的是 ISO 的启动信息(ISO 的引导扇区,等等)。我们知道,ISO 的格式与硬盘和软盘不同。硬盘有分区,有 MBR,软盘有自己的引导扇区和文件系统。而光盘呢,是一个叫做 ISO9660 的文件系统。当初的可启动光盘规范的制定者们选择了与那时早已成熟了的磁盘格式完全不同(即不兼容)的格式,那就是 ISO9660 格式。这就使得光盘的引导无法与磁盘的引导相互兼容。比如说,如果光盘是 no-emulation 模式的,那么它要读取的光盘扇区大小是 2048 字节。这就与通常的磁盘不兼容(通常U盘也是软盘和硬盘格式,除非量产为 USB-CDROM 的情况)。因此,你提取的 BIF 引导扇区可能根本就无法找到它期望的光盘扇区,也就注定要引导失败。光盘引导格式除了 no-emulation 模式之外,还有 floppy-emulation 和 harddisk-emulation 模式,是一个比较复杂的光盘引导规范。无论是哪个模式,你都不能简单地通过引导从光盘提取出来的引导信息文件而引导你的 U 盘,这是由光盘和硬盘之间的巨大差别、它们之间的不兼容而引起的。
这就是说,想找到一个通用的方法,是不可能的。
具体到某一个光盘,你当然有可能找到一种有针对性的方法,那是另外一个问题了。
补充修正:
也许 ISO9660 是很早就形成了的文件系统格式。而“可启动光盘规范”的出现或许要晚于 ISO9660 格式。大概为了与早已成为了标准的硬盘和软盘格式相兼容,“可启动光盘规范”的制定者们推出了 floppy-emulation 和 harddisk-emulation 这两种模式。但这样一来,就涉及到 emulation(仿真)了,换句话说,如不经过仿真则无法与软盘和硬盘格式兼容。no-emulation 就是“无仿真”的意思,那么显然,从字面就可以猜测到,这种 no-emulation 模式是无法与硬盘和软盘格式相兼容的,正如前面已经提到了的,其扇区的大小(2048字节)就与硬盘和软盘的扇区大小(512字节)不同,而且 no-emulation 既不采用硬盘的分区表和MBR,也不采用软盘的文件系统,而是考虑到与早期光盘格式相兼容而制定出的一个新的规范,这样,不兼容性就成了历史性的了,有它的必然性的一面,不能完全归咎于“规范制定者们”故意制造不兼容性。市面上这三种模式的可启动光盘都是存在的。微软 Win98 的光盘就是 floppy-emulation 模式的,而 Win2000 以后的安装光盘,微软使用了 no-emulation 的模式。harddisk-emulation 也有被采纳的情况,但微软似乎并未在 Windows 系列安装光盘上采用 harddisk-emulation。整体来说,floppy-emulation 和 no-emulation 的使用率都很大,而 harddisk-emulation 的使用则比较罕见。
[ 本帖最后由 不点 于 2009-12-6 22:17 编辑 ] |
|