From 85b45fce95f6bea5f04f9b1ce5b05bc43910f7e1 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Tue, 30 Sep 2008 10:28:46 +0000 Subject: [PATCH] Adjustments about -boot_image after testing with various media types --- libisoburn/trunk/xorriso/xorriso.1 | 36 +++++++++++++++----- libisoburn/trunk/xorriso/xorriso.c | 12 +++---- libisoburn/trunk/xorriso/xorriso_timestamp.h | 2 +- libisoburn/trunk/xorriso/xorrisoburn.c | 6 ++-- 4 files changed, 36 insertions(+), 20 deletions(-) diff --git a/libisoburn/trunk/xorriso/xorriso.1 b/libisoburn/trunk/xorriso/xorriso.1 index eb7fb968..c49a7f30 100644 --- a/libisoburn/trunk/xorriso/xorriso.1 +++ b/libisoburn/trunk/xorriso/xorriso.1 @@ -2,7 +2,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH XORRISO 1 "Sep 26, 2008" +.TH XORRISO 1 "Sep 30, 2008" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -1367,6 +1367,22 @@ bootable. Emulation -as mkisofs supports the example options out of the ISOLINUX wiki. .br The support for other boot image types is sparse. +.br + +Typically a BIOS will load an El Torito object from the first session on media +and not from the last one, which gets mounted by default. This makes no +problems with overwriteable media, because they appear to inadverted readers +as one single session. +.br +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 +session still has to bear all files which the booted system expects after +eventually mounting the ISO image. +.br +If ISOLINUX is known to be present on appendable media then it is advised +to patch it when a new session gets written. But one should not rely on the +capability to influence the bootability of the existing sessions, unless one +can assume overwriteable media. .TP \fB\-boot_image\fR "any"|"isolinux" "discard"|"keep"|"patch"|bootspec Defines the handling of an eventual El Torito object which has @@ -1378,7 +1394,7 @@ All types ("any") of El Torito boot images can be discarded or kept unaltered. The latter makes only sense if the format of the boot image is relocatable without content changes. .br -An existing boot image of type "isolinux" can be discarded, or it can be +An existing boot image of type "isolinux" can be discarded or it can be patched to match its relocation. In the latter case the resulting ISO image stays bootable if the boot image was really produced by ISOLINUX. .br @@ -1391,12 +1407,14 @@ boot image which is present on the input media. Most safe is the default: "any" "discard". .br -Regardless whether an El Torito boot image was detected or not, it is possible -to activate a set of ISOLINUX files for booting. An existing boot image gets -discarded, then. -The files have to be added to the ISO image by normal means (image loading, --map, -add, ...) and should reside either in ISO image directory /isolinux or -/boot/isolinux . +On all media types it is possible to activate a set of ISOLINUX files +for booting within the first session. In further sessions an existing boot +image can get replaced by a new one, but depending on the media type +this may have few effect at boot time. See above. +.br +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 +directory /isolinux or /boot/isolinux . In that case it suffices to use as bootspec the text "dir=/isolinux" or "dir=/boot/isolinux". E.g.: .br @@ -2637,7 +2655,7 @@ to read and execute lines from the following files: .br The files are read in the sequence given above, but none of them is required for xorriso to function properly. -.TP +.SS .B Runtime control files: .br The default setting of -check_media abort_file= is: diff --git a/libisoburn/trunk/xorriso/xorriso.c b/libisoburn/trunk/xorriso/xorriso.c index da35d744..3e9266e9 100644 --- a/libisoburn/trunk/xorriso/xorriso.c +++ b/libisoburn/trunk/xorriso/xorriso.c @@ -9955,14 +9955,11 @@ int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form, } else was_ok= 0; } else if(strcmp(formpt, "isolinux")==0) { - if(strcmp(treatpt, "patch")==0) { + if(strcmp(treatpt, "patch")==0 || + strcmp(treatpt, "keep")==0) { /* no real "keep" with ISOLINUX */ xorriso->keep_boot_image= 1; xorriso->patch_isolinux_image= 1; xorriso->boot_image_bin_path[0]= 0; - } else if(strcmp(treatpt, "keep")==0) { - xorriso->keep_boot_image= 1; - xorriso->patch_isolinux_image= 0; - xorriso->boot_image_bin_path[0]= 0; } else if(strcmp(treatpt, "discard")==0) { xorriso->keep_boot_image= 0; xorriso->patch_isolinux_image= 0; @@ -11665,7 +11662,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " Generate Joliet info additional to Rock Ridge info.", " -boot_image \"any\"|\"isolinux\" \"discard\"|\"keep\"|\"patch\"|\"dir=\"", " \"bin_path=\"|\"cat_path=\"|\"load_size=\"", -" Whether to discard or keep an exiting El-Torito boot image.", +" Whether to discard or keep an exiting El Torito boot image.", " ISOLINUX can be made bootable by dir=/ or dir=/isolinux", " or dir=/boot/isolinux or by bin_path=... and cat_path=...", " The ISOLINUX files need to be added to the ISO image by", @@ -11925,7 +11922,8 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) "", "Compatibility emulation (argument list may be ended by list delimiter --):", " -as mkisofs [-help|-version|-o|-R|-J|-V|-P|-f|-m|-exclude-list|-no-pad|", -" -M|-C|-graft-points|-path-list|pathspecs|-no-emul-boot|-b|-c]", +" -M|-C|-graft-points|-path-list|pathspecs|", +" -no-emul-boot|-b|-c|-boot-info-table|-boot-load-size]", " Perform some mkisofs gestures, understand pathspecs as mkisofs", " does. Commit happens outside emulation at usual occasions.", " -as cdrecord [-help|-v|dev=|speed=|blank=|fs=|-eject|-atip|padsize=|path|-]", diff --git a/libisoburn/trunk/xorriso/xorriso_timestamp.h b/libisoburn/trunk/xorriso/xorriso_timestamp.h index f7661d1f..d35f3f01 100644 --- a/libisoburn/trunk/xorriso/xorriso_timestamp.h +++ b/libisoburn/trunk/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2008.09.30.102243" +#define Xorriso_timestamP "2008.09.30.102753" diff --git a/libisoburn/trunk/xorriso/xorrisoburn.c b/libisoburn/trunk/xorriso/xorrisoburn.c index 2ac3f91f..47fd3a1e 100644 --- a/libisoburn/trunk/xorriso/xorrisoburn.c +++ b/libisoburn/trunk/xorriso/xorrisoburn.c @@ -643,7 +643,9 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, int flag) Xorriso_process_msg_queues(xorriso,0); isoburn_ropt_get_size_what(ropts, &size, &has_what); if(has_what & isoburn_ropt_has_el_torito) { - if(xorriso->patch_isolinux_image) + if(xorriso->boot_image_bin_path[0]) + boot_fate= "replaced by an isolinux image"; + else if(xorriso->patch_isolinux_image) boot_fate= "patched as isolinux image"; else if(xorriso->keep_boot_image) boot_fate= "kept unchanged"; @@ -867,7 +869,6 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag) ElToritoBootImage *bootimg; enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL; - ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive, "on attempt to write", 2); if(ret<=0) @@ -1094,7 +1095,6 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag) Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); {ret= 0; goto ex;} } - isoburn_igopt_get_effective_lba(sopts, &(xorriso->session_lba)); ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0);