New -boot_image settings gpt_iso_bootable= and gpt_iso_not_ro=

This commit is contained in:
Thomas Schmitt 2021-05-25 21:18:48 +02:00
parent a1f9d03df0
commit db5d4eb867
8 changed files with 171 additions and 54 deletions

View File

@ -1698,6 +1698,10 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso,
int was_force_bootable= 0, have_mbr_force_bootable= 0;
uint64_t gpt_bheader_block= 0, start_block, num_blocks;
uint64_t img_blocks= 0, iso_part_blocks;
char *cpt;
unsigned char bin_data[8];
uint64_t gpt_part_flags;
int was_gpt_iso_bootable= 0, was_gpt_iso_not_ro= 0, bin_count;
struct mbr_par {
uint8_t ptype;
@ -2261,7 +2265,43 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso,
} else if(strcmp(name, "GPT partition flags:") == 0) {
/* >>> check whether 0x1000000000000001 . Else: complain */;
/* >>> check whether 0x100000000000000[15] . Else: complain */;
cpt= strstr(contentpt, "0x");
if(cpt != NULL) {
ret= Hex_to_bin(cpt + 2, 8, &bin_count, bin_data, 0);
if(ret > 0) {
/* convert big-endian bin_data to local endianness */
gpt_part_flags= 0;
for(gpt_idx= 0; gpt_idx < bin_count; gpt_idx++)
gpt_part_flags|= (((uint64_t) bin_data[gpt_idx]) <<
(8 * (bin_count - 1 - gpt_idx)));
if((gpt_part_flags & 4) && !was_gpt_iso_bootable) {
was_gpt_iso_bootable= 1;
if(buf[0]) {
Xorriso_record_cmd_linE
}
if(mkisofs)
sprintf(buf, "--gpt-iso-bootable");
else
sprintf(buf, "-boot_image any gpt_iso_bootable=on");
}
if(num_count > 0 && num[0] == 1 &&
(!(gpt_part_flags & (((uint64_t) 1) << 60))) &&
!was_gpt_iso_not_ro) {
was_gpt_iso_not_ro= 1;
if(buf[0]) {
Xorriso_record_cmd_linE
}
if(mkisofs)
sprintf(buf, "--gpt-iso-not-ro");
else
sprintf(buf, "-boot_image any gpt_iso_not_ro=on");
}
}
}
} else if(strcmp(name, "GPT partition path :") == 0) {
idx= num[0] - 1;

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2019 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -1357,8 +1357,35 @@ interval_text_long:;
{ret= 0; goto ex;}
}
} else
} else if(strncmp(treatpt, "gpt_iso_bootable=", 17) == 0) {
if(strcmp(treatpt + 17, "off") == 0) {
xorriso->system_area_options&= ~(1 << 16);
} else if(strcmp(treatpt + 17, "on") == 0) {
xorriso->system_area_options|= (1 << 16);
} else {
sprintf(xorriso->info_text,
"-boot_image %s gpt_iso_bootable=: unknown mode : %s",
formpt, treatpt + 17);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
{ret= 0; goto ex;}
}
} else if(strncmp(treatpt, "gpt_iso_not_ro=", 15) == 0) {
if(strcmp(treatpt + 15, "off") == 0) {
xorriso->system_area_options&= ~(1 << 17);
} else if(strcmp(treatpt + 15, "on") == 0) {
xorriso->system_area_options|= (1 << 17);
} else {
sprintf(xorriso->info_text,
"-boot_image %s gpt_iso_not_ro=: unknown mode : %s",
formpt, treatpt + 15);
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
{ret= 0; goto ex;}
}
} else {
was_ok= 0;
}
if(!was_ok) {
sprintf(xorriso->info_text, "Unrecognized options with -boot_image: %s %s",

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -1928,7 +1928,7 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
" |\"system_area=\"|\"partition_table=on|off\"",
" |\"partition_entry=\"|\"appended_part_as=\"",
" |\"part_like_isohybrid=\"|\"iso_mbr_part_type=\"",
" |\"gpt_disk_guid=\"",
" |\"gpt_disk_guid=\"|\"gpt_iso_bootable\"|\"gpt_iso_not_ro=\"",
" |\"chrp_boot_part=on|off=\"|\"prep_boot_part=\"",
" |\"efi_boot_part=\"|\"efi_boot_part=--efi-boot-image\"",
" |\"mips_path=\"|\"mipsel_path=\"|\"mips_discard\"",

View File

@ -1,7 +1,7 @@
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
Copyright 2007-2021 Thomas Schmitt, <scdbackup@gmx.net>
Provided under GPL version 2 or later.
@ -3063,6 +3063,18 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= ((xorriso->system_area_options & (1 << 16)) == 0);
sprintf(line, "-boot_image any gpt_iso_bootable=%s\n",
(xorriso->system_area_options & (1 << 16)) ? "on" : "off");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= ((xorriso->system_area_options & (1 << 17)) == 0);
sprintf(line, "-boot_image any gpt_iso_not_ro=%s\n",
(xorriso->system_area_options & (1 << 17)) ? "on" : "off");
if(!(is_default && no_defaults))
Xorriso_status_result(xorriso,filter,fp,flag&2);
is_default= (xorriso->appended_as_gpt == 0 && xorriso->appended_as_apm == 0);
if(is_default) {
sprintf(line, "-boot_image any appended_part_as=mbr\n");

View File

@ -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.5, Jan 30, 2021"
.TH XORRISO 1 "Version 1.5.5, May 25, 2021"
.\" Please adjust this date whenever revising the manpage.
.\"
.\" Some roff macros, for reference:
@ -3802,6 +3802,18 @@ If no bootable MBR is indicated and a partition gets created by
\-append_partition, then mbr_force_bootable="on" causes a bootflag like it
would do with a bootable MBR.
.br
\fBgpt_iso_bootable=\fRon causes bit 2 of the GPT partition flags to be
set for the ISO 9660 partition if such a GPT partition emerges. This bit is
specified as "Legacy BIOS bootable" but its true significance is unclear.
Some GPT\-aware BIOS might want to see it in some partition. Mode "off"
revokes this setting.
.br
\fBgpt_iso_not_ro=\fRon causes bit 60 of the GPT partition flags to be not
set for the ISO 9660 partition if such a GPT partition emerges. This bit is
specified as "Read\-only" and thus appropriate. But it is unusual in GPT disk
partitions. Mode "off" revokes this setting and causes the read\-only bit to be
set.
.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

View File

@ -3214,6 +3214,16 @@ Examples:
If no bootable MBR is indicated and a partition gets created by
-append_partition, then mbr_force_bootable="on" causes a bootflag
like it would do with a bootable MBR.
*gpt_iso_bootable=*on causes bit 2 of the GPT partition flags to be
set for the ISO 9660 partition if such a GPT partition emerges.
This bit is specified as "Legacy BIOS bootable" but its true
significance is unclear. Some GPT-aware BIOS might want to see it
in some partition. Mode "off" revokes this setting.
*gpt_iso_not_ro=*on causes bit 60 of the GPT partition flags to be
not set for the ISO 9660 partition if such a GPT partition emerges.
This bit is specified as "Read-only" and thus appropriate. But it
is unusual in GPT disk partitions. Mode "off" revokes this setting
and causes the read-only bit to be set.
*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
@ -5536,7 +5546,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
* -alter_date sets timestamps in ISO image: Manip. (line 139)
* -alter_date_r sets timestamps in ISO image: Manip. (line 174)
* -append_partition adds arbitrary file after image end: Bootable.
(line 423)
(line 433)
* -application_id sets application id: SetWrite. (line 197)
* -application_use sets application use field: SetWrite. (line 272)
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
@ -5787,10 +5797,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 414)
* APM block size: Bootable. (line 424)
* APM, _definition: Extras. (line 42)
* Appendable media, _definition: Media. (line 38)
* Appended Filesystem Image, -append_partition: Bootable. (line 423)
* Appended Filesystem Image, -append_partition: Bootable. (line 433)
* Appended partition, in APM: Bootable. (line 291)
* Appended partition, in MBR or GPT: Bootable. (line 284)
* Automatic execution order, of arguments, -x: ArgSort. (line 16)
@ -5818,7 +5828,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* Cylinder alignment, _definition: Bootable. (line 340)
* Cylinder size, _definition: Bootable. (line 325)
* Damaged track and session, close, -close_damaged: Writing. (line 205)
* DEC Alpha SRM boot sector, production: Bootable. (line 400)
* DEC Alpha SRM boot sector, production: Bootable. (line 410)
* Delete, from ISO image, -rm: Manip. (line 20)
* Delete, from ISO image, -rm_r: Manip. (line 26)
* Delete, ISO directory, -rmdir: Manip. (line 29)
@ -5874,6 +5884,8 @@ 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 362)
* GPT read-only flag, do not set for ISO: Bootable. (line 367)
* GPT, control GUID, -boot_image gpt_disk_guid=: Bootable. (line 225)
* GPT, _definition: Extras. (line 39)
* Group, global in ISO image, -gid: SetWrite. (line 293)
@ -5881,10 +5893,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 128)
* HFS+ allocation block size: Bootable. (line 411)
* HFS+ serial number: Bootable. (line 408)
* HFS+ allocation block size: Bootable. (line 421)
* HFS+ serial number: Bootable. (line 418)
* hidden, set in ISO image, -hide: Manip. (line 177)
* HP-PA boot sector, production: Bootable. (line 383)
* HP-PA boot sector, production: Bootable. (line 393)
* Image reading, cache size, -data_cache_size: Loading. (line 362)
* Image, demand volume ID, -assert_volid: Loading. (line 105)
* Image, discard pending changes, -rollback: Writing. (line 9)
@ -5949,7 +5961,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
* 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 362)
* MIPS boot file, activation: Bootable. (line 372)
* mkisofs, Emulation: Emulation. (line 17)
* Modifying, _definition: Methods. (line 28)
* Multi-session media, _definition: Media. (line 7)
@ -6047,8 +6059,8 @@ 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 373)
* SUN SPARC boot images, activation: Bootable. (line 454)
* SUN Disk Label, production: Bootable. (line 383)
* SUN SPARC boot images, activation: Bootable. (line 464)
* Symbolic link, create, -lns: Insert. (line 181)
* System area, _definition: Bootable. (line 200)
* Table-of-content, search sessions, -rom_toc_scan: Loading. (line 308)
@ -6117,40 +6129,40 @@ Node: Filter107719
Node: Writing112341
Node: SetWrite124596
Node: Bootable153596
Node: Jigdo180804
Node: Charset185807
Node: Exception189136
Node: DialogCtl195265
Node: Inquiry197867
Node: Navigate206749
Node: Verify215456
Node: Restore226605
Node: Emulation238304
Node: Scripting248760
Node: Frontend256543
Node: Examples266169
Node: ExDevices267347
Node: ExCreate268008
Node: ExDialog269308
Node: ExGrowing270579
Node: ExModifying271388
Node: ExBootable271898
Node: ExCharset272453
Node: ExPseudo273349
Node: ExCdrecord274276
Node: ExMkisofs274596
Node: ExGrowisofs276493
Node: ExException277646
Node: ExTime278104
Node: ExIncBackup278562
Node: ExRestore282588
Node: ExRecovery283534
Node: Files284106
Node: Environ285440
Node: Seealso286188
Node: Bugreport286905
Node: Legal287496
Node: CommandIdx288508
Node: ConceptIdx306333
Node: Jigdo181477
Node: Charset186480
Node: Exception189809
Node: DialogCtl195938
Node: Inquiry198540
Node: Navigate207422
Node: Verify216129
Node: Restore227278
Node: Emulation238977
Node: Scripting249433
Node: Frontend257216
Node: Examples266842
Node: ExDevices268020
Node: ExCreate268681
Node: ExDialog269981
Node: ExGrowing271252
Node: ExModifying272061
Node: ExBootable272571
Node: ExCharset273126
Node: ExPseudo274022
Node: ExCdrecord274949
Node: ExMkisofs275269
Node: ExGrowisofs277166
Node: ExException278319
Node: ExTime278777
Node: ExIncBackup279235
Node: ExRestore283261
Node: ExRecovery284207
Node: Files284779
Node: Environ286113
Node: Seealso286861
Node: Bugreport287578
Node: Legal288169
Node: CommandIdx289181
Node: ConceptIdx307006

End Tag Table

View File

@ -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.5, Jan 30, 2021"
@c man .TH XORRISO 1 "Version 1.5.5, May 25, 2021"
@c man .\" Please adjust this date whenever revising the manpage.
@c man .\"
@c man .\" Some roff macros, for reference:
@ -4368,6 +4368,20 @@ If no bootable MBR is indicated and a partition gets created by
-append_partition, then mbr_force_bootable="on" causes a bootflag like it
would do with a bootable MBR.
@*
@cindex GPT Legacy BIOS bootable flag, set for ISO
@strong{gpt_iso_bootable=}on causes bit 2 of the GPT partition flags to be
set for the ISO 9660 partition if such a GPT partition emerges. This bit is
specified as "Legacy BIOS bootable" but its true significance is unclear.
Some GPT-aware BIOS might want to see it in some partition. Mode "off"
revokes this setting.
@*
@cindex GPT read-only flag, do not set for ISO
@strong{gpt_iso_not_ro=}on causes bit 60 of the GPT partition flags to be not
set for the ISO 9660 partition if such a GPT partition emerges. This bit is
specified as "Read-only" and thus appropriate. But it is unusual in GPT disk
partitions. Mode "off" revokes this setting and causes the read-only bit to be
set.
@*
@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

View File

@ -1 +1 @@
#define Xorriso_timestamP "2021.05.25.191333"
#define Xorriso_timestamP "2021.05.25.191826"