From 67c13115b0d5c0f57bfd08acbc383ba4a6fce923 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 1 Jan 2016 17:28:46 +0000 Subject: [PATCH] New -boot_image setting mbr_force_bootable=, -as mkisofs --mbr-force-bootable --- xorriso/emulators.c | 8 ++- xorriso/iso_img.c | 71 ++++++++++++++++--- xorriso/opts_a_c.c | 13 ++++ xorriso/opts_d_h.c | 2 +- xorriso/text_io.c | 6 ++ xorriso/xorriso.1 | 11 ++- xorriso/xorriso.info | 97 ++++++++++++++------------ xorriso/xorriso.texi | 12 +++- xorriso/xorriso_private.h | 5 ++ xorriso/xorriso_timestamp.h | 2 +- xorriso/xorrisofs.1 | 11 ++- xorriso/xorrisofs.info | 134 ++++++++++++++++++++---------------- xorriso/xorrisofs.texi | 13 +++- 13 files changed, 264 insertions(+), 121 deletions(-) diff --git a/xorriso/emulators.c b/xorriso/emulators.c index 2ef65be8..91149b68 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -612,7 +612,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv, "--no_rc", "--norock", "-hfsplus", "-fat", "-chrp-boot-part", "-isohybrid-gpt-basdat", "-isohybrid-gpt-hfsplus", "-isohybrid-apm-hfsplus", "--grub2-boot-info", "-joliet-utf16", - "-appended_part_as_gpt", + "-appended_part_as_gpt", "--mbr-force-bootable", "" }; static char arg1_options[][41]= { @@ -863,6 +863,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " -G FILE, -generic-boot FILE Set generic boot image name", " --embedded-boot FILE Alias of -G", " --protective-msdos-label Patch System Area by partition table", +" --mbr-force-bootable Enforce existence of bootable flag in MBR", " -partition_offset LBA Make image mountable by first partition, too", " -partition_sec_hd NUMBER Define number of sectors per head", " -partition_hd_cyl NUMBER Define number of heads per cylinder", @@ -1859,6 +1860,7 @@ not_enough_args:; strncmp(argpt, "isolinux_mbr=", 13)==0 || strcmp(argpt, "-eltorito-alt-boot")==0 || strcmp(argpt, "--protective-msdos-label")==0 || + strcmp(argpt, "--mbr-force-bootable")==0 || strcmp(argpt, "--boot-catalog-hide")==0 || strcmp(argpt, "-isohybrid-gpt-basdat")==0 || strcmp(argpt, "-isohybrid-gpt-hfsplus")==0 || @@ -2468,6 +2470,10 @@ problem_handler_2:; (xorriso->system_area_options & ~2) | 0x4000; } else if(strcmp(argpt, "--protective-msdos-label")==0) { xorriso->system_area_options= (xorriso->system_area_options & ~2) | 1; + + } else if(strcmp(argpt, "--mbr-force-bootable") == 0) { + xorriso->system_area_options= xorriso->system_area_options | (1 << 15); + } else if(strcmp(argpt, "--boot-catalog-hide")==0) { xorriso->boot_image_cat_hidden|= 3; } else if(strcmp(argpt, "-partition_offset") == 0 || diff --git a/xorriso/iso_img.c b/xorriso/iso_img.c index 00b78c78..a17f17bd 100644 --- a/xorriso/iso_img.c +++ b/xorriso/iso_img.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2015 Thomas Schmitt, + Copyright 2007-2016 Thomas Schmitt, Provided under GPL version 2 or later. @@ -1573,6 +1573,7 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, int appended_as_gpt= 0, have_prep= 0, did_sysarea= 0, cared_for_apm= 0; int cared_for_sparc= 0, have_hfsplus= 0; int have_sysarea= 0, ptable_killer, imported_iso, have_alpha_ldr_path= 0; + int have_protective_msdos= 0; unsigned long int sa_options= 0, partno, id_tag, perms, start_cyl, num_blocks; unsigned long int part_status, part_type, start_block; char name[24], *textpt, *contentpt, *buf= NULL; @@ -1581,14 +1582,18 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, char *cat_path= ""; struct elto_img_par *et_imgs= NULL; int elto_count= 0; - uint32_t img_blocks= 0; + uint32_t img_blocks= 0, mbr_parts_end= 0; struct FindjoB *job= NULL; struct stat dir_stbuf; IsoImage *image; char *volid, *crt, *mdt, *ext, *eft, uuid[17]; + char **app_pseudo_paths= NULL; struct mbr_par { uint8_t ptype; + uint64_t start_block; + uint64_t block_count; + int appended; }; struct mbr_par *mbrpts= NULL; int mbr_count= 0; @@ -1672,6 +1677,13 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, et_imgs[et_idx].path= NULL; et_imgs[et_idx].ldsiz= -1; } + Xorriso_alloc_meM(app_pseudo_paths, char *, elto_count); + for(i= 0; i < elto_count; i++) + app_pseudo_paths[i]= NULL; + for(i= 0; i < elto_count; i++) { + Xorriso_alloc_meM(app_pseudo_paths[i], char, 80); + app_pseudo_paths[i][0]= 0; + } } if(mbr_count > 0) Xorriso_alloc_meM(mbrpts, struct mbr_par, mbr_count); @@ -1785,11 +1797,19 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, idx= num[0] - 1; et_imgs[idx].sel_crit= textpt; + } else if(strcmp(name, "System area summary:") == 0) { + if(strstr(textpt, "protective-msdos-label") != NULL) + have_protective_msdos= 1; + } else if(strcmp(name, "MBR partition :") == 0) { sscanf(contentpt, "%lu 0x%lx 0x%lx %lu %lu", &partno, &part_status, &part_type, &start_block, &num_blocks); idx= partno - 1; mbrpts[idx].ptype= part_type; + mbrpts[idx].start_block= start_block; + mbrpts[idx].block_count= num_blocks; + if(num_blocks > 0 && start_block + num_blocks > mbr_parts_end) + mbr_parts_end= start_block + num_blocks; } else if(strcmp(name, "GPT type GUID :") == 0) { idx= num[0] - 1; @@ -1921,12 +1941,17 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, } else if(strcmp(name, "MBR partition :") == 0) { sscanf(contentpt, "%lu 0x%lx 0x%lx %lu %lu", &partno, &part_status, &part_type, &start_block, &num_blocks); - if(img_blocks <= start_block && num_blocks > 0) { + if(num_blocks > 0 && part_type != 0x00 && part_type != 0xee && + (img_blocks <= start_block || + (have_protective_msdos && img_blocks == mbr_parts_end && + partno > 1))) { if(!appended_as_gpt) { sprintf(buf, "-append_partition %lu 0x%lx ", partno, part_type); Xorriso_add_intvl_adr(xorriso, buf, (uint64_t) start_block, ((uint64_t) start_block) + num_blocks - 1, "d", imported_iso); + if(partno >= 1 && (int) partno <= mbr_count) + mbrpts[partno - 1].appended= 1; } } else if(part_type == 0x41 && have_prep) { if(mkisofs) { @@ -1937,8 +1962,13 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, Xorriso_add_intvl_adr(xorriso, buf, (uint64_t) start_block, ((uint64_t) start_block) + num_blocks - 1, "d", imported_iso); + } else if((part_status & 0x80) && part_type == 0x00 && + start_block == 0 && num_blocks == 1) { + if(mkisofs) + sprintf(buf, "--mbr-force-bootable"); + else + sprintf(buf, "-boot_image any mbr_force_bootable=on"); } - } else if(strcmp(name, "MBR partition path :") == 0) { idx= num[0] - 1; if(mbrpts[idx].ptype == 0x41) { @@ -2303,14 +2333,31 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, /* >>> need way to eploit El Torito img blks : */; - if(!(flag & 1)) { - sprintf(xorriso->info_text, + /* Check whether appended partition */; + for(i= 0; i < mbr_count; i++) + if(mbrpts[i].appended && + mbrpts[i].start_block == ((uint64_t) et_imgs[idx].lba) * 4 && + (mbrpts[i].block_count == (uint64_t) et_imgs[idx].ldsiz || + et_imgs[idx].ldsiz == 0 || et_imgs[idx].ldsiz == 1)) + break; + if (i < mbr_count) { + sprintf(app_pseudo_paths[idx], + "--interval:appended_partition_%d_start_%lud_size_%lud:all::", + i + 1, + (unsigned long) mbrpts[i].start_block, + (unsigned long) mbrpts[i].block_count); + et_imgs[idx].path= app_pseudo_paths[idx]; + + } else { + if(!(flag & 1)) { + sprintf(xorriso->info_text, "Cannot enable EL Torito boot image #%d because it is not a data file in the ISO filesystem", idx + 1); - Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); - } - buf[0]= 0; + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + } + buf[0]= 0; continue; + } } Text_shellsafe(et_imgs[idx].path, buf, 1); Xorriso_record_cmd_linE @@ -2411,6 +2458,12 @@ ex: Xorriso_free_meM(apms); Xorriso_free_meM(gpts); Xorriso_free_meM(mbrpts); + if(app_pseudo_paths != NULL) { + for(i= 0; i < elto_count; i++) + if(app_pseudo_paths[i] != NULL) + Xorriso_free_meM(app_pseudo_paths[i]); + Xorriso_free_meM(app_pseudo_paths); + } Xorriso_free_meM(et_imgs); Xorriso_free_meM(lines); Xorriso_free_meM(buf); diff --git a/xorriso/opts_a_c.c b/xorriso/opts_a_c.c index 44e8ad13..f18794fd 100644 --- a/xorriso/opts_a_c.c +++ b/xorriso/opts_a_c.c @@ -1260,6 +1260,19 @@ treatment_patch:; else xorriso->system_area_options|= 0x4000; + } else if(strncmp(treatpt, "mbr_force_bootable=", 19) == 0) { + if(strcmp(treatpt + 19, "off") == 0) { + xorriso->system_area_options&= ~(1 << 15); + } else if(strcmp(treatpt + 19, "on") == 0) { + xorriso->system_area_options|= (1 << 15); + } else { + sprintf(xorriso->info_text, + "-boot_image %s mbr_force_bootable=: unknown mode : %s", + formpt, treatpt + 19); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0); + {ret= 0; goto ex;} + } + } else was_ok= 0; diff --git a/xorriso/opts_d_h.c b/xorriso/opts_d_h.c index 64411639..a7593a89 100644 --- a/xorriso/opts_d_h.c +++ b/xorriso/opts_d_h.c @@ -1823,7 +1823,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag) " |\"load_size=\"|\"boot_info_table=\"", " |\"grub2_boot_info=\"|\"grub2_mbr=\"|\"partition_offset=\"", " |\"partition_hd_cyl=\"|\"partition_sec_hd=\"", -" |\"partition_cyl_align=\"", +" |\"partition_cyl_align=\"|\"mbr_force_bootable=\"", " |\"system_area=\"|\"partition_table=on|off\"", " |\"partition_entry=\"|\"appended_part_as=\"", " |\"chrp_boot_part=on|off=\"|\"prep_boot_part=\"", diff --git a/xorriso/text_io.c b/xorriso/text_io.c index e527503a..fee301bd 100644 --- a/xorriso/text_io.c +++ b/xorriso/text_io.c @@ -3036,6 +3036,12 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) Xorriso_status_result(xorriso,filter,fp,flag&2); } + is_default= ((xorriso->system_area_options & (1 << 15)) == 0); + sprintf(line, "-boot_image any mbr_force_bootable=%s\n", + (xorriso->system_area_options & (1 << 15)) ? "on" : "off"); + if(!(is_default && no_defaults)) + Xorriso_status_result(xorriso,filter,fp,flag&2); + ret= ((xorriso->system_area_options & 0x3cfc) == 0x400); is_default= (ret == 0); sprintf(line, "-boot_image any chrp_boot_part=%s\n", diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 3b7186ac..de3edd06 100644 --- a/xorriso/xorriso.1 +++ b/xorriso/xorriso.1 @@ -9,7 +9,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 "Version 1.4.3, Dec 08, 2015" +.TH XORRISO 1 "Version 1.4.3, Dec 30, 2015" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -3403,6 +3403,15 @@ to an aligned size. .br Mode "off" disables alignment for any type. .br +\fBmbr_force_bootable=\fRmode enforces an MBR partition with +"bootable/active" flag if options like partition_table= or grub2_mbr= +indicate production of a bootable MBR. +These options normally cause the flag to be set if there is an +MBR partition of type other than 0xee or 0xef. +If no such partition exists, then no bootflag is set, unless +mbr_force_bootable= forces creation of a dummy partition +of type 0x00 which covers only the first block of the ISO image. +.br \fBmips_path=\fRiso_rr_path declares a data file in the image to be a MIPS Big Endian boot file and causes production of a MIPS Big Endian Volume Header. This is mutually exclusive with production of other boot blocks diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 2922ea0f..4cf0c88a 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -2862,6 +2862,14 @@ Examples: any type. Mode "all" is like "on" but also pads up partitions from -append_partition to an aligned size. Mode "off" disables alignment for any type. + *mbr_force_bootable=*mode enforces an MBR partition with + "bootable/active" flag if options like partition_table= or + grub2_mbr= indicate production of a bootable MBR. These options + normally cause the flag to be set if there is an MBR partition of + type other than 0xee or 0xef. If no such partition exists, then no + bootflag is set, unless mbr_force_bootable= forces creation of a + dummy partition of type 0x00 which covers only the first block of + the ISO image. *mips_path=*iso_rr_path declares a data file in the image to be a MIPS Big Endian boot file and causes production of a MIPS Big Endian Volume Header. This is mutually exclusive with production @@ -5048,7 +5056,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -alter_date sets timestamps in ISO image: Manip. (line 136) * -alter_date_r sets timestamps in ISO image: Manip. (line 168) * -append_partition adds arbitrary file after image end: Bootable. - (line 354) + (line 362) * -application_id sets application id: SetWrite. (line 191) * -application_use sets application use field: SetWrite. (line 250) * -as emulates mkisofs or cdrecord: Emulation. (line 13) @@ -5288,10 +5296,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * ACL, show in ISO image, -getfacl: Navigate. (line 60) * ACL, show in ISO image, -getfacl_r: Navigate. (line 66) * ACL, _definition: Extras. (line 50) -* APM block size: Bootable. (line 345) +* APM block size: Bootable. (line 353) * APM, _definition: Extras. (line 42) * Appendable media, _definition: Media. (line 38) -* Appended Filesystem Image, -append_partition: Bootable. (line 354) +* Appended Filesystem Image, -append_partition: Bootable. (line 362) * Appended partition, in MBR or GPT: Bootable. (line 233) * Automatic execution order, of arguments, -x: ArgSort. (line 16) * Backslash Interpretation, _definition: Processing. (line 53) @@ -5317,7 +5325,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Cylinder alignment, _definition: Bootable. (line 282) * Cylinder size, _definition: Bootable. (line 267) * Damaged track and session, close, -close_damaged: Writing. (line 164) -* DEC Alpha SRM boot sector, production: Bootable. (line 331) +* DEC Alpha SRM boot sector, production: Bootable. (line 339) * Delete, from ISO image, -rm: Manip. (line 20) * Delete, from ISO image, -rm_r: Manip. (line 26) * Delete, ISO directory, -rmdir: Manip. (line 29) @@ -5377,10 +5385,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Group, in ISO image, -chgrp_r: Manip. (line 53) * Growing, _definition: Methods. (line 20) * Hard links, control handling, -hardlinks: Loading. (line 134) -* HFS+ allocation block size: Bootable. (line 342) -* HFS+ serial number: Bootable. (line 339) +* HFS+ allocation block size: Bootable. (line 350) +* HFS+ serial number: Bootable. (line 347) * hidden, set in ISO image, -hide: Manip. (line 171) -* HP-PA boot sector, production: Bootable. (line 314) +* HP-PA boot sector, production: Bootable. (line 322) * Image reading, cache size, -data_cache_size: Loading. (line 332) * Image, demand volume ID, -assert_volid: Loading. (line 111) * Image, discard pending changes, -rollback: Writing. (line 9) @@ -5433,6 +5441,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * LBA, _definition: Drives. (line 17) * List delimiter, _definition: Processing. (line 9) * Local Character Set, _definition: Charset. (line 11) +* MBR bootable/active flag, enforce: Bootable. (line 293) * MBR, set, -boot_image system_area=: Bootable. (line 184) * MBR, _definition: Extras. (line 27) * MD5, control handling, -md5: Loading. (line 182) @@ -5440,7 +5449,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Media, format, -format: Writing. (line 87) * Media, list formats, -list_formats: Writing. (line 129) * Media, list write speeds, -list_speeds: Writing. (line 140) -* MIPS boot file, activation: Bootable. (line 293) +* MIPS boot file, activation: Bootable. (line 301) * mkisofs, Emulation: Emulation. (line 17) * Modifying, _definition: Methods. (line 28) * Multi-session media, _definition: Media. (line 7) @@ -5535,8 +5544,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Session, select as input, -load: Loading. (line 33) * Session, _definition: Model. (line 6) * Sorting order, for -x, -list_arg_sorting: ArgSort. (line 26) -* SUN Disk Label, production: Bootable. (line 304) -* SUN SPARC boot images, activation: Bootable. (line 377) +* SUN Disk Label, production: Bootable. (line 312) +* SUN SPARC boot images, activation: Bootable. (line 385) * Symbolic link, create, -lns: Insert. (line 166) * System area, _definition: Bootable. (line 184) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 278) @@ -5605,39 +5614,39 @@ Node: Filter99272 Node: Writing103894 Node: SetWrite114049 Node: Bootable136994 -Node: Jigdo159522 -Node: Charset163781 -Node: Exception167108 -Node: DialogCtl173237 -Node: Inquiry175839 -Node: Navigate184289 -Node: Verify192584 -Node: Restore202461 -Node: Emulation211074 -Node: Scripting221484 -Node: Frontend229266 -Node: Examples238901 -Node: ExDevices240079 -Node: ExCreate240740 -Node: ExDialog242040 -Node: ExGrowing243311 -Node: ExModifying244120 -Node: ExBootable244630 -Node: ExCharset245185 -Node: ExPseudo246081 -Node: ExCdrecord247008 -Node: ExMkisofs247328 -Node: ExGrowisofs248685 -Node: ExException249839 -Node: ExTime250297 -Node: ExIncBackup250755 -Node: ExRestore254781 -Node: ExRecovery255727 -Node: Files256299 -Node: Seealso257633 -Node: Bugreport258348 -Node: Legal258939 -Node: CommandIdx259951 -Node: ConceptIdx276993 +Node: Jigdo160022 +Node: Charset164281 +Node: Exception167608 +Node: DialogCtl173737 +Node: Inquiry176339 +Node: Navigate184789 +Node: Verify193084 +Node: Restore202961 +Node: Emulation211574 +Node: Scripting221984 +Node: Frontend229766 +Node: Examples239401 +Node: ExDevices240579 +Node: ExCreate241240 +Node: ExDialog242540 +Node: ExGrowing243811 +Node: ExModifying244620 +Node: ExBootable245130 +Node: ExCharset245685 +Node: ExPseudo246581 +Node: ExCdrecord247508 +Node: ExMkisofs247828 +Node: ExGrowisofs249185 +Node: ExException250339 +Node: ExTime250797 +Node: ExIncBackup251255 +Node: ExRestore255281 +Node: ExRecovery256227 +Node: Files256799 +Node: Seealso258133 +Node: Bugreport258848 +Node: Legal259439 +Node: CommandIdx260451 +Node: ConceptIdx277493  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index c9e4ea66..152cd75e 100644 --- a/xorriso/xorriso.texi +++ b/xorriso/xorriso.texi @@ -50,7 +50,7 @@ @c man .\" First parameter, NAME, should be all caps @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" other parameters are allowed: see man(7), man(1) -@c man .TH XORRISO 1 "Version 1.4.3, Dec 08, 2015" +@c man .TH XORRISO 1 "Version 1.4.3, Dec 30, 2015" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -3946,6 +3946,16 @@ to an aligned size. @* Mode "off" disables alignment for any type. @* +@cindex MBR bootable/active flag, enforce +@strong{mbr_force_bootable=}mode enforces an MBR partition with +"bootable/active" flag if options like partition_table= or grub2_mbr= +indicate production of a bootable MBR. +These options normally cause the flag to be set if there is an +MBR partition of type other than 0xee or 0xef. +If no such partition exists, then no bootflag is set, unless +mbr_force_bootable= forces creation of a dummy partition +of type 0x00 which covers only the first block of the ISO image. +@* @cindex MIPS boot file, activation @strong{mips_path=}iso_rr_path declares a data file in the image to be a MIPS Big Endian boot file and causes production of a MIPS Big Endian Volume diff --git a/xorriso/xorriso_private.h b/xorriso/xorriso_private.h index 3b384990..bfb6d1c7 100644 --- a/xorriso/xorriso_private.h +++ b/xorriso/xorriso_private.h @@ -451,6 +451,11 @@ struct XorrisO { /* the global context of xorriso */ Little-endian 8-byte. Should be combined with options bit0. + bit15= Only with MBR: + Enforce MBR "bootable/active" + flag. In worst case by dummy + partition of type 0x00 which + occupies block 0. */ int patch_system_area; /* Bits as of system_area_options. to be applied to the loaded system diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index c6568b6d..2d59da51 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2016.01.01.172059" +#define Xorriso_timestamP "2016.01.01.172817" diff --git a/xorriso/xorrisofs.1 b/xorriso/xorrisofs.1 index e56dd377..14c197f2 100644 --- a/xorriso/xorrisofs.1 +++ b/xorriso/xorrisofs.1 @@ -9,7 +9,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 XORRISOFS 1 "Version 1.4.3, Nov 29, 2015" +.TH XORRISOFS 1 "Version 1.4.3, Dec 30, 2015" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -1157,6 +1157,15 @@ overwritten by 32 bytes of APM header mock\-up. Patch the System Area by a simple PC\-DOS partition table where partition 1 claims the range of the ISO image but leaves the first block unclaimed. .TP +\fB--mbr-force-bootable\fR +Enforce an MBR partition with "bootable/active" flag if options like +\-\-protective\-msdos\-label or \-\-grub2\-mbr are given. +These options normally cause the flag to be set if there is an +MBR partition of type other than 0xee or 0xef. +If no such partition exists, then no bootflag is set, unless +\-\-mbr\-force\-bootable forces creation of a dummy partition +of type 0x00 which covers only the first block of the ISO image. +.TP \fB\-partition_offset\fR 2kb_block_adr Cause a partition table with a single partition that begins at the given block address. This is counted in 2048 byte diff --git a/xorriso/xorrisofs.info b/xorriso/xorrisofs.info index e1cf7a94..ba0b4b31 100644 --- a/xorriso/xorrisofs.info +++ b/xorriso/xorrisofs.info @@ -1019,6 +1019,14 @@ Examples: Patch the System Area by a simple PC-DOS partition table where partition 1 claims the range of the ISO image but leaves the first block unclaimed. +--mbr-force-bootable + Enforce an MBR partition with "bootable/active" flag if options + like --protective-msdos-label or --grub2-mbr are given. These + options normally cause the flag to be set if there is an MBR + partition of type other than 0xee or 0xef. If no such partition + exists, then no bootflag is set, unless --mbr-force-bootable forces + creation of a dummy partition of type 0x00 which covers only the + first block of the ISO image. -partition_offset 2kb_block_adr Cause a partition table with a single partition that begins at the given block address. This is counted in 2048 byte blocks, not in @@ -1806,8 +1814,10 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * --for_backup Enable backup fidelity: SetExtras. (line 73) * --grub2-boot-info Patch El Torito boot image: Bootable. (line 89) * --grub2-mbr Install modern GRUB2 MBR: SystemArea. (line 77) -* --grub2-sparc-core SUN SPARC core file: SystemArea. (line 237) +* --grub2-sparc-core SUN SPARC core file: SystemArea. (line 245) * --hardlinks Recording of hardlink relations: SetExtras. (line 97) +* --mbr-force-bootable Enforce MBR bootable/active flag: SystemArea. + (line 120) * --md5 Recording of MD5 checksums: SetExtras. (line 89) * --modification-date set ISO image timestamps: ImageId. (line 70) * --no-emul-toc no table-of-content emulation: SetProduct. (line 41) @@ -1836,14 +1846,14 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -A set Application Id: ImageId. (line 34) * -abstract set Abstract File path: ImageId. (line 57) * -allow-lowercase lowercase in ISO file names: SetCompl. (line 42) -* -alpha-boot DEC Alpha SRM bootloader: SystemArea. (line 260) +* -alpha-boot DEC Alpha SRM bootloader: SystemArea. (line 268) * -appended_part_as_gpt Appended partitions in GPT: SystemArea. - (line 179) + (line 187) * -append_partition Append MBR or GPT partition after image: SystemArea. - (line 159) + (line 167) * -appid set Application Id: ImageId. (line 41) * -b El Torito PC-BIOS boot image: Bootable. (line 32) -* -B SUN SPARC boot images: SystemArea. (line 222) +* -B SUN SPARC boot images: SystemArea. (line 230) * -biblio set Biblio File path: ImageId. (line 62) * -boot-info-table Patch El Torito boot image: Bootable. (line 84) * -boot-load-size El Torito boot image load size: Bootable. (line 57) @@ -1854,8 +1864,8 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -checksum_algorithm_iso choose .jigdo checksums: Jigdo. (line 72) * -checksum_algorithm_template choose .template checksums: Jigdo. (line 78) -* -chrp-boot CHRP partition: SystemArea. (line 204) -* -chrp-boot-part CHRP partition: SystemArea. (line 195) +* -chrp-boot CHRP partition: SystemArea. (line 212) +* -chrp-boot-part CHRP partition: SystemArea. (line 203) * -copyright set Copyright File path: ImageId. (line 66) * -D allow deep directory hierachies: SetExtras. (line 41) * -d omit trailing dot in ISO file names: SetCompl. (line 50) @@ -1866,7 +1876,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -disallow_dir_id_ext enforce ISO level 1 directory names: SetCompl. (line 23) * -e El Torito EFI boot image: Bootable. (line 47) -* -efi-boot-part EFI boot partition: SystemArea. (line 185) +* -efi-boot-part EFI boot partition: SystemArea. (line 193) * -eltorito-alt-boot begin next boot catalog entry: Bootable. (line 41) * -eltorito-boot El Torito PC-BIOS boot image: Bootable. (line 39) * -eltorito-catalog El Torito boot catalog name: Bootable. (line 99) @@ -1910,12 +1920,12 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 15) * -hide-rr-moved set deep directory relocation target: SetExtras. (line 71) -* -hppa-bootloader HP-PA bootloader file: SystemArea. (line 249) -* -hppa-cmdline HP-PA PALO command line: SystemArea. (line 243) -* -hppa-hdrversion HP-PA PALO header version: SystemArea. (line 257) -* -hppa-kernel_32 HP-PA kernel_32 file: SystemArea. (line 251) -* -hppa-kernel_64 HP-PA kernel_64 file: SystemArea. (line 253) -* -hppa-ramdisk HP-PA ramdisk file: SystemArea. (line 255) +* -hppa-bootloader HP-PA bootloader file: SystemArea. (line 257) +* -hppa-cmdline HP-PA PALO command line: SystemArea. (line 251) +* -hppa-hdrversion HP-PA PALO header version: SystemArea. (line 265) +* -hppa-kernel_32 HP-PA kernel_32 file: SystemArea. (line 259) +* -hppa-kernel_64 HP-PA kernel_64 file: SystemArea. (line 261) +* -hppa-ramdisk HP-PA ramdisk file: SystemArea. (line 263) * -input-charset set character set of disk file names: Charset. (line 17) * -iso-level define ISO 9660 limitations: SetCompl. (line 7) @@ -1944,8 +1954,8 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -max-iso9660-filenames allow 37 characters in ISO file names: SetCompl. (line 61) * -md5-list set path of readable .md5: Jigdo. (line 67) -* -mips-boot MIPS Big Endian boot image: SystemArea. (line 211) -* -mipsel-boot MIPS Little Endian boot image: SystemArea. (line 217) +* -mips-boot MIPS Big Endian boot image: SystemArea. (line 219) +* -mipsel-boot MIPS Little Endian boot image: SystemArea. (line 225) * -N omit version number in ISO file names: SetCompl. (line 64) * -no-emul-boot El Torito boot image emulation: Bootable. (line 66) * -no-pad do not add zeros to ISO tree: SetProduct. (line 93) @@ -1961,13 +1971,13 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -p set Preparer Id: ImageId. (line 47) * -P set Publisher Id: ImageId. (line 28) * -pad add 300 KiB of zeros to ISO tree: SetProduct. (line 86) -* -partition_cyl_align Image size alignment: SystemArea. (line 148) -* -partition_hd_cyl MBR heads per cylinder: SystemArea. (line 131) +* -partition_cyl_align Image size alignment: SystemArea. (line 156) +* -partition_hd_cyl MBR heads per cylinder: SystemArea. (line 139) * -partition_offset Make mountable by partition 1: SystemArea. - (line 120) -* -partition_sec_hd MBR sectors per head: SystemArea. (line 134) + (line 128) +* -partition_sec_hd MBR sectors per head: SystemArea. (line 142) * -path-list read pathspecs from disk file: SetInsert. (line 8) -* -prep-boot-part PReP partition: SystemArea. (line 206) +* -prep-boot-part PReP partition: SystemArea. (line 214) * -preparer set Preparer Id: ImageId. (line 55) * -prev-session set path for loading existing ISO image: Loading. (line 21) @@ -1984,8 +1994,8 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -root redirect ISO root directory: SetInsert. (line 55) * -rr_reloc_dir set deep directory relocation target: SetExtras. (line 55) -* -sparc-boot SUN SPARC boot images: SystemArea. (line 233) -* -sparc-label SUN Disk Label text: SystemArea. (line 235) +* -sparc-boot SUN SPARC boot images: SystemArea. (line 241) +* -sparc-label SUN Disk Label text: SystemArea. (line 243) * -sysid set System Id: ImageId. (line 43) * -transparent-compression enable recognition of zisofs files: SetInsert. (line 53) @@ -2035,29 +2045,31 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 89) * Bootability, boot image patching, -boot-info-table: Bootable. (line 84) -* Bootability, control, --grub2-sparc-core: SystemArea. (line 237) +* Bootability, bootable MBR partition, --mbr-force-bootable: SystemArea. + (line 120) +* Bootability, control, --grub2-sparc-core: SystemArea. (line 245) * Bootability, control, --efi-boot: Bootable. (line 53) -* Bootability, control, -alpha-boot: SystemArea. (line 260) +* Bootability, control, -alpha-boot: SystemArea. (line 268) * Bootability, control, -b, -eltorito-boot: Bootable. (line 32) -* Bootability, control, -B, -sparc-boot: SystemArea. (line 222) +* Bootability, control, -B, -sparc-boot: SystemArea. (line 230) * Bootability, control, -e: Bootable. (line 47) -* Bootability, control, -hppa-bootloader: SystemArea. (line 249) -* Bootability, control, -hppa-cmdline: SystemArea. (line 243) -* Bootability, control, -hppa-hdrversion: SystemArea. (line 257) -* Bootability, control, -hppa-kernel_32: SystemArea. (line 251) -* Bootability, control, -hppa-kernel_64: SystemArea. (line 253) -* Bootability, control, -hppa-ramdisk: SystemArea. (line 255) -* Bootability, control, -mips-boot: SystemArea. (line 211) -* Bootability, control, -mipsel-boot: SystemArea. (line 217) +* Bootability, control, -hppa-bootloader: SystemArea. (line 257) +* Bootability, control, -hppa-cmdline: SystemArea. (line 251) +* Bootability, control, -hppa-hdrversion: SystemArea. (line 265) +* Bootability, control, -hppa-kernel_32: SystemArea. (line 259) +* Bootability, control, -hppa-kernel_64: SystemArea. (line 261) +* Bootability, control, -hppa-ramdisk: SystemArea. (line 263) +* Bootability, control, -mips-boot: SystemArea. (line 219) +* Bootability, control, -mipsel-boot: SystemArea. (line 225) * Bootability, El Torito section id string, -eltorito-id: Bootable. (line 73) * Bootability, El Torito selection criteria, -eltorito-selcrit: Bootable. (line 80) * Bootability, fill System Area e.g. by MBR, -G, --embedded-boot, -generic-boot: SystemArea. (line 64) -* Bootability, for CHRP, -chrp-boot-part: SystemArea. (line 195) -* Bootability, for EFI, -efi-boot-part: SystemArea. (line 185) -* Bootability, for PReP, -prep-boot-part: SystemArea. (line 206) +* Bootability, for CHRP, -chrp-boot-part: SystemArea. (line 203) +* Bootability, for EFI, -efi-boot-part: SystemArea. (line 193) +* Bootability, for PReP, -prep-boot-part: SystemArea. (line 214) * Bootability, install ISOLINUX isohybrid MBR, -isohybrid-mbr: SystemArea. (line 83) * Bootability, install modern GRUB2 MBR, --grub2-mbr: SystemArea. @@ -2073,7 +2085,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 66) * Bootability, patch System Area partition table, --protective-msdos-label: SystemArea. (line 116) -* Bootability, SUN Disk Label text, -sparc-label: SystemArea. (line 235) +* Bootability, SUN Disk Label text, -sparc-label: SystemArea. (line 243) * Bugs, reporting: Bugreport. (line 6) * Character Set, for disk file names, -input-charset: Charset. (line 17) @@ -2097,7 +2109,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * File names, curb length, -file_name_limit: SetExtras. (line 30) * Forced output, control, --stdio_sync: SetProduct. (line 23) * GPT, mark appended partitions, -appended_part_as_gpt: SystemArea. - (line 179) + (line 187) * GPT, _definition: SystemArea. (line 13) * HFS+, enables production: SetExtras. (line 130) * HFS+, issue blessing ppc_bootdir, -hfs-bless: SetExtras. (line 181) @@ -2114,7 +2126,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Hiding, from ISO and Rock Ridge, -hide-list: SetHide. (line 15) * Hiding, from Joliet, -hide-joliet: SetHide. (line 18) * Hiding, from Joliet, -hide-joliet-list: SetHide. (line 22) -* Image size, alignment, -partition_cyl_align: SystemArea. (line 148) +* Image size, alignment, -partition_cyl_align: SystemArea. (line 156) * Incremental insertion, disable disk ino, --old-root-no-ino: SetInsert. (line 73) * Incremental insertion, disable MD5, --old-root-no-md5: SetInsert. @@ -2168,16 +2180,16 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Joliet, _definition: Standards. (line 21) * Links, follow on disk, -f, -follow-links: SetInsert. (line 22) * Links, record and load hard links, --hardlinks: SetExtras. (line 97) -* MBR, GPT, append partition, -append_partition: SystemArea. (line 159) -* MBR, sectors per head, -partition_sec_hd: SystemArea. (line 131) -* MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 134) +* MBR, GPT, append partition, -append_partition: SystemArea. (line 167) +* MBR, sectors per head, -partition_sec_hd: SystemArea. (line 139) +* MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 142) * MBR, _definition: SystemArea. (line 9) * MD5, record and load, --md5: SetExtras. (line 89) * Message output, increase frequency, -gui: Miscellaneous. (line 29) * Message output, redirect stderr, -log-file: Miscellaneous. (line 33) * Message output, suppress, -quiet: Miscellaneous. (line 25) * Mountability, by non-trivial partition 1, -partition_offset: SystemArea. - (line 120) + (line 128) * Options, list, -help: Miscellaneous. (line 21) * Output file, set address, -o, -output: SetProduct. (line 8) * Padding, 300 KiB, -pad: SetProduct. (line 86) @@ -2235,22 +2247,22 @@ Node: SetHide31292 Node: ImageId32596 Node: Bootable36767 Node: SystemArea41935 -Node: Charset56515 -Node: Jigdo57540 -Node: Miscellaneous61817 -Node: Examples63462 -Node: ExSimple63956 -Node: ExGraft64439 -Node: ExMkisofs65739 -Node: ExGrowisofs67005 -Node: ExIncBackup68195 -Node: ExIncBckAcc71356 -Node: ExBootable73045 -Node: Files77227 -Node: Seealso78322 -Node: Bugreport78971 -Node: Legal79562 -Node: CommandIdx80459 -Node: ConceptIdx95327 +Node: Charset56987 +Node: Jigdo58012 +Node: Miscellaneous62289 +Node: Examples63934 +Node: ExSimple64428 +Node: ExGraft64911 +Node: ExMkisofs66211 +Node: ExGrowisofs67477 +Node: ExIncBackup68667 +Node: ExIncBckAcc71828 +Node: ExBootable73517 +Node: Files77699 +Node: Seealso78794 +Node: Bugreport79443 +Node: Legal80034 +Node: CommandIdx80931 +Node: ConceptIdx95941  End Tag Table diff --git a/xorriso/xorrisofs.texi b/xorriso/xorrisofs.texi index ab7bcb21..23a3aa37 100644 --- a/xorriso/xorrisofs.texi +++ b/xorriso/xorrisofs.texi @@ -50,7 +50,7 @@ @c man .\" First parameter, NAME, should be all caps @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" other parameters are allowed: see man(7), man(1) -@c man .TH XORRISOFS 1 "Version 1.4.3, Nov 29, 2015" +@c man .TH XORRISOFS 1 "Version 1.4.3, Dec 30, 2015" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -1551,6 +1551,17 @@ overwritten by 32 bytes of APM header mock-up. Patch the System Area by a simple PC-DOS partition table where partition 1 claims the range of the ISO image but leaves the first block unclaimed. @c man .TP +@item @minus{}@minus{}mbr-force-bootable +@kindex @minus{}@minus{}mbr-force-bootable Enforce MBR bootable/active flag +@cindex Bootability, bootable MBR partition, @minus{}@minus{}mbr-force-bootable +Enforce an MBR partition with "bootable/active" flag if options like +@minus{}@minus{}protective-msdos-label or @minus{}@minus{}grub2-mbr are given. +These options normally cause the flag to be set if there is an +MBR partition of type other than 0xee or 0xef. +If no such partition exists, then no bootflag is set, unless +@minus{}@minus{}mbr-force-bootable forces creation of a dummy partition +of type 0x00 which covers only the first block of the ISO image. +@c man .TP @item -partition_offset 2kb_block_adr @kindex -partition_offset Make mountable by partition 1 @cindex Mountability, by non-trivial partition 1, -partition_offset