From 6deb2435ab6ff160b7c7350c391d3968b7152e08 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Mon, 16 Dec 2024 18:21:28 +0100 Subject: [PATCH] New -boot_image bootspec appended_gpt_with_gaps= --- xorriso/opts_a_c.c | 10 +++ xorriso/text_io.c | 9 +++ xorriso/write_run.c | 9 +++ xorriso/xorriso.1 | 33 ++++++-- xorriso/xorriso.info | 157 +++++++++++++++++++++--------------- xorriso/xorriso.texi | 34 ++++++-- xorriso/xorriso_private.h | 3 + xorriso/xorriso_timestamp.h | 2 +- 8 files changed, 179 insertions(+), 78 deletions(-) diff --git a/xorriso/opts_a_c.c b/xorriso/opts_a_c.c index f8e9a729..330b3126 100644 --- a/xorriso/opts_a_c.c +++ b/xorriso/opts_a_c.c @@ -1234,6 +1234,16 @@ interval_text_long:; if(was_ok) is_change= 1; + } else if(strncmp(treatpt, "appended_gpt_with_gaps=", 23) == 0) { + if(strcmp(treatpt + 23, "on") == 0) { + xorriso->iso_mbr_part_flag |= 2; + } else if(strcmp(treatpt + 23, "off") == 0) { + xorriso->iso_mbr_part_flag &= ~2; + } else + was_ok= 0; + if(was_ok) + is_change= 1; + } else if(strncmp(treatpt, "gpt_disk_guid=", 14) == 0) { ret= Xorriso_parse_gpt_guid(xorriso, treatpt + 14, 0); if(ret <= 0) diff --git a/xorriso/text_io.c b/xorriso/text_io.c index 9d76c0eb..50188feb 100644 --- a/xorriso/text_io.c +++ b/xorriso/text_io.c @@ -3103,6 +3103,15 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) } } + is_default= (xorriso->iso_mbr_part_flag & 2) == 0; + if(is_default) { + sprintf(line, "-boot_image any appended_gpt_with_gaps=off\n"); + } else { + sprintf(line, "-boot_image any appended_gpt_with_gaps=on\n"); + } + if(!(is_default && no_defaults)) + Xorriso_status_result(xorriso, filter, fp, flag & 2); + is_default= (xorriso->part_like_isohybrid == 0); sprintf(line, "-boot_image any part_like_isohybrid=%s\n", xorriso->part_like_isohybrid ? "on" : "off"); diff --git a/xorriso/write_run.c b/xorriso/write_run.c index 9495d9f6..55567577 100644 --- a/xorriso/write_run.c +++ b/xorriso/write_run.c @@ -885,6 +885,7 @@ int Xorriso_make_iso_write_opts(struct XorrisO *xorriso, IsoImage *image, { int ext, i, ret, pad_by_libisofs= 0, is_bootable= 0, relax, intvl_string= 0; int intvl_check= 2; /* 3 forbids "imported_iso" */ + int with_appended_partition= 0; char *out_cs, *part_image; IsoNode *root_node; uint32_t padding; @@ -981,6 +982,7 @@ int Xorriso_make_iso_write_opts(struct XorrisO *xorriso, IsoImage *image, isoburn_igopt_set_part_type_guid(sopts, i + 1, xorriso->appended_part_type_guids[i], xorriso->appended_part_gpt_flags[i] & 1); + with_appended_partition= 1; } isoburn_igopt_set_appended_as_gpt(sopts, xorriso->appended_as_gpt); isoburn_igopt_set_appended_as_apm(sopts, xorriso->appended_as_apm); @@ -989,6 +991,13 @@ int Xorriso_make_iso_write_opts(struct XorrisO *xorriso, IsoImage *image, isoburn_igopt_set_iso_type_guid(sopts, xorriso->iso_gpt_type_guid, xorriso->iso_mbr_part_flag & 1); isoburn_igopt_set_gpt_guid(sopts, xorriso->gpt_guid, xorriso->gpt_guid_mode); + + /* GPT with gaps only if partitions get appended */ + if(with_appended_partition && xorriso->appended_as_gpt) + isoburn_igopt_set_gpt_with_gaps(sopts, !!(xorriso->iso_mbr_part_flag & 2), + !!(xorriso->iso_mbr_part_flag & 4), + !!(xorriso->iso_mbr_part_flag & 8)); + ret= isoburn_igopt_set_max_ce_entries(sopts, xorriso->max_ce_entries, xorriso->max_ce_entries_flag); if(ret <= 0) diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index 5ad02e1b..1feff892 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.5.7, Nov 01, 2024" +.TH XORRISO 1 "Version 1.5.7, Dec 08, 2024" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -4019,7 +4019,7 @@ Command \-volume_date "uuid" can be used to set their value. .br \fBbin_path=\fR depicts an El Torito boot image file, a binary program which is to be started by the hardware boot facility (e.g. the BIOS) -at boot time. +at boot time. Default platform_id is 0x00 = legacy 80x86 BIOS. .br \fBefi_path=\fR depicts an El Torito boot image file that is ready for EFI booting. This is normally a FAT filesystem image not larger than @@ -4032,9 +4032,12 @@ It controls the boot medium emulation code of a boot image. The default "no_emulation" is suitable for ISOLINUX, GRUB, FreeBSD cdboot. .br \fBload_size=\fR is a value which depends on the boot image. -Default is 2048 which matches the expectations of most boot images. -The special value "full" means the full size of the boot image file -rounded up to a multiple of 2048 bytes. Maximum is 33,552,384 bytes. +Default for legacy BIOS is 2048 which matches the expectations of most BIOS +boot images. The special value "full" means the full size of the boot image +file rounded up to a multiple of 2048 bytes. Maximum is 33,552,384 bytes. +With EFI boot images the default is the full image size. Images which exceed +the maximum size get size 0 or 1, which means "up to the end of the device" +according to the UEFI specification. .br \fBboot_info_table=on\fR causes address patching to bytes 8 to 63 of the boot image which is given by "any" "bin_path=". @@ -4188,6 +4191,23 @@ influenced by \-append_partition parameter partition_number. By default, appended partitions get marked in APM only if APM is produced because of other options together with part_like_isohybrid="on". .br +The next two settings apply only if partitions get appended by command +\-append_partition and if GPT emerges at all, e.g. by appended_part_as=gpt. +.br +\fBappended_gpt_with_gaps=on\fR increases the chance to get in GPT the +partition numbers given with command \-append_partition. +It may leave some parts of the resulting image unclaimed by partitions in +the emerging GPT. The ISO 9660 filesystem gets marked by a GPT partition +only if none of the appended partitions has partition number 1, +and if no other command causes a partition inside the emerging ISO 9660 +filesystem, and if partition_offset=16. +.br +\fBappended_gpt_with_gaps=off\fR causes the default behavior of inserting +gap filling partitions so that no part of the emerging image after block 16 +is unclaimed by GPT partitions. This happens only if partitions get appended +and a valid GPT emerges, e.g. by appended_part_as=gpt. +Commands which produce isohybrid\-style invalid GPT disable gap filling. +.br \fBchrp_boot_part=on\fR causes a single partition in MBR which covers 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. @@ -4400,6 +4420,9 @@ If the number of preceding partitions is too high, then a NOTE message informs about the inability to achieve partition_number and about the actually assigned number. .br +The chance to get the desired partition number is increased much by +command \-boot_image "any" "appended_gpt_with_gaps=on". +.br The type_code may be the same as described with MBR. Given GUIDs are used unchanged. Given MBR partition types get translated. 0xef becomes C12A7328\-F81F\-11D2\-BA4B\-00A0C93EC93B, others become diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 5e09367c..78d50a5d 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -3385,7 +3385,8 @@ Examples: "uuid" can be used to set their value. *bin_path=* depicts an El Torito boot image file, a binary program which is to be started by the hardware boot facility (e.g. the - BIOS) at boot time. + BIOS) at boot time. Default platform_id is 0x00 = legacy 80x86 + BIOS. *efi_path=* depicts an El Torito boot image file that is ready for EFI booting. This is normally a FAT filesystem image not larger than 65535 blocks of 512 bytes (= 32 MiB - 512). Its load_size is @@ -3396,10 +3397,13 @@ Examples: default "no_emulation" is suitable for ISOLINUX, GRUB, FreeBSD cdboot. *load_size=* is a value which depends on the boot image. Default - is 2048 which matches the expectations of most boot images. The - special value "full" means the full size of the boot image file - rounded up to a multiple of 2048 bytes. Maximum is 33,552,384 - bytes. + for legacy BIOS is 2048 which matches the expectations of most BIOS + boot images. The special value "full" means the full size of the + boot image file rounded up to a multiple of 2048 bytes. Maximum is + 33,552,384 bytes. With EFI boot images the default is the full + image size. Images which exceed the maximum size get size 0 or 1, + which means "up to the end of the device" according to the UEFI + specification. *boot_info_table=on* causes address patching to bytes 8 to 63 of the boot image which is given by "any" "bin_path=". "boot_info_table=off" disables this patching. @@ -3530,6 +3534,22 @@ Examples: By default, appended partitions get marked in APM only if APM is produced because of other options together with part_like_isohybrid="on". + The next two settings apply only if partitions get appended by + command -append_partition and if GPT emerges at all, e.g. by + appended_part_as=gpt. + *appended_gpt_with_gaps=on* increases the chance to get in GPT the + partition numbers given with command -append_partition. It may + leave some parts of the resulting image unclaimed by partitions in + the emerging GPT. The ISO 9660 filesystem gets marked by a GPT + partition only if none of the appended partitions has partition + number 1, and if no other command causes a partition inside the + emerging ISO 9660 filesystem, and if partition_offset=16. + *appended_gpt_with_gaps=off* causes the default behavior of + inserting gap filling partitions so that no part of the emerging + image after block 16 is unclaimed by GPT partitions. This happens + only if partitions get appended and a valid GPT emerges, e.g. by + appended_part_as=gpt. Commands which produce isohybrid-style + invalid GPT disable gap filling. *chrp_boot_part=on* causes a single partition in MBR which covers the whole ISO image and has type 0x96. This is not compatible with any other feature that produces MBR partition entries. It makes @@ -3710,6 +3730,8 @@ Examples: partition_number. If the number of preceding partitions is too high, then a NOTE message informs about the inability to achieve partition_number and about the actually assigned number. + The chance to get the desired partition number is increased much by + command -boot_image "any" "appended_gpt_with_gaps=on". The type_code may be the same as described with MBR. Given GUIDs are used unchanged. Given MBR partition types get translated. 0xef becomes C12A7328-F81F-11D2-BA4B-00A0C93EC93B, others become @@ -6128,7 +6150,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top * -alter_date sets timestamps in ISO image: Manip. (line 181) * -alter_date_r sets timestamps in ISO image: Manip. (line 216) * -append_partition adds arbitrary file after image end: Bootable. - (line 470) + (line 490) * -application_id sets application id: SetWrite. (line 220) * -application_use sets application use field: SetWrite. (line 295) * -as emulates mkisofs or cdrecord: Emulation. (line 13) @@ -6400,14 +6422,15 @@ 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 461) +* APM block size: Bootable. (line 481) * APM, _definition: Extras. (line 42) * Appendable media, _definition: Media. (line 43) -* Appended Filesystem Image, -append_partition: Bootable. (line 470) -* Appended partition, in APM: Bootable. (line 326) -* Appended partition, in MBR or GPT: Bootable. (line 317) -* Appended partitions, GPT: Bootable. (line 499) -* Appended partitions, MBR: Bootable. (line 480) +* Appended Filesystem Image, -append_partition: Bootable. (line 490) +* Appended partition, gaps in GPT: Bootable. (line 340) +* Appended partition, in APM: Bootable. (line 330) +* Appended partition, in MBR or GPT: Bootable. (line 321) +* Appended partitions, GPT: Bootable. (line 519) +* Appended partitions, MBR: Bootable. (line 500) * Automatic execution order, of arguments, -x: ArgSort. (line 16) * Backslash Interpretation, _definition: Processing. (line 57) * Backup, enable fast incremental, -disk_dev_ino: Loading. (line 398) @@ -6425,15 +6448,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Character set, learn from image, -auto_charset: Loading. (line 141) * Character Set, of terminal, -local_charset: Charset. (line 57) * Character Set, _definition: Charset. (line 6) -* CHRP partition, _definition: Bootable. (line 333) +* CHRP partition, _definition: Bootable. (line 353) * Closed media, _definition: Media. (line 49) * Comment, #: Scripting. (line 164) * Control, signal handling, -signal_handling: Exception. (line 67) * Create, new ISO image, _definition: Methods. (line 7) -* Cylinder alignment, _definition: Bootable. (line 377) -* Cylinder size, _definition: Bootable. (line 362) +* Cylinder alignment, _definition: Bootable. (line 397) +* Cylinder size, _definition: Bootable. (line 382) * Damaged track and session, close, -close_damaged: Writing. (line 209) -* DEC Alpha SRM boot sector, production: Bootable. (line 447) +* DEC Alpha SRM boot sector, production: Bootable. (line 467) * Delete, from ISO image, -rm: Manip. (line 20) * Delete, from ISO image, -rm_r: Manip. (line 26) * Delete, ISO directory, -rmdir: Manip. (line 29) @@ -6465,7 +6488,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Drive, _definition: Drives. (line 6) * EA, _definition: Extras. (line 66) * ECMA-119, _definition: Model. (line 6) -* EFI system partition, _definition: Bootable. (line 342) +* EFI system partition, _definition: Bootable. (line 362) * El Torito, _definition: Extras. (line 19) * Emulation, -as: Emulation. (line 13) * Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 155) @@ -6492,19 +6515,19 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Filter, _definition: Filter. (line 6) * Frontend program, start at pipes, -launch_frontend: Frontend. (line 141) -* GPT Legacy BIOS bootable flag, set for ISO: Bootable. (line 399) -* GPT read-only flag, do not set for ISO: Bootable. (line 404) -* GPT, control GUID, -boot_image gpt_disk_guid=: Bootable. (line 260) +* GPT Legacy BIOS bootable flag, set for ISO: Bootable. (line 419) +* GPT read-only flag, do not set for ISO: Bootable. (line 424) +* GPT, control GUID, -boot_image gpt_disk_guid=: Bootable. (line 264) * GPT, _definition: Extras. (line 39) * Group, global in ISO image, -gid: SetWrite. (line 316) * Group, in ISO image, -chgrp: Manip. (line 49) * Group, in ISO image, -chgrp_r: Manip. (line 53) * Growing, _definition: Methods. (line 20) * Hard links, control handling, -hardlinks: Loading. (line 152) -* HFS+ allocation block size: Bootable. (line 458) -* HFS+ serial number: Bootable. (line 455) +* HFS+ allocation block size: Bootable. (line 478) +* HFS+ serial number: Bootable. (line 475) * hidden, set in ISO image, -hide: Manip. (line 219) -* HP-PA boot sector, production: Bootable. (line 430) +* HP-PA boot sector, production: Bootable. (line 450) * Image reading, cache size, -data_cache_size: Loading. (line 510) * Image, demand volume ID, -assert_volid: Loading. (line 129) * Image, discard pending changes, -rollback: Writing. (line 9) @@ -6570,15 +6593,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Linux file attributes, _definition: Extras. (line 84) * List delimiter, _definition: Processing. (line 13) * Local Character Set, _definition: Charset. (line 11) -* MBR bootable/active flag, enforce: Bootable. (line 388) -* MBR, set, -boot_image system_area=: Bootable. (line 227) +* MBR bootable/active flag, enforce: Bootable. (line 408) +* MBR, set, -boot_image system_area=: Bootable. (line 231) * MBR, _definition: Extras. (line 27) * MD5, control handling, -md5: Loading. (line 315) * Media, erase, -blank: Writing. (line 57) * Media, format, -format: Writing. (line 87) * Media, list formats, -list_formats: Writing. (line 128) * Media, list write speeds, -list_speeds: Writing. (line 139) -* MIPS boot file, activation: Bootable. (line 409) +* MIPS boot file, activation: Bootable. (line 429) * mkisofs, Emulation: Emulation. (line 17) * Modifying, _definition: Methods. (line 28) * Multi-session media, _definition: Media. (line 7) @@ -6606,15 +6629,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Ownership, global in ISO image, -uid: SetWrite. (line 313) * Ownership, in ISO image, -chown: Manip. (line 43) * Ownership, in ISO image, -chown_r: Manip. (line 47) -* Partition offset, _definition: Bootable. (line 352) -* Partition table, _definition: Bootable. (line 300) +* Partition offset, _definition: Bootable. (line 372) +* Partition table, _definition: Bootable. (line 304) * Pathspec, _definition: SetInsert. (line 126) * Pattern expansion, for disk paths, -disk_pattern: Insert. (line 34) * Pattern expansion, for ISO paths, -iso_rr_pattern: Manip. (line 10) * Pattern expansion, _definition: Processing. (line 29) * Permissions, in ISO image, -chmod: Manip. (line 55) * Permissions, in ISO image, -chmod_r: Manip. (line 66) -* PReP partition, _definition: Bootable. (line 337) +* PReP partition, _definition: Bootable. (line 357) * Problems, reporting: Bugreport. (line 6) * Process, consolidate text output, -pkt_output: Frontend. (line 7) * Process, control abort on error, -abort_on: Exception. (line 28) @@ -6676,10 +6699,10 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Session, select as input, -load: Loading. (line 54) * Session, _definition: Model. (line 6) * Sorting order, for -x, -list_arg_sorting: ArgSort. (line 26) -* SUN Disk Label, production: Bootable. (line 420) -* SUN SPARC boot images, activation: Bootable. (line 517) +* SUN Disk Label, production: Bootable. (line 440) +* SUN SPARC boot images, activation: Bootable. (line 539) * Symbolic link, create, -lns: Insert. (line 192) -* System area, _definition: Bootable. (line 227) +* System area, _definition: Bootable. (line 231) * Table-of-content, choose info to show, -toc_info_type: Inquiry. (line 49) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 450) @@ -6760,40 +6783,40 @@ Node: Filter125299 Node: Writing129921 Node: SetWrite142415 Node: Bootable173847 -Node: Jigdo205129 -Node: Charset210132 -Node: Exception213461 -Node: DialogCtl219650 -Node: Inquiry222252 -Node: Navigate234947 -Node: Verify247000 -Node: Restore258149 -Node: Emulation270356 -Node: Scripting281932 -Node: Frontend290187 -Node: Examples299813 -Node: ExDevices300991 -Node: ExCreate301652 -Node: ExDialog302952 -Node: ExGrowing304223 -Node: ExModifying305032 -Node: ExBootable305542 -Node: ExCharset306097 -Node: ExPseudo306993 -Node: ExCdrecord307920 -Node: ExMkisofs308240 -Node: ExGrowisofs310137 -Node: ExException311290 -Node: ExTime311748 -Node: ExIncBackup312206 -Node: ExRestore316232 -Node: ExRecovery317178 -Node: Files317750 -Node: Environ319084 -Node: Seealso319832 -Node: Bugreport320632 -Node: Legal321223 -Node: CommandIdx322235 -Node: ConceptIdx341541 +Node: Jigdo206572 +Node: Charset211575 +Node: Exception214904 +Node: DialogCtl221093 +Node: Inquiry223695 +Node: Navigate236390 +Node: Verify248443 +Node: Restore259592 +Node: Emulation271799 +Node: Scripting283375 +Node: Frontend291630 +Node: Examples301256 +Node: ExDevices302434 +Node: ExCreate303095 +Node: ExDialog304395 +Node: ExGrowing305666 +Node: ExModifying306475 +Node: ExBootable306985 +Node: ExCharset307540 +Node: ExPseudo308436 +Node: ExCdrecord309363 +Node: ExMkisofs309683 +Node: ExGrowisofs311580 +Node: ExException312733 +Node: ExTime313191 +Node: ExIncBackup313649 +Node: ExRestore317675 +Node: ExRecovery318621 +Node: Files319193 +Node: Environ320527 +Node: Seealso321275 +Node: Bugreport322075 +Node: Legal322666 +Node: CommandIdx323678 +Node: ConceptIdx342984  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index d27f0a98..0c9b3a9a 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.5.7, Nov 01, 2024" +@c man .TH XORRISO 1 "Version 1.5.7, Dec 08, 2024" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -4590,7 +4590,7 @@ Command -volume_date "uuid" can be used to set their value. @* @strong{bin_path=} depicts an El Torito boot image file, a binary program which is to be started by the hardware boot facility (e.g. the BIOS) -at boot time. +at boot time. Default platform_id is 0x00 = legacy 80x86 BIOS. @* @strong{efi_path=} depicts an El Torito boot image file that is ready for EFI booting. This is normally a FAT filesystem image not larger than @@ -4603,9 +4603,12 @@ It controls the boot medium emulation code of a boot image. The default "no_emulation" is suitable for ISOLINUX, GRUB, FreeBSD cdboot. @* @strong{load_size=} is a value which depends on the boot image. -Default is 2048 which matches the expectations of most boot images. -The special value "full" means the full size of the boot image file -rounded up to a multiple of 2048 bytes. Maximum is 33,552,384 bytes. +Default for legacy BIOS is 2048 which matches the expectations of most BIOS +boot images. The special value "full" means the full size of the boot image +file rounded up to a multiple of 2048 bytes. Maximum is 33,552,384 bytes. +With EFI boot images the default is the full image size. Images which exceed +the maximum size get size 0 or 1, which means "up to the end of the device" +according to the UEFI specification. @* @strong{boot_info_table=on} causes address patching to bytes 8 to 63 of the boot image which is given by "any" "bin_path=". @@ -4765,6 +4768,24 @@ influenced by -append_partition parameter partition_number. By default, appended partitions get marked in APM only if APM is produced because of other options together with part_like_isohybrid="on". @* +The next two settings apply only if partitions get appended by command +-append_partition and if GPT emerges at all, e.g. by appended_part_as=gpt. +@* +@cindex Appended partition, gaps in GPT +@strong{appended_gpt_with_gaps=on} increases the chance to get in GPT the +partition numbers given with command -append_partition. +It may leave some parts of the resulting image unclaimed by partitions in +the emerging GPT. The ISO 9660 filesystem gets marked by a GPT partition +only if none of the appended partitions has partition number 1, +and if no other command causes a partition inside the emerging ISO 9660 +filesystem, and if partition_offset=16. +@* +@strong{appended_gpt_with_gaps=off} causes the default behavior of inserting +gap filling partitions so that no part of the emerging image after block 16 +is unclaimed by GPT partitions. This happens only if partitions get appended +and a valid GPT emerges, e.g. by appended_part_as=gpt. +Commands which produce isohybrid-style invalid GPT disable gap filling. +@* @cindex CHRP partition, _definition @strong{chrp_boot_part=on} causes a single partition in MBR which covers the whole ISO image and has type 0x96. This is not compatible with any @@ -5000,6 +5021,9 @@ If the number of preceding partitions is too high, then a NOTE message informs about the inability to achieve partition_number and about the actually assigned number. @* +The chance to get the desired partition number is increased much by +command -boot_image "any" "appended_gpt_with_gaps=on". +@* The type_code may be the same as described with MBR. Given GUIDs are used unchanged. Given MBR partition types get translated. 0xef becomes C12A7328-F81F-11D2-BA4B-00A0C93EC93B, others become diff --git a/xorriso/xorriso_private.h b/xorriso/xorriso_private.h index 21240356..e2987f13 100644 --- a/xorriso/xorriso_private.h +++ b/xorriso/xorriso_private.h @@ -615,6 +615,9 @@ struct XorrisO { /* the global context of xorriso */ int iso_mbr_part_flag; /* Flags in case that the partition table is GPT: bit0= iso_gpt_type_guid is valid + bit1= gaps in the image coverage are allowed + bit2= with bit1: do not sort GPT partition array by start block + bit3= with bit1: do not create partition 1 for ISO filesystem */ /* See libisoburn.h isoburn_igopt_set_gpt_guid() */ diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 872a61df..dc348320 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.12.16.171512" +#define Xorriso_timestamP "2024.12.16.172102"