Support for writing MBR in the system area, to make hybrid boot images.
With the specified isolinux option, a MBR is written to the system area, and this allows the image to boot from either CD/DVD or USB sticks. This is also supported on overwriteable media (note that system area is always overwritten), but it should not work on multisession media.
This commit is contained in:
48
libisofs/system_area.h
Normal file
48
libisofs/system_area.h
Normal file
@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2008 Vreixo Formoso
|
||||
*
|
||||
* This file is part of the libisofs project; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation. See COPYING file for details.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Functions for dealing with the system area, this is, the first 16 blocks
|
||||
* of the image.
|
||||
*
|
||||
* At this time, this is only used for hybrid boot images with isolinux.
|
||||
*/
|
||||
|
||||
#ifndef SYSTEM_AREA_H_
|
||||
#define SYSTEM_AREA_H_
|
||||
|
||||
#include "ecma119.h"
|
||||
|
||||
/*
|
||||
* Create a MBR for an isohybrid enabled ISOLINUX boot image.
|
||||
*
|
||||
* It is assumed that the caller has verified the readiness of the boot image
|
||||
* by checking for 0xfb 0xc0 0x78 0x70 at bytes 0x40 to 0x43 of isolinux.bin.
|
||||
*
|
||||
* @param bin_lba The predicted LBA of isolinux.bin within the emerging ISO.
|
||||
* @param img_blocks The predicted number of 2048 byte blocks in the ISO.
|
||||
* It will get rounded up to full MBs and that many blocks
|
||||
* must really be written as ISO 9660 image.
|
||||
* @param mbr A buffer of at least 512 bytes to take the result which is
|
||||
* to be written as the very beginning of the ISO.
|
||||
* @param flag unused yet, submit 0
|
||||
* @return <0 = fatal, 0 = failed , 1 = ok , 2 = ok with size warning
|
||||
*/
|
||||
int make_isohybrid_mbr(int bin_lba, int *img_blocks, char *mbr, int flag);
|
||||
|
||||
/**
|
||||
* Write the system area for the given image to the given buffer.
|
||||
*
|
||||
* @param buf
|
||||
* A buffer with at least 32 K allocated
|
||||
* @return
|
||||
* 1 if success, < 0 on error
|
||||
*/
|
||||
int iso_write_system_area(Ecma119Image *t, uint8_t *buf);
|
||||
|
||||
#endif /* SYSTEM_AREA_H_ */
|
Reference in New Issue
Block a user