123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- #ifndef _IPXE_ELTORITO_H
- #define _IPXE_ELTORITO_H
-
- /**
- * @file
- *
- * El Torito bootable CD-ROM specification
- *
- */
-
- FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
-
- #include <stdint.h>
- #include <ipxe/iso9660.h>
-
- /** An El Torito Boot Record Volume Descriptor (fixed portion) */
- struct eltorito_descriptor_fixed {
- /** Descriptor type */
- uint8_t type;
- /** Identifier ("CD001") */
- uint8_t id[5];
- /** Version, must be 1 */
- uint8_t version;
- /** Boot system indicator; must be "EL TORITO SPECIFICATION" */
- uint8_t system_id[32];
- } __attribute__ (( packed ));
-
- /** An El Torito Boot Record Volume Descriptor */
- struct eltorito_descriptor {
- /** Fixed portion */
- struct eltorito_descriptor_fixed fixed;
- /** Unused */
- uint8_t unused[32];
- /** Boot catalog sector */
- uint32_t sector;
- } __attribute__ (( packed ));
-
- /** El Torito Boot Record Volume Descriptor block address */
- #define ELTORITO_LBA 17
-
- /** An El Torito Boot Catalog Validation Entry */
- struct eltorito_validation_entry {
- /** Header ID; must be 1 */
- uint8_t header_id;
- /** Platform ID
- *
- * 0 = 80x86
- * 1 = PowerPC
- * 2 = Mac
- */
- uint8_t platform_id;
- /** Reserved */
- uint16_t reserved;
- /** ID string */
- uint8_t id_string[24];
- /** Checksum word */
- uint16_t checksum;
- /** Signature; must be 0xaa55 */
- uint16_t signature;
- } __attribute__ (( packed ));
-
- /** El Torito platform IDs */
- enum eltorito_platform_id {
- ELTORITO_PLATFORM_X86 = 0x00,
- ELTORITO_PLATFORM_POWERPC = 0x01,
- ELTORITO_PLATFORM_MAC = 0x02,
- };
-
- /** A bootable entry in the El Torito Boot Catalog */
- struct eltorito_boot_entry {
- /** Boot indicator
- *
- * Must be @c ELTORITO_BOOTABLE for a bootable ISO image
- */
- uint8_t indicator;
- /** Media type
- *
- */
- uint8_t media_type;
- /** Load segment */
- uint16_t load_segment;
- /** System type */
- uint8_t filesystem;
- /** Unused */
- uint8_t reserved_a;
- /** Sector count */
- uint16_t length;
- /** Starting sector */
- uint32_t start;
- /** Unused */
- uint8_t reserved_b[20];
- } __attribute__ (( packed ));
-
- /** Boot indicator for a bootable ISO image */
- #define ELTORITO_BOOTABLE 0x88
-
- /** El Torito media types */
- enum eltorito_media_type {
- /** No emulation */
- ELTORITO_NO_EMULATION = 0,
- };
-
- #endif /* _IPXE_ELTORITO_H */
|