Small adjustments about -boot_image

This commit is contained in:
Thomas Schmitt 2008-09-30 17:50:14 +00:00
parent 7e03f24050
commit 1b3480301a
3 changed files with 15 additions and 44 deletions

View File

@ -1369,18 +1369,18 @@ ISOLINUX wiki.
The support for other boot image types is sparse. The support for other boot image types is sparse.
.br .br
Typically a BIOS will load an El Torito object from the first session on media Contrary to published specifications many BIOSes will load an El Torito
and not from the last one, which gets mounted by default. This makes no object from the first session on media and not from the last one, which
problems with overwriteable media, because they appear to inadverted readers gets mounted by default. This makes no problems with overwriteable media,
as one single session. because they appear to inadverted readers as one single session.
.br .br
With multi-session media CD-R[W], DVD-R[W], DVD+R, this implies that the whole With multi-session media CD-R[W], DVD-R[W], DVD+R, this implies that the whole
bootable system has to reside already in the first session and that the last bootable system has to reside already in the first session and that the last
session still has to bear all files which the booted system expects after session still has to bear all files which the booted system expects after
eventually mounting the ISO image. eventually mounting the ISO image.
.br .br
If ISOLINUX is known to be present on appendable media then it is advised If ISOLINUX is known to be present on media then it is advised to patch it
to patch it when a new session gets written. But one should not rely on the when a follow-up session gets written. But one should not rely on the
capability to influence the bootability of the existing sessions, unless one capability to influence the bootability of the existing sessions, unless one
can assume overwriteable media. can assume overwriteable media.
.TP .TP
@ -1414,7 +1414,7 @@ this may have few effect at boot time. See above.
.br .br
The ISOLINUX files have to be added to the ISO image by normal means The ISOLINUX files have to be added to the ISO image by normal means
(image loading, -map, -add, ...) and should reside either in ISO image (image loading, -map, -add, ...) and should reside either in ISO image
directory /isolinux or /boot/isolinux . directory /isolinux or in /boot/isolinux .
In that case it suffices to use as bootspec the text "dir=/isolinux" or In that case it suffices to use as bootspec the text "dir=/isolinux" or
"dir=/boot/isolinux". E.g.: "dir=/boot/isolinux". E.g.:
.br .br

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.09.30.102753" #define Xorriso_timestamP "2008.09.30.174925"

View File

@ -952,6 +952,13 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
strcpy(cpt, "boot.cat"); strcpy(cpt, "boot.cat");
} }
sprintf(xorriso->info_text, "Activating alleged isolinux boot image %s",
Text_shellsafe(xorriso->boot_image_bin_path, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
sprintf(xorriso->info_text, "Creating El Torito boot catalog file %s",
Text_shellsafe(xorriso->boot_image_cat_path, sfe, 0));
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "NOTE", 0);
ret= Xorriso_node_from_path(xorriso, image, xorriso->boot_image_bin_path, ret= Xorriso_node_from_path(xorriso, image, xorriso->boot_image_bin_path,
&node, 1); &node, 1);
if(ret <= 0) { if(ret <= 0) {
@ -6766,48 +6773,12 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
ret= 0; goto ex; ret= 0; goto ex;
} }
#ifndef NIX
if(flag & 1) { if(flag & 1) {
ret= Xorriso_update_iso_lba0(xorriso, nwa, isosize, head_buffer, NULL, ret= Xorriso_update_iso_lba0(xorriso, nwa, isosize, head_buffer, NULL,
flag & 2); flag & 2);
if(ret <= 0) if(ret <= 0)
goto ex; goto ex;
} }
#else
/* Update ISO header at lba 0 */
if((flag&1) && nwa >= 32) {
if(!do_isosize) {
/* head_buffer was not filled yet. Read it from output media. */
ret= isoburn_read_iso_head(drive, nwa, &isosize, head_buffer, 2);
if(ret<=0) {
Xorriso_process_msg_queues(xorriso,0);
sprintf(xorriso->info_text,
"Cannot read freshly written ISO image head");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
}
/* patch ISO header */
full_size= nwa + isosize;
headpt= head_buffer + 32*1024;
for(i=0;i<4;i++)
headpt[87-i]= headpt[80+i]= (full_size >> (8*i)) & 0xff;
ret= burn_random_access_write(drive, (off_t) 0, head_buffer,
(off_t) (64*1024), 1);
if(ret<=0) {
Xorriso_process_msg_queues(xorriso,0);
sprintf(xorriso->info_text,
"Cannot write new ISO image head to LBA 0");
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
ret= 0; goto ex;
}
}
#endif /* NIX */
sprintf(xorriso->info_text, "Writing to %s completed sucessfully.\n\n", sprintf(xorriso->info_text, "Writing to %s completed sucessfully.\n\n",
Text_shellsafe(xorriso->outdev,sfe,0)); Text_shellsafe(xorriso->outdev,sfe,0));
Xorriso_info(xorriso, 0); Xorriso_info(xorriso, 0);