!此帖子只作为对启动光盘原理感兴趣的朋友的一个参考
!如果您的目的只是为了做出个启动光盘,那您最好跳过这篇帖子
这里说的方法是根据"EL TORITO" Format Specification V1.0实施的.
换句话说,通过这种方式做启动盘只需要一个16进制编辑器,和一个制作ISO映像的工具就可以了。
这是最底层的调用,所以兼容性不存在问题,其他工具做出来的启动盘其实也基于这个Format
"EL TORITO" BOOTABLE CDROM FORMAT V1.0 支持
多重引导(无数量限制),多平台80X86,POWER PC,MAC,及多映像格式(1.2M,1.44M,2.88M,HD)
Http://www2.zzu.edu.cn/ie/newdos/uploadImages/200311923251832792.jpg
这篇文章主要说明SINGLE BOOT-IMAGE的制作过程
找一个现成的磁盘映像,或者自己做一个,HD-COPY做的映像可能不行,用WINIMAGE做的没问题.
用制作ISO映像的软件,把这个IMG作成ISO光盘映像.
手工将这个普通的ISO变成可启动的单启动光盘
先说几个概念,能帮助你理解制作过程.
标准的ISO9660光盘有333,000个sectors,每个sector有2,352个字节,其中2048个字节是用来存数据的
光盘中的sector和磁盘中的簇个概念是一样的,就是光盘的最小存储单位.
换句话说,如果一个文件,只有1个字节,在光盘中也占一个sector 2048个字节
前16个sector(0-15 sectors)系统并没有使用,第17个 (sector 16)是CDROM的主卷描述
第18个sector (sector 17) 是CDROM的Boot Record Volume,而启动光盘的标识也在这里
刚才说过每个sector是2048字节,所以第18个sector (sector 17)的地址就是20487*17=34816
这是用WINISO做的一个普通的ISO光盘映像

CD001是ISO9660光盘的标识,必须存在,否则光盘可能就不被识别.这个sector里也只有这个CD001标识是必须的
其他的信息都是由ISO制作软件生成的,如卷标之类的... 把它们都清零不会影响光盘

这是启动光盘的Boot Record Volume标识,有4个要点.
1.必须是第18个secrtor (sector 17) 因为有sector 0 所以第18个sector是sector 17
2.把 CD001之后的ASCII码,改成EL TORITO SPECIFICATION这个是启动光盘的标识,BIOS通过这个来识别是不是BOOTABLE CD
3.EL TORITO SPECIFICATION 之后的2个字节必须是0,而不是ASCII的空格,ASCII的空格16进制是20
4.34887那个地址里的02,就是指定第一张照片里说的Booting Catalog的LBA地址
理论上Booting Catalog可以放在光盘的任何地方。以前我看过一些类似文章的介绍,他们做的方法是先建立一个
2048字节的文件,把它和启动盘的映像一块做到ISO里,然后把这2048字节文件的LBA地址放在34887,用来做Booting Caltalog
我觉得这种方法没必要,以前说了,ISO9660光盘每个Sector都是2048,而且前16个Sector系统并不使用,所直接从
前16里随便拿出一个sector做Booting Catalog不就行了吗.这个启动盘我就用了sector 2来做Bootable Catalog所以
在34887里我写的02 所以这张盘的Booting Catalog地址=2048*2=4096
! This post is only for friends who are interested in the principle of bootable CDs! If your only purpose is to make a bootable CD, you'd better skip this post.
The method mentioned here is implemented according to the "EL TORITO" Format Specification V1.0. In other words, to make a bootable disk through this method, only a hex editor and an ISO image making tool are needed. This is the most fundamental call, so there is no compatibility issue. Other tools for making bootable disks are actually based on this format.
"EL TORITO" BOOTABLE CDROM FORMAT V1.0 supports multiple boots (unlimited number), multi-platform 80X86, POWER PC, MAC, and multi-image formats (1.2M, 1.44M, 2.88M, HD).
Http://www2.zzu.edu.cn/ie/newdos/uploadImages/200311923251832792.jpg
This article mainly explains the production process of SINGLE BOOT-IMAGE.
Find an existing disk image or make one yourself. The image made by HD-COPY may not work, but the one made by WINIMAGE is okay. Use the ISO image making software to make this IMG into an ISO CD image.
Manually convert this ordinary ISO into a bootable single-boot CD. First, say a few concepts to help you understand the production process.
A standard ISO9660 CD has 333,000 sectors, each sector has 2,352 bytes, and 2048 bytes are used to store data. The sector in the CD is the same concept as the cluster in the disk, that is, the smallest storage unit of the CD. In other words, if a file is only 1 byte, it also occupies one sector of 2048 bytes in the CD.
The first 16 sectors (0-15 sectors) are not used by the system. The 17th one (sector 16) is the primary volume descriptor of the CDROM. The 18th sector (sector 17) is the Boot Record Volume of the CDROM, and the identification of the bootable CD is also here.
As mentioned earlier, each sector is 2048 bytes, so the address of the 18th sector (sector 17) is 2048 * 17 = 34816.
This is a common ISO CD image made by WINISO.

CD001 is the identification of the ISO9660 CD, which must exist, otherwise the CD may not be recognized. Only this CD001 identification is necessary in this sector. Other information is generated by the ISO making software, such as the volume label, etc. Clearing them all will not affect the CD.

This is the identification of the Boot Record Volume of the bootable CD, with 4 key points.
1. It must be the 18th sector (sector 17) because there is sector 0, so the 18th sector is sector 17.
2. After CD001, change the ASCII code to EL TORITO SPECIFICATION, which is the identification of the bootable CD. The BIOS recognizes whether it is a BOOTABLE CD through this.
3. The 2 bytes after EL TORITO SPECIFICATION must be 0, not ASCII space. The ASCII space is 20 in hexadecimal.
4. The 02 at the address 34887 is to specify the LBA address of the Booting Catalog mentioned in the first picture.
Theoretically, the Booting Catalog can be placed anywhere on the CD. I have seen some similar articles before. The method they use is to first create a 2048-byte file, put it and the boot disk image into the ISO together, and then put the LBA address of this 2048-byte file at 34887 to be used as the Booting Catalog. I think this method is unnecessary. As mentioned earlier, each sector of the ISO9660 CD is 2048, and the first 16 sectors are not used by the system, so you can directly take any one of the first 16 sectors as the Booting Catalog. For this boot disk, I used sector 2 as the Bootable Catalog, so I wrote 02 in 34887. So the Booting Catalog address of this disk = 2048 * 2 = 4096.