From 8ff3ed7b6bdb7029be820f9e51dbc8ddd5087119 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Fri, 4 Apr 2014 14:21:19 +0000 Subject: [PATCH] Bug fix: -boot_image grub grub2_mbr= did not work (but -as mkisofs --grub2-mbr did work) --- xorriso/opts_a_c.c | 22 +++----- xorriso/text_io.c | 3 ++ xorriso/xorriso.1 | 9 ++-- xorriso/xorriso.info | 104 ++++++++++++++++++------------------ xorriso/xorriso.texi | 9 ++-- xorriso/xorriso_timestamp.h | 2 +- 6 files changed, 76 insertions(+), 73 deletions(-) diff --git a/xorriso/opts_a_c.c b/xorriso/opts_a_c.c index 35b526a5..2b23f1ad 100644 --- a/xorriso/opts_a_c.c +++ b/xorriso/opts_a_c.c @@ -968,6 +968,7 @@ treatment_patch:; ret= Xorriso_set_system_area_path(xorriso, treatpt + 12, 0); if(ret <= 0) goto ex; + xorriso->system_area_options&= ~0x4000; } else if(strncmp(treatpt, "partition_table=", 16)==0) { if(strcmp(treatpt + 16, "off") == 0) { @@ -1175,24 +1176,15 @@ treatment_patch:; #endif /* ! Xorriso_with_isohybriD */ - } else if(strncmp(treatpt, "grub2_mbr=", 9) == 0 && - strcmp(formpt, "grub")==0) { - - if(strcmp(treatpt + 9, "off") == 0) + } else if(strncmp(treatpt, "grub2_mbr=", 10) == 0) { + ret= Xorriso_set_system_area_path(xorriso, treatpt + 10, 0); + if(ret <= 0) + goto ex; + if(treatpt [10] == 0) xorriso->system_area_options&= ~0x4000; - else if(strcmp(treatpt + 9, "on") == 0) + else xorriso->system_area_options= (xorriso->system_area_options & ~2) | 0x4000; - else { - sprintf(xorriso->info_text, - "Unrecognized keyword with -boot_image %s %s", - form, treatment); - Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); - sprintf(xorriso->info_text, - "Allowed with grub2_mbr= are: off , on"); - Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0); - {ret= 0; goto ex;} - } } else was_ok= 0; diff --git a/xorriso/text_io.c b/xorriso/text_io.c index 7728ce9e..5eed360f 100644 --- a/xorriso/text_io.c +++ b/xorriso/text_io.c @@ -2434,6 +2434,9 @@ int Xorriso_boot_status_sysarea(struct XorrisO *xorriso, char *filter, spec= "grub2_mbr="; } else if(xorriso->system_area_options & 2) { form= "isolinux"; + } if(xorriso->system_area_options & (1 << 14)) { + form= "grub"; + spec= "grub2_mbr="; } sprintf(line, "-boot_image %s %s", form, spec); Text_shellsafe(xorriso->system_area_disk_path, line, 1); diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index a5181c2d..cbae40da 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.3.7, Mar 04, 2014" +.TH XORRISO 1 "Version 1.3.7, Apr 04, 2014" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -3042,6 +3042,9 @@ patching for modern GRUB MBRs. The content start address of the first boot image is converted to a count of 512 byte blocks, and an offset of 4 is added. The result is written as 64 bit little\-endian number to byte address 0x1b0. .br +This feature can be revoked either by grub2_mbr= with empty disk path, +or by submitting a disk_path via system_area=. +.br \fBpartition_table=on\fR causes a simple partition table to be written into bytes 446 to 511 of the System Area. .br @@ -3068,11 +3071,11 @@ Special "system_area=/dev/zero" causes 32k of NUL\-bytes. Use this to discard an MBR which was loaded with the ISO image. .br \fBchrp_boot_part=on\fR causes a single partition in MBR which covers -the whole ISO image and has type 0x41. This is not compatible with any +the whole ISO image and has type 0x96. This is not compatible with any other feature that produces MBR partition entries. It makes GPT unrecognizable. .br \fBprep_boot_part=\fR inserts the content of a data file into the image and -marks it by an MBR partition of type 0x96. The parts of the ISO image before +marks it by an MBR partition of type 0x41. The parts of the ISO image before and after this partition will be covered by further MBR partitions. The data file is supposed to contain ELF executable code. .br diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index fc9ba072..d8e1ce58 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -2670,6 +2670,8 @@ filesystem and announced by an MBR partition table entry. first boot image is converted to a count of 512 byte blocks, and an offset of 4 is added. The result is written as 64 bit little-endian number to byte address 0x1b0. + This feature can be revoked either by grub2_mbr= with empty disk + path, or by submitting a disk_path via system_area=. *partition_table=on* causes a simple partition table to be written into bytes 446 to 511 of the System Area. With type "isolinux" it shows a partition that begins at byte 0 @@ -2691,11 +2693,11 @@ filesystem and announced by an MBR partition table entry. Special "system_area=/dev/zero" causes 32k of NUL-bytes. Use this to discard an MBR which was loaded with the ISO image. *chrp_boot_part=on* causes a single partition in MBR which covers - the whole ISO image and has type 0x41. This is not compatible with + the whole ISO image and has type 0x96. This is not compatible with any other feature that produces MBR partition entries. It makes GPT unrecognizable. *prep_boot_part=* inserts the content of a data file into the - image and marks it by an MBR partition of type 0x96. The parts of + image and marks it by an MBR partition of type 0x41. The parts of the ISO image before and after this partition will be covered by further MBR partitions. The data file is supposed to contain ELF executable code. @@ -4903,7 +4905,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -alter_date sets timestamps in ISO image: Manip. (line 154) * -alter_date_r sets timestamps in ISO image: Manip. (line 187) * -append_partition adds arbitrary file after image end: Bootable. - (line 248) + (line 250) * -application_id sets application id: SetWrite. (line 196) * -application_use sets application use field: SetWrite. (line 262) * -as emulates mkisofs or cdrecord: Emulation. (line 13) @@ -5138,10 +5140,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * ACL, set in ISO image, -setfacl_r: Manip. (line 105) * ACL, show in ISO image, -getfacl: Navigate. (line 70) * ACL, show in ISO image, -getfacl_r: Navigate. (line 77) -* APM block size: Bootable. (line 239) +* APM block size: Bootable. (line 241) * APM, _definition: Extras. (line 41) * Appendable media, _definition: Media. (line 38) -* Appended Filesystem Image, -append_partition: Bootable. (line 248) +* Appended Filesystem Image, -append_partition: Bootable. (line 250) * Automatic execution order, of arguments, -x: ArgSort. (line 16) * Backslash Interpretation, _definition: Processing. (line 52) * Backup, enable fast incremental, -disk_dev_ino: Loading. (line 217) @@ -5158,13 +5160,13 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Character Set, for output, -out_charset: SetWrite. (line 276) * Character set, learn from image, -auto_charset: Loading. (line 122) * Character Set, of terminal, -local_charset: Charset. (line 58) -* CHRP partition, _definition: Bootable. (line 158) +* CHRP partition, _definition: Bootable. (line 160) * Closed media, _definition: Media. (line 43) * Comment, #: Scripting. (line 173) * Control, signal handling, -signal_handling: Exception. (line 69) * Create, new ISO image, _definition: Methods. (line 6) -* Cylinder alignment, _definition: Bootable. (line 198) -* Cylinder size, _definition: Bootable. (line 187) +* Cylinder alignment, _definition: Bootable. (line 200) +* Cylinder size, _definition: Bootable. (line 189) * Damaged track and session, close, -close_damaged: Writing. (line 170) * Delete, from ISO image, -rm: Manip. (line 21) * Delete, from ISO image, -rm_r: Manip. (line 28) @@ -5196,7 +5198,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Drive, write and eject, -commit_eject: Writing. (line 56) * EA, _definition: Extras. (line 65) * ECMA-119, _definition: Model. (line 6) -* EFI system partition, _definition: Bootable. (line 167) +* EFI system partition, _definition: Bootable. (line 169) * El Torito, _definition: Extras. (line 19) * Emulation, -as: Emulation. (line 13) * Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 151) @@ -5222,8 +5224,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Group, in ISO image, -chgrp_r: Manip. (line 62) * Growing, _definition: Methods. (line 19) * Hard links, control handling, -hardlinks: Loading. (line 134) -* HFS+ allocation block size: Bootable. (line 236) -* HFS+ serial number: Bootable. (line 233) +* HFS+ allocation block size: Bootable. (line 238) +* HFS+ serial number: Bootable. (line 235) * hidden, set in ISO image, -hide: Manip. (line 191) * Image reading, cache size, -data_cache_size: Loading. (line 296) * Image, _definition: Model. (line 9) @@ -5280,7 +5282,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Media, format, -format: Writing. (line 91) * Media, list formats, -list_formats: Writing. (line 134) * Media, list write speeds, -list_speeds: Writing. (line 146) -* MIPS boot file, activation: Bootable. (line 209) +* MIPS boot file, activation: Bootable. (line 211) * mkisofs, Emulation: Emulation. (line 16) * Modifying, _definition: Methods. (line 27) * Multi-session media, _definition: Media. (line 7) @@ -5307,15 +5309,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Ownership, global in ISO image, -uid: SetWrite. (line 282) * Ownership, in ISO image, -chown: Manip. (line 49) * Ownership, in ISO image, -chown_r: Manip. (line 54) -* Partition offset, _definition: Bootable. (line 177) -* Partition table, _definition: Bootable. (line 138) +* Partition offset, _definition: Bootable. (line 179) +* Partition table, _definition: Bootable. (line 140) * Pathspec, _definition: SetInsert. (line 120) * Pattern expansion, _definition: Processing. (line 24) * Pattern expansion, for disk paths, -disk_pattern: Insert. (line 36) * Pattern expansion, for ISO paths, -iso_rr_pattern: Manip. (line 10) * Permissions, in ISO image, -chmod: Manip. (line 65) * Permissions, in ISO image, -chmod_r: Manip. (line 77) -* PReP partition, _definition: Bootable. (line 162) +* PReP partition, _definition: Bootable. (line 164) * Problems, reporting: Bugreport. (line 6) * Process, consolidate text output, -pkt_output: Frontend. (line 7) * Process, control abort on error, -abort_on: Exception. (line 27) @@ -5374,8 +5376,8 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Session, mount parameters, -mount_opts: Inquiry. (line 68) * Session, select as input, -load: Loading. (line 35) * Sorting order, for -x, -list_arg_sorting: ArgSort. (line 27) -* SUN Disk Label, production: Bootable. (line 220) -* SUN SPARC boot images, activation: Bootable. (line 269) +* SUN Disk Label, production: Bootable. (line 222) +* SUN SPARC boot images, activation: Bootable. (line 271) * Symbolic link, create, -lns: Insert. (line 176) * System area, _definition: Bootable. (line 126) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 238) @@ -5443,39 +5445,39 @@ Node: Filter93164 Node: Writing97720 Node: SetWrite107851 Node: Bootable128436 -Node: Jigdo144774 -Node: Charset149021 -Node: Exception152336 -Node: DialogCtl158456 -Node: Inquiry161054 -Node: Navigate167371 -Node: Verify175669 -Node: Restore184933 -Node: Emulation192020 -Node: Scripting202322 -Node: Frontend210093 -Node: Examples219700 -Node: ExDevices220878 -Node: ExCreate221544 -Node: ExDialog222829 -Node: ExGrowing224094 -Node: ExModifying224899 -Node: ExBootable225403 -Node: ExCharset225955 -Node: ExPseudo226847 -Node: ExCdrecord227745 -Node: ExMkisofs228062 -Node: ExGrowisofs229402 -Node: ExException230537 -Node: ExTime230991 -Node: ExIncBackup231450 -Node: ExRestore235430 -Node: ExRecovery236363 -Node: Files236933 -Node: Seealso238232 -Node: Bugreport238955 -Node: Legal239536 -Node: CommandIdx240547 -Node: ConceptIdx257209 +Node: Jigdo144902 +Node: Charset149149 +Node: Exception152464 +Node: DialogCtl158584 +Node: Inquiry161182 +Node: Navigate167499 +Node: Verify175797 +Node: Restore185061 +Node: Emulation192148 +Node: Scripting202450 +Node: Frontend210221 +Node: Examples219828 +Node: ExDevices221006 +Node: ExCreate221672 +Node: ExDialog222957 +Node: ExGrowing224222 +Node: ExModifying225027 +Node: ExBootable225531 +Node: ExCharset226083 +Node: ExPseudo226975 +Node: ExCdrecord227873 +Node: ExMkisofs228190 +Node: ExGrowisofs229530 +Node: ExException230665 +Node: ExTime231119 +Node: ExIncBackup231578 +Node: ExRestore235558 +Node: ExRecovery236491 +Node: Files237061 +Node: Seealso238360 +Node: Bugreport239083 +Node: Legal239664 +Node: CommandIdx240675 +Node: ConceptIdx257337  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index b0b72b4a..4c31d1f3 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.3.7, Mar 04, 2014" +@c man .TH XORRISO 1 "Version 1.3.7, Apr 04, 2014" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -3565,6 +3565,9 @@ patching for modern GRUB MBRs. The content start address of the first boot image is converted to a count of 512 byte blocks, and an offset of 4 is added. The result is written as 64 bit little-endian number to byte address 0x1b0. @* +This feature can be revoked either by grub2_mbr= with empty disk path, +or by submitting a disk_path via system_area=. +@* @cindex Partition table, _definition @strong{partition_table=on} causes a simple partition table to be written into bytes 446 to 511 of the System Area. @@ -3593,12 +3596,12 @@ Use this to discard an MBR which was loaded with the ISO image. @* @cindex CHRP partition, _definition @strong{chrp_boot_part=on} causes a single partition in MBR which covers -the whole ISO image and has type 0x41. This is not compatible with any +the whole ISO image and has type 0x96. This is not compatible with any other feature that produces MBR partition entries. It makes GPT unrecognizable. @* @cindex PReP partition, _definition @strong{prep_boot_part=} inserts the content of a data file into the image and -marks it by an MBR partition of type 0x96. The parts of the ISO image before +marks it by an MBR partition of type 0x41. The parts of the ISO image before and after this partition will be covered by further MBR partitions. The data file is supposed to contain ELF executable code. @* diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 4ce812de..e4cb3fd2 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2014.04.03.194751" +#define Xorriso_timestamP "2014.04.04.142016"