引导盘和数据盘的制作方法是不一样滴!
随着光碟刻录机的普及,很多朋友肯定都刻录了许多自己的软件合集光碟,也肯定有不少朋友做过集合了Windows操作系统和各种软件的随身装机工具碟。可是朋友们肯定碰到过这种问题,就是自己制作的合集光碟失去了原版Windows光碟的可引导功能,不能用它自行引导电脑完成启动、安装等等一系列功能,而市面上某些D版光盘却具备各种引导功能。它们是怎么制作的呢,可引导光碟的原理又是什么呢?本文就是在说明可引导光碟原理的基础上,介绍如何在不破坏原有可引导信息的基础上,往光碟里面添加新的内容,制作自己的“电脑启动碟”的。
记录PC可引导光碟的标准的,是January 25, 1995由Phoenix Technologies与IBM公司共同制定的"El Torito" Bootable CD-ROM Format Specification Version 1.0这份白皮书。El Torito说明了可引导光碟的技术规格。本文就是参考可引导光碟的标准格式El Torito这份资料所完成的。(在
http://www.phoenix.com/resources/specs-cdrom.pdf可以下载这份白皮书)
可引导光碟的原理,在这里要简单说明一下,以便朋友们有个概念。
如图,中间的部分就是"El Torito"里面定义可引导光碟规格。
首先要在光碟的第17扇区放进一段代码,这个扇区就是Boot Volume Descripter,它要指向一个Booting Catalog(也就是可引导光碟里面的BOOTCAT.BIN文件)。此文件是一个扇区大小,不限定放在那个位置。但据一般的经验,把它放在光碟的越前面越好。
在第17扇区的第47h偏移量的位置,要放进4个字节的资料,它就是Booting Catalog的位址(Logical Block Address,以下简称LBA)。
也就是说,光碟引导中,系统读取它第17扇区的Boot Volume Descripter指向Booting Catalog的位址,然后到了Booting Catalog后,它又要再指向Bootable Disk Image的位址,也就是可引导系统的映像文件(可以是1.2M/1.44M/2.88M软盘,或者硬盘的映像)的位址。例如这个映像是个软盘映像文件,文件名BOOT.IMG。
等找到BOOT.IMG后,它就会被还原变成原来软盘的内容,然后执行引导。简单的流程如下:
第17扇区(Boot Volume Descriptor)--找到--> BOOTCAT.BIN(Booting Catalog)--找到--> BOOT.IMG(Bootable Disk Image)--> 光碟引导开始
所以,想制作可引导光碟,我们需要做的是:
·找出BOOTCAT.BIN及BOOT.IMG的位址(LBA)
·在第17扇区写入特定的数值及BOOTCAT.BIN的位址码(LBA)
·找到BOOTCAT.BIN所在的扇区,加进BOOT.IMG的位址码(LBA)
Booting Catalog里面至少要有两个部份,就是Validation Entry(确认记录)及Initial/Default Entry(起始/预设记录)。察看Booting Catalog开头的部份应该是类似这样的:
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 AA 55 55 AA
88 02 00 00 00 00 01 00 15 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
先看前面的两行:
01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 AA 55 55 AA
就是Validation Entry。根据"El Torito"这个文档,表一说明Validation Entry包含哪些东西:
表一. Validation Entry
偏移量
类型
描述
00
字节
头ID, 必须为01
01
字节
系统平台ID
0 代表 80x86
1 代表 Power PC
2 代表 Mac
02-03
字
保留,必须为0
04-1B
字符串
ID字符串
用来标明光碟的制造厂商或者开发商
1C-1D
整数
验证求和字(checksum)
这个记录中所有字的总数必须为0
1E
字节
关键字节,必须为55. 这个值包含在checksum中
1F
字节
关键字节,必须为AA. 这个值包含在checksum中
再看第三及第四行:
88 02 00 00 00 00 01 00 15 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
就是 Initial/Default Entry。表二说明 Initial/Default Entry 的内容:
表二. Initial/Default Entry
偏移量
类型
描述
00
字节
引导指示
88 代表可引导
00 代表不可引导
01
字节
引导类型
这里表明了模拟引导的类型
0-3位的定义如下,4-7位是保留的且必须为0:
00 不模拟
01 模拟1.2M的软盘
02 模拟1.44M的软盘
03 模拟2.88M的软盘
04 硬盘 (drive 80)
05-0F 保留,此时无效
02-03
字
载入段
这里是初始化引导映像文件时的载入段
如果这个值为0,系统使用地址07C0的传统段;
如果这个值非0,系统则使指定的段。
这个仅对x86体系的电脑有效
04
字节
系统类型
这个必须是引导映像的分区表第5字节的拷贝
05
字节
无用,但是必须为0
06-07
字
扇区计算
这里记在初始化引导程序期间,
载入段需要存储的虚拟/模拟扇区的数目
08-0B
双字
载入RBA
标明虚拟磁盘的开始地址
光碟使用Relative/Logical block addressing(RBA/LBA)
0C-1F
字节
无用,但是必须为0
好了,基础知识说到这里,我们下面就以Windows98、Windows NT以及Windows 2000为例,来作详细说明吧。
一、Windows 98 原版光碟的原理以及制作
Windows 98原版光碟启动电脑的原理
进入BIOS设定光碟启动优先,然后把98原版光碟放进光驱里,按Ctrl+Alt+Del重起即可。
Windows 98原版光碟是模拟1.44MB软盘引导。引导完成后会变成A:。我用CDR Diagnostic对原版光碟抓了几张图:
先看看第17扇区:最后一行是Booting Catalog的位址, 14 00 00 00说明Booting Catalog位于第20扇区(14h是十六进制的20,以下类似自行计算)。
前往第20扇区看看,第三行88 02 ..,根据上面说的表二(Initial/Default Entry),确实是模拟1.44M软盘。最后指向虚拟软盘映像文件的位址,15 00 00 00即第21扇区。
看一下第21扇区, 这里就是软盘映像文件的开头部份。
引导以后,系统停留在这个页面,
这是如何做的呢?
选一下Boot from CD-ROM,系统最后停在A:提示之下。输入DIR A:看看,能找到一个JO.SYS文件,出现上面的菜单就是这个JO.SYS在起作用。我们可以利用它一下,以后制作引导光碟前做引导软盘的时候,把这个文件放进引导软盘的根目录再做成映像文件。这样烧成的引导光碟,引导系统后也能有同样的选单出现。
2. 制作Windows 98安装启动光碟
基本上现在大部分光碟刻录软件都有光碟引导制作的功能,用任意一款都可以吧,下面以WinOnCD这个软件来示范。
将要刻录的内容准备好,打开WinOnCD的可引导光碟属性对话框,选择好你刚才制作的引导软盘的映像:
打开高级设置,根据上面所说的表二(Initial/Default Entry),我们确定它的模拟平台x86,模拟方式1.44M软盘,载入段是系统默认的07C0:
设定好以后刻录,OK,你就能得到一张启动和原版98光碟一样的引导光碟了,里面还可以包含你自己需要的东西。
原理即是如此,其实在现在各种光碟辅助工具十分丰富的情况下,我们已经不必采用手工制作启动光碟的方法了。以下介绍一种简单之极的方法。
启动ISOBuster,察看我们的原版98光盘,注意有一个Bootable CD区。
这个,就是我们引导光碟的启动映像文件。直接提取出这个文件,按照上面说的方法刻录这张光碟即可。
这样,符合你的需要的98可引导光碟就制作完成了,很简单,不是吗?
二、Windows NT 4.0原版引导光碟的研究
Windows NT 4.0光碟模拟的引导方式
Windows NT 4.0安装光碟的引导模式是所谓的不模拟(No Emulation)。就是既不是模拟软盘,也不是模拟硬盘,在引导后就直接进入安装程式。
仍然用 CDR Diagnostic 抓了几张图:
先看看第17扇区:最后一行是Booting Catalog的位址,13 00 00 00 表明Booting Catalog位在第19扇区。
前往第19扇区看看,第三行88 00..,第二个Byte是00就表示它是以NO Emulation的方式引导,最后指向位址14 00 00 00即第20扇区。
前往第20扇区,这里就是引导的程序的位置。
NT 4.0的引导模式和引导过程与2000光碟很类似,鉴于现在使用NT的个人玩家不多,就在下面介绍2000可引导光碟时一起介绍。
光碟引导可模拟的方式
在Phoenix网站下载的EL Torito CD-ROM Boot v 1.0的PDF文件,里面有引导光碟的详细说明。再看看表二,它对Booting Catalog里的Initail/Default Entry的说明如下(下面是PDF文件里的原表):
也就是88之后所接的字节,如果是:
00 -- 不模拟(No Emulation)
01 -- 模拟1.2MB软盘
02 -- 模拟1.44MB软盘
03 -- 模拟2.88MB软盘
04 -- 模拟硬盘
另外,88 00 00 00 00 00 04 00 14 00 00 00里有一个04 00(用软盘模拟时一般都用01 00,代表载入一个扇区,NT系列的光碟包含2000、XP一般都是载入4个扇区)。查表看看,这位置是所谓载入扇区计算(如下表)。
3.关于No Emulation
请看上述文件EL Torito CD-ROM Boot v 1.0的5.3节。如下:
2000/XP与NT一样,采用No Emulation的方式引导,不是用模拟软硬盘的方式。下次我们来详细来介绍2000/XP的可引导光碟的原理,以及多重引导光碟的制作。
参考资料:http://www.tenriver.cn/article.asp?id=129