diff --git a/xorriso/base_obj.c b/xorriso/base_obj.c index e59db2f6..d5c0cf9d 100644 --- a/xorriso/base_obj.c +++ b/xorriso/base_obj.c @@ -3,7 +3,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2017 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -290,11 +290,15 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag) for(i= 0; i < Xorriso_max_appended_partitionS; i++) { m->appended_partitions[i]= NULL; m->appended_part_types[i]= 0; + memset(m->appended_part_type_guids[i], 0, 16); + m->appended_part_gpt_flags[i]= 0; } m->appended_as_gpt= 0; m->appended_as_apm= 0; m->part_like_isohybrid= 0; m->iso_mbr_part_type= -1; + memset(m->iso_gpt_type_guid, 0, 16); + m->iso_mbr_part_flag= 0; memset(m->gpt_guid, 0, 16); m->gpt_guid_mode= 0; m->ascii_disc_label[0]= 0; diff --git a/xorriso/emulators.c b/xorriso/emulators.c index dbc4364d..c21cf3e2 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2018 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -880,7 +880,8 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " -isohybrid-gpt-hfsplus Mark El Torito boot image as HFS+ in GPT", " -isohybrid-apm-hfsplus Mark El Torito boot image as HFS+ in APM", " -part_like_isohybrid Mark in MBR, GPT, APM without -isohybrid-mbr", -" -iso_mbr_part_type Set type byte of ISO partition in MBR", +" -iso_mbr_part_type Set type byte or GUID of ISO partition in MBR", +" or type GUID if a GPT ISO partition emerges.", " --gpt_disk_guid GUID Set GPT disk GUID or choose automatic GUID", " -G FILE, -generic-boot FILE Set generic boot image name", " --embedded-boot FILE Alias of -G", @@ -908,7 +909,8 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " -chrp-boot Alias of -chrp-boot-part", " -prep-boot-part DISKFILE Set data source for MBR partition type 0x41", " -append_partition NUMBER TYPE FILE", -" Append FILE after image. TYPE is hex: 0x..", +" Append FILE after image. TYPE is hex: 0x.. or", +" a GUID to be used if -appended_part_as_gpt.", " -appended_part_as_gpt mark appended partitions in GPT instead of MBR.", " -appended_part_as_apm mark appended partitions in APM.", " --modification-date=YYYYMMDDhhmmsscc", diff --git a/xorriso/iso_img.c b/xorriso/iso_img.c index 8dd7c420..d45abbaf 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-2016 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -627,7 +627,7 @@ int Xorriso_boot_status_non_mbr(struct XorrisO *xorriso, IsoImage *image, int Xorriso_append_part_status(struct XorrisO *xorriso, IsoImage *image, char *filter, FILE *fp, int flag) { - int i, is_default; + int i, l, is_default; is_default= (xorriso->appended_as_gpt == 0); sprintf(xorriso->result_line, "-boot_image any appended_part_as=%s\n", @@ -637,8 +637,16 @@ int Xorriso_append_part_status(struct XorrisO *xorriso, IsoImage *image, for(i= 0; i < Xorriso_max_appended_partitionS; i++) { if(xorriso->appended_partitions[i] == NULL) continue; - sprintf(xorriso->result_line, "-append_partition %d 0x%2.2x ", - i + 1, (unsigned int) xorriso->appended_part_types[i]); + sprintf(xorriso->result_line, "-append_partition %d ", i + 1); + l= strlen(xorriso->result_line); + if(xorriso->appended_part_gpt_flags[i] & 1) { + Xorriso__format_guid(xorriso->appended_part_type_guids[i], + xorriso->result_line + l, 0); + strcpy(xorriso->result_line + l + 32, " "); + } else { + sprintf(xorriso->result_line + l, "0x%2.2x ", + (unsigned int) xorriso->appended_part_types[i]); + } Text_shellsafe(xorriso->appended_partitions[i], xorriso->result_line, 1); strcat(xorriso->result_line, "\n"); Xorriso_status_result(xorriso, filter, fp, flag & 2); @@ -1654,12 +1662,12 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, int appended_partition= 0; #endif - int iso_mbr_part_type= -1; + int iso_mbr_part_type= -1, iso_gpt_part_idx= -1; unsigned int prev_pltf= 0; unsigned long int sa_options= 0, partno, id_tag, perms, start_cyl, num_blocks; unsigned long int part_status, part_type, start_block, partition_offset= 0; uint32_t high_block= 0; - char name[24], *textpt, *contentpt, *buf= NULL; + char name[24], *textpt, *contentpt, *buf= NULL, part_type_text[37]; char **lines= NULL; double num[8]; char *cat_path= ""; @@ -1687,6 +1695,7 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, struct gpt_par { int ptype; /* 0= unknown, 1= gpt-basdat, 2=gpt-hfsplus, 3=EFI */ + uint8_t type_guid[16]; int is_gap; int has_path; char *path; @@ -1942,13 +1951,18 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, gpts[idx].ptype= 3; /* EFI System Partition */ else gpts[idx].ptype= 0; + Xorriso_parse_guid(xorriso, textpt, gpts[idx].type_guid, 1); } else if(strcmp(name, "GPT start and size :") == 0) { idx= num[0] - 1; if(num[2] > 0) appended_as_gpt= 1; - gpts[idx].start_block= num[1]; - gpts[idx].block_count= num[2]; + start_block= gpts[idx].start_block= num[1]; + num_blocks= gpts[idx].block_count= num[2]; + if(start_block == partition_offset * 4 && + (start_block + num_blocks) >= high_block * 4 && + iso_gpt_part_idx < 0) + iso_gpt_part_idx= idx; } else if(strcmp(name, "GPT partition path :") == 0) { idx= num[0] - 1; @@ -2210,9 +2224,13 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, } } if(mbr_idx >= mbr_count) { - if(appended_as_gpt == 1) + if(appended_as_gpt == 1) { appended_as_gpt= 2; - sprintf(buf, "-append_partition %d 0x%lx ", idx + 1, part_type); + Xorriso__format_guid(gpts[idx].type_guid, part_type_text, 0); + } else { + sprintf(part_type_text, "0x%lx", part_type); + } + sprintf(buf, "-append_partition %d %s ", idx + 1, part_type_text); Xorriso_add_intvl_adr(xorriso, buf, (uint64_t) num[1], (uint64_t) (num[1] + num[2] - 1.0), "d", imported_iso); @@ -2476,7 +2494,16 @@ static int Xorriso_scan_report_lines(struct XorrisO *xorriso, Xorriso_record_cmd_linE did_sysarea= 1; } - if(iso_mbr_part_type >= 0) { + if(iso_gpt_part_idx >= 0) { + if(mkisofs) + sprintf(buf, "-iso_mbr_part_type "); + else + sprintf(buf, "-boot_image any iso_mbr_part_type="); + Xorriso__format_guid(gpts[iso_gpt_part_idx].type_guid, buf + strlen(buf), + 0); + Xorriso_record_cmd_linE + + } else if(iso_mbr_part_type >= 0) { if(mkisofs) sprintf(buf, "-iso_mbr_part_type 0x%2.2x", (unsigned int) iso_mbr_part_type); diff --git a/xorriso/lib_mgt.c b/xorriso/lib_mgt.c index fa7e339a..a6a11eb4 100644 --- a/xorriso/lib_mgt.c +++ b/xorriso/lib_mgt.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2016 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -979,26 +979,14 @@ int Xorriso_set_data_cache(struct XorrisO *xorriso, void *o, return(ret); } + int Xorriso_format_guid(struct XorrisO *xorriso, uint8_t guid[16], char *line, int flag) { - int i; - line[0]= 0; - for(i= 3; i >= 0; i--) - sprintf(line + strlen(line), "%-2.2x", guid[i]); - sprintf(line + strlen(line), "-"); - for(i= 5; i >= 4; i--) - sprintf(line + strlen(line), "%-2.2x", guid[i]); - sprintf(line + strlen(line), "-"); - for(i= 7; i >= 6; i--) - sprintf(line + strlen(line), "%-2.2x", guid[i]); - sprintf(line + strlen(line), "-"); - for(i= 8; i < 10; i++) - sprintf(line + strlen(line), "%-2.2x", guid[i]); - sprintf(line + strlen(line), "-"); - for(i= 10; i < 16; i++) - sprintf(line + strlen(line), "%-2.2x", guid[i]); + /* >>> Maybe let the user switch between hex string and structured text */; + + Xorriso__format_guid(guid, line, 1); return(1); } diff --git a/xorriso/misc_funct.c b/xorriso/misc_funct.c index cc579390..1d91a86a 100644 --- a/xorriso/misc_funct.c +++ b/xorriso/misc_funct.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2012 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -1334,3 +1334,36 @@ int Xorriso__exchange_prefix(char *source_prefix, char *target_prefix, return(1); } + +/* @param text takes result, must provide at least 37 characters of storage + @param flag bit0= structured text format (else hex string) +*/ +int Xorriso__format_guid(uint8_t guid[16], char *text, int flag) +{ + int i; + + if(flag & 1) { + /* Structured text */ + text[0]= 0; + for(i= 3; i >= 0; i--) + sprintf(text + strlen(text), "%-2.2x", (unsigned int) guid[i]); + sprintf(text + strlen(text), "-"); + for(i= 5; i >= 4; i--) + sprintf(text + strlen(text), "%-2.2x", (unsigned int) guid[i]); + sprintf(text + strlen(text), "-"); + for(i= 7; i >= 6; i--) + sprintf(text + strlen(text), "%-2.2x", (unsigned int) guid[i]); + sprintf(text + strlen(text), "-"); + for(i= 8; i <= 9; i++) + sprintf(text + strlen(text), "%-2.2x", (unsigned int) guid[i]); + sprintf(text + strlen(text), "-"); + for(i= 10; i <= 15; i++) + sprintf(text + strlen(text), "%-2.2x", (unsigned int) guid[i]); + } else { + /* Plain hex string */ + for(i= 0; i < 16; i++) + sprintf(text + i * 2, "%-2.2x", (unsigned int) guid[i]); + } + return(1); +} + diff --git a/xorriso/misc_funct.h b/xorriso/misc_funct.h index 47183fbe..34f64080 100644 --- a/xorriso/misc_funct.h +++ b/xorriso/misc_funct.h @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2012 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -14,6 +14,14 @@ #include +#ifdef HAVE_STDINT_H +#include +#else +#ifdef HAVE_INTTYPES_H +#include +#endif +#endif + char *Text_shellsafe(char *in_text, char *out_text, int flag); @@ -101,5 +109,10 @@ int Xorriso__to_upper(char *in, char *out, int out_size, int flag); int Xorriso__exchange_prefix(char *source_prefix, char *target_prefix, char *eff_source, char *eff_target, int flag); +/* @param text takes result, must provide at least 37 characters of storage + @param flag bit0= structured text format (else hex string) +*/ +int Xorriso__format_guid(uint8_t guid[16], char *text, int flag); + #endif /* ! Xorriso_pvt_misc_includeD */ diff --git a/xorriso/opts_a_c.c b/xorriso/opts_a_c.c index ab9d0fca..c4f25866 100644 --- a/xorriso/opts_a_c.c +++ b/xorriso/opts_a_c.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2017 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -295,9 +295,10 @@ ex:; int Xorriso_option_append_partition(struct XorrisO *xorriso, char *partno_text, char *type_text, char *image_path, int flag) { - int partno = 0, type_code= -1, i; + int partno = 0, type_code= -1, i, guid_valid= 0, ret; unsigned int unum; char *tpt; + uint8_t guid[16]; static char *part_type_names[] = {"FAT12", "FAT16", "Linux", "", NULL}; static int part_type_codes[] = { 0x01, 0x06, 0x83, 0x00}; @@ -314,6 +315,12 @@ int Xorriso_option_append_partition(struct XorrisO *xorriso, char *partno_text, break; if(part_type_names[i] != NULL) type_code= part_type_codes[i]; + if(type_code < 0) { + ret= Xorriso_parse_type_guid(xorriso, type_text, guid, &type_code, 0); + if(ret > 0) + guid_valid= 1; + } + if(type_code < 0) { tpt= type_text; if(strncmp(tpt, "0x", 2) == 0) @@ -325,7 +332,7 @@ int Xorriso_option_append_partition(struct XorrisO *xorriso, char *partno_text, if(unum > 0xff) { bad_type:; sprintf(xorriso->info_text, - "-append_partition: Partition type '%s' is out of range (0x00...0xff)", +"-append_partition: Partition type '%s' is out of range (0x00...0xff or GUID)", type_text); Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); return(0); @@ -341,6 +348,12 @@ bad_type:; return(-1); } xorriso->appended_part_types[partno - 1]= type_code; + if(guid_valid) { + memcpy(xorriso->appended_part_type_guids[partno - 1], guid, 16); + xorriso->appended_part_gpt_flags[partno - 1]|= 1; + } else { + xorriso->appended_part_gpt_flags[partno - 1]&= ~1; + } return(1); } @@ -683,7 +696,7 @@ int Xorriso_option_boot_image(struct XorrisO *xorriso, char *form, char *treatment, int flag) { int was_ok= 1, ret, isolinux_grub= 0, count, bin_count, parm_len; - int palohdrversion; + int palohdrversion, type_code; unsigned int u; char *formpt, *treatpt, *eff_path= NULL, *eqpt, parm[20]; uint8_t sn[8]; @@ -1097,6 +1110,7 @@ treatment_patch:; } else if(strncmp(treatpt, "iso_mbr_part_type=", 18) == 0) { ret= 256; + xorriso->iso_mbr_part_flag&= ~1; if(strncmp(treatpt + 18, "default", 2) == 0) { ret= -1; } else if(strncmp(treatpt + 18, "0x", 2) == 0) { @@ -1104,8 +1118,16 @@ treatment_patch:; sscanf(treatpt + 20, "%x", &u); ret= u; } else { - sscanf(treatpt + 18, "%d", &ret); + ret= Xorriso_parse_type_guid(xorriso, treatpt + 18, + xorriso->iso_gpt_type_guid, &type_code, 0); + if(ret > 0) { + ret= type_code; + xorriso->iso_mbr_part_flag|= 1; + } else { + sscanf(treatpt + 18, "%d", &ret); + } } + if(ret < -1 || ret > 0xff) { sprintf(xorriso->info_text, "-boot_image %s : iso_mbr_part_type='%s' wrong (\"default\", 0 ... 255, 0x00 ... 0xff)", diff --git a/xorriso/text_io.c b/xorriso/text_io.c index e68a4793..13499f9e 100644 --- a/xorriso/text_io.c +++ b/xorriso/text_io.c @@ -1,7 +1,7 @@ /* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2016 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -3067,11 +3067,15 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag) is_default= (xorriso->iso_mbr_part_type == -1); sprintf(line, "-boot_image any iso_mbr_part_type="); - if(xorriso->iso_mbr_part_type == -1) + if(xorriso->iso_mbr_part_flag & 1) { + Xorriso__format_guid(xorriso->iso_gpt_type_guid, line + strlen(line), 0); + strcat(line, "\n"); + } else if(xorriso->iso_mbr_part_type == -1) { sprintf(line + strlen(line), "default\n"); - else + } else { sprintf(line + strlen(line), "0x%-2.2x\n", (unsigned int) xorriso->iso_mbr_part_type); + } if(!(is_default && no_defaults)) Xorriso_status_result(xorriso,filter,fp,flag&2); diff --git a/xorriso/write_run.c b/xorriso/write_run.c index eeb26259..96521d3c 100644 --- a/xorriso/write_run.c +++ b/xorriso/write_run.c @@ -958,11 +958,16 @@ int Xorriso_make_iso_write_opts(struct XorrisO *xorriso, IsoImage *image, isoburn_igopt_set_partition_img(sopts, i + 1, xorriso->appended_part_types[i], part_image); isoburn_igopt_set_part_flag(sopts, i + 1, intvl_string); + isoburn_igopt_set_part_type_guid(sopts, i + 1, + xorriso->appended_part_type_guids[i], + xorriso->appended_part_gpt_flags[i] & 1); } isoburn_igopt_set_appended_as_gpt(sopts, xorriso->appended_as_gpt); isoburn_igopt_set_appended_as_apm(sopts, xorriso->appended_as_apm); isoburn_igopt_set_part_like_isohybrid(sopts, xorriso->part_like_isohybrid); isoburn_igopt_set_iso_mbr_part_type(sopts, xorriso->iso_mbr_part_type); + 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); isoburn_igopt_set_disc_label(sopts, xorriso->ascii_disc_label); isoburn_igopt_set_hfsp_serial_number(sopts, xorriso->hfsp_serial_number); @@ -3125,20 +3130,14 @@ ex:; } -int Xorriso_parse_gpt_guid(struct XorrisO *xorriso, char *text, int flag) +/* @param flag bit0= no error message +*/ +int Xorriso_parse_guid(struct XorrisO *xorriso, char *text, + uint8_t guid[16], int flag) { int bin_count= 0, ret; uint8_t u[16], tr; - if(strcmp(text, "random") == 0) { - xorriso->gpt_guid_mode= 0; - return(1); - } - if(strcmp(text, "modification-date") == 0 || - strcmp(text, "volume_date_uuid") == 0) { - xorriso->gpt_guid_mode= 2; - return(1); - } /* Try RFC 4122 : big endian XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Translate to UEFI: first three components to little-endian */ @@ -3163,8 +3162,7 @@ int Xorriso_parse_gpt_guid(struct XorrisO *xorriso, char *text, int flag) ret= Hex_to_bin(text + 24, 6, &bin_count, u + 10, 0); if(ret < 0 || bin_count != 6) goto malformed; - xorriso->gpt_guid_mode= 1; - memcpy(xorriso->gpt_guid, u, 16); + memcpy(guid, u, 16); return(1); } } @@ -3172,15 +3170,67 @@ int Xorriso_parse_gpt_guid(struct XorrisO *xorriso, char *text, int flag) ret= Hex_to_bin(text, 16, &bin_count, u, 0); if(ret < 0 || bin_count != 16) goto malformed; - xorriso->gpt_guid_mode= 1; - memcpy(xorriso->gpt_guid, u, 16); + memcpy(guid, u, 16); return(1); } malformed:; - sprintf(xorriso->info_text, "Malformed GUID string: "); - Text_shellsafe(text, xorriso->info_text, 1); - Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + if(!(flag & 1)) { + sprintf(xorriso->info_text, "Malformed GUID string: "); + Text_shellsafe(text, xorriso->info_text, 1); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + } + return(0); +} + + +int Xorriso_parse_gpt_guid(struct XorrisO *xorriso, char *text, int flag) +{ + int ret; + + if(strcmp(text, "random") == 0) { + xorriso->gpt_guid_mode= 0; + return(1); + } + if(strcmp(text, "modification-date") == 0 || + strcmp(text, "volume_date_uuid") == 0) { + xorriso->gpt_guid_mode= 2; + return(1); + } + ret= Xorriso_parse_guid(xorriso, text, xorriso->gpt_guid, 0); + if(ret <= 0) + return(ret); + xorriso->gpt_guid_mode= 1; + return(1); +} + +/* @return Tells the recognition status + 0= not recognized as GUID + 1= non-EFI type GUID + 2= EFI type GUID +*/ +int Xorriso_parse_type_guid(struct XorrisO *xorriso, char *text, + uint8_t guid[16], int *mbr_type, int flag) +{ + int j, ret; + static uint8_t efi_sys_uuid[16] = { + 0x28, 0x73, 0x2a, 0xc1, 0x1f, 0xf8, 0xd2, 0x11, + 0xba, 0x4b, 0x00, 0xa0, 0xc9, 0x3e, 0xc9, 0x3b + }; + + ret= Xorriso_parse_guid(xorriso, text, guid, 1); + if(ret > 0) { + for(j= 0; j < 16; j++) + if(guid[j] != efi_sys_uuid[j]) + break; + if(j >= 16) { + *mbr_type= 0xef; + return(2); + } else { + *mbr_type= 0x83; + return(1); + } + } return(0); } diff --git a/xorriso/xorriso.1 b/xorriso/xorriso.1 index f6ddee6d..43835e15 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.1, Nov 11, 2018" +.TH XORRISO 1 "Version 1.5.1, Feb 16, 2019" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -3226,7 +3226,7 @@ is not the same as \-indev. The Source component is ignored. "appended_partition_NNN" with a decimal number NNN works only for \-boot_image bootspecs which announce El Torito boot image paths: bin_path=, efi_path=. The number gives the partition number as used with the corresponding -option \-append_partition. +command \-append_partition. .br The component Interval consists of two byte address numbers separated by a "\-" character. E.g. "0\-429" means to read bytes 0 to 429. .br @@ -3473,13 +3473,20 @@ Appended partitions get mentioned in APM if other APM partitions emerge. .br \fB\-boot_image any iso_mbr_part_type=\fRnumber sets the partition type of the MBR partition which represents the ISO or at least protects it. +.br Number may be 0x00 to 0xff. The text "default" re\-enables the default types of the various occasions to create an ISO MBR partition. -.br This is without effect if no such partition emerges by other settings or if the partition type is prescribed mandatorily like 0xee for GPT protective MBR or 0x96 for CHRP. .br +If instead a type_guid is given by a 32\-digit hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or by a structured text like +EBD0A0A2\-B9E5\-4433\-87C0\-68B6B72699C7, then it will be used as partition type +if the ISO filesystem appears as partition in GPT. +In MBR, C12A7328\-F81F\-11D2\-BA4B\-00A0C93EC93B will be mapped to 0xef. +Any other GUID will be mapped to 0x83. +.br \fBgrub2_mbr=\fRdisk_path works like "any" system_area= with additional 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. @@ -3695,8 +3702,14 @@ MBR features, number 2 would be the most natural choice. .br The type_code may be "FAT12", "FAT16", "Linux", or a hexadecimal number between 0x00 and 0xff. Not all those numbers will -yield usable results. For a list of codes search the Internet for -"Partition Types" or run fdisk command "L". +yield usable results. For a list of MBR partition type codes search the +Internet for "Partition Types" or run fdisk command "L". +.br +type_code may also be a type GUID as plain hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or as structured text like +EBD0A0A2\-B9E5\-4433\-87C0\-68B6B72699C7. It will be used if the partition is +mentioned in GPT. In MBR, C12A7328\-F81F\-11D2\-BA4B\-00A0C93EC93B will be mapped +to 0xef. Any other GUID will be mapped to 0x83. .br If some other command causes the production of GPT, then the appended partitions will be mentioned there too. @@ -6183,7 +6196,7 @@ Thomas Schmitt .br for libburnia\-project.org .SH COPYRIGHT -Copyright (c) 2007 \- 2018 Thomas Schmitt +Copyright (c) 2007 \- 2019 Thomas Schmitt .br Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of \fBxorriso\fR. diff --git a/xorriso/xorriso.info b/xorriso/xorriso.info index 23e1e82f..e5e99055 100644 --- a/xorriso/xorriso.info +++ b/xorriso/xorriso.info @@ -2732,7 +2732,7 @@ The component Flags modifies the further interpretation: "appended_partition_NNN" with a decimal number NNN works only for -boot_image bootspecs which announce El Torito boot image paths: bin_path=, efi_path=. The number gives the partition number as used -with the corresponding option -append_partition. +with the corresponding command -append_partition. The component Interval consists of two byte address numbers separated by a "-" character. E.g. "0-429" means to read bytes 0 to 429. The component Zeroizers consists of zero or more comma separated @@ -2927,12 +2927,18 @@ Examples: APM if other APM partitions emerge. *-boot_image any iso_mbr_part_type=*number sets the partition type of the MBR partition which represents the ISO or at least protects - it. Number may be 0x00 to 0xff. The text "default" re-enables the + it. + Number may be 0x00 to 0xff. The text "default" re-enables the default types of the various occasions to create an ISO MBR - partition. - This is without effect if no such partition emerges by other - settings or if the partition type is prescribed mandatorily like - 0xee for GPT protective MBR or 0x96 for CHRP. + partition. This is without effect if no such partition emerges by + other settings or if the partition type is prescribed mandatorily + like 0xee for GPT protective MBR or 0x96 for CHRP. + If instead a type_guid is given by a 32-digit hex string like + a2a0d0ebe5b9334487c068b6b72699c7 or by a structured text like + EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, then it will be used as + partition type if the ISO filesystem appears as partition in GPT. + In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped to + 0xef. Any other GUID will be mapped to 0x83. *grub2_mbr=*disk_path works like "any" system_area= with additional 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 @@ -3114,8 +3120,14 @@ Examples: natural choice. The type_code may be "FAT12", "FAT16", "Linux", or a hexadecimal number between 0x00 and 0xff. Not all those numbers will yield - usable results. For a list of codes search the Internet for - "Partition Types" or run fdisk command "L". + usable results. For a list of MBR partition type codes search the + Internet for "Partition Types" or run fdisk command "L". + type_code may also be a type GUID as plain hex string like + a2a0d0ebe5b9334487c068b6b72699c7 or as structured text like + EBD0A0A2-B9E5-4433-87C0-68B6B72699C7. It will be used if the + partition is mentioned in GPT. In MBR, + C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped to 0xef. Any + other GUID will be mapped to 0x83. If some other command causes the production of GPT, then the appended partitions will be mentioned there too. The disk_path must provide the necessary data bytes at commit time. @@ -5234,7 +5246,7 @@ for libburnia-project.org 15.2 Copyright ============== -Copyright (c) 2007 - 2018 Thomas Schmitt +Copyright (c) 2007 - 2019 Thomas Schmitt Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of 'xorriso'. If you make use of the license to derive modified versions of 'xorriso' then @@ -5269,7 +5281,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 415) + (line 421) * -application_id sets application id: SetWrite. (line 191) * -application_use sets application use field: SetWrite. (line 266) * -as emulates mkisofs or cdrecord: Emulation. (line 13) @@ -5513,12 +5525,12 @@ 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 406) +* APM block size: Bootable. (line 412) * APM, _definition: Extras. (line 42) * Appendable media, _definition: Media. (line 38) -* Appended Filesystem Image, -append_partition: Bootable. (line 415) -* Appended partition, in APM: Bootable. (line 283) -* Appended partition, in MBR or GPT: Bootable. (line 276) +* Appended Filesystem Image, -append_partition: Bootable. (line 421) +* Appended partition, in APM: Bootable. (line 289) +* Appended partition, in MBR or GPT: Bootable. (line 282) * Automatic execution order, of arguments, -x: ArgSort. (line 16) * Backslash Interpretation, _definition: Processing. (line 53) * Backup, enable fast incremental, -disk_dev_ino: Loading. (line 246) @@ -5536,15 +5548,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Character set, learn from image, -auto_charset: Loading. (line 125) * Character Set, of terminal, -local_charset: Charset. (line 57) * Character Set, _definition: Charset. (line 6) -* CHRP partition, _definition: Bootable. (line 288) +* CHRP partition, _definition: Bootable. (line 294) * Closed media, _definition: Media. (line 44) * Comment, #: Scripting. (line 156) * Control, signal handling, -signal_handling: Exception. (line 66) * Create, new ISO image, _definition: Methods. (line 7) -* Cylinder alignment, _definition: Bootable. (line 332) -* Cylinder size, _definition: Bootable. (line 317) +* Cylinder alignment, _definition: Bootable. (line 338) +* Cylinder size, _definition: Bootable. (line 323) * Damaged track and session, close, -close_damaged: Writing. (line 164) -* DEC Alpha SRM boot sector, production: Bootable. (line 392) +* DEC Alpha SRM boot sector, production: Bootable. (line 398) * Delete, from ISO image, -rm: Manip. (line 20) * Delete, from ISO image, -rm_r: Manip. (line 26) * Delete, ISO directory, -rmdir: Manip. (line 29) @@ -5575,7 +5587,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 297) +* EFI system partition, _definition: Bootable. (line 303) * El Torito, _definition: Extras. (line 19) * Emulation, -as: Emulation. (line 13) * Emulation, .mkisofsrc, -read_mkisofsrc: Emulation. (line 155) @@ -5605,10 +5617,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 136) -* HFS+ allocation block size: Bootable. (line 403) -* HFS+ serial number: Bootable. (line 400) +* HFS+ allocation block size: Bootable. (line 409) +* HFS+ serial number: Bootable. (line 406) * hidden, set in ISO image, -hide: Manip. (line 177) -* HP-PA boot sector, production: Bootable. (line 375) +* HP-PA boot sector, production: Bootable. (line 381) * Image reading, cache size, -data_cache_size: Loading. (line 352) * Image, demand volume ID, -assert_volid: Loading. (line 113) * Image, discard pending changes, -rollback: Writing. (line 9) @@ -5664,7 +5676,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Linux device type, -scsi_dev_family: AqDrive. (line 43) * List delimiter, _definition: Processing. (line 9) * Local Character Set, _definition: Charset. (line 11) -* MBR bootable/active flag, enforce: Bootable. (line 343) +* MBR bootable/active flag, enforce: Bootable. (line 349) * MBR, set, -boot_image system_area=: Bootable. (line 200) * MBR, _definition: Extras. (line 27) * MD5, control handling, -md5: Loading. (line 192) @@ -5672,7 +5684,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 354) +* MIPS boot file, activation: Bootable. (line 360) * mkisofs, Emulation: Emulation. (line 17) * Modifying, _definition: Methods. (line 28) * Multi-session media, _definition: Media. (line 7) @@ -5699,15 +5711,15 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Ownership, global in ISO image, -uid: SetWrite. (line 284) * Ownership, in ISO image, -chown: Manip. (line 43) * Ownership, in ISO image, -chown_r: Manip. (line 47) -* Partition offset, _definition: Bootable. (line 307) -* Partition table, _definition: Bootable. (line 257) +* Partition offset, _definition: Bootable. (line 313) +* Partition table, _definition: Bootable. (line 263) * Pathspec, _definition: SetInsert. (line 117) * 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 25) * Permissions, in ISO image, -chmod: Manip. (line 55) * Permissions, in ISO image, -chmod_r: Manip. (line 66) -* PReP partition, _definition: Bootable. (line 292) +* PReP partition, _definition: Bootable. (line 298) * Problems, reporting: Bugreport. (line 6) * Process, consolidate text output, -pkt_output: Frontend. (line 7) * Process, control abort on error, -abort_on: Exception. (line 27) @@ -5767,8 +5779,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 365) -* SUN SPARC boot images, activation: Bootable. (line 438) +* SUN Disk Label, production: Bootable. (line 371) +* SUN SPARC boot images, activation: Bootable. (line 450) * Symbolic link, create, -lns: Insert. (line 181) * System area, _definition: Bootable. (line 200) * Table-of-content, search sessions, -rom_toc_scan: Loading. (line 298) @@ -5837,40 +5849,40 @@ Node: Filter104114 Node: Writing108736 Node: SetWrite118892 Node: Bootable143651 -Node: Jigdo169846 -Node: Charset174105 -Node: Exception177434 -Node: DialogCtl183563 -Node: Inquiry186165 -Node: Navigate195049 -Node: Verify203506 -Node: Restore213977 -Node: Emulation222590 -Node: Scripting233049 -Node: Frontend240832 -Node: Examples250458 -Node: ExDevices251636 -Node: ExCreate252297 -Node: ExDialog253597 -Node: ExGrowing254868 -Node: ExModifying255677 -Node: ExBootable256187 -Node: ExCharset256742 -Node: ExPseudo257638 -Node: ExCdrecord258565 -Node: ExMkisofs258885 -Node: ExGrowisofs260783 -Node: ExException261937 -Node: ExTime262395 -Node: ExIncBackup262853 -Node: ExRestore266879 -Node: ExRecovery267825 -Node: Files268397 -Node: Environ269731 -Node: Seealso270440 -Node: Bugreport271157 -Node: Legal271748 -Node: CommandIdx272760 -Node: ConceptIdx290094 +Node: Jigdo170608 +Node: Charset174867 +Node: Exception178196 +Node: DialogCtl184325 +Node: Inquiry186927 +Node: Navigate195811 +Node: Verify204268 +Node: Restore214739 +Node: Emulation223352 +Node: Scripting233811 +Node: Frontend241594 +Node: Examples251220 +Node: ExDevices252398 +Node: ExCreate253059 +Node: ExDialog254359 +Node: ExGrowing255630 +Node: ExModifying256439 +Node: ExBootable256949 +Node: ExCharset257504 +Node: ExPseudo258400 +Node: ExCdrecord259327 +Node: ExMkisofs259647 +Node: ExGrowisofs261545 +Node: ExException262699 +Node: ExTime263157 +Node: ExIncBackup263615 +Node: ExRestore267641 +Node: ExRecovery268587 +Node: Files269159 +Node: Environ270493 +Node: Seealso271202 +Node: Bugreport271919 +Node: Legal272510 +Node: CommandIdx273522 +Node: ConceptIdx290856  End Tag Table diff --git a/xorriso/xorriso.texi b/xorriso/xorriso.texi index 022f2ac5..6e0c99e4 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.1, Nov 11, 2018" +@c man .TH XORRISO 1 "Version 1.5.1, Feb 16, 2019" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -3762,7 +3762,7 @@ is not the same as -indev. The Source component is ignored. "appended_partition_NNN" with a decimal number NNN works only for -boot_image bootspecs which announce El Torito boot image paths: bin_path=, efi_path=. The number gives the partition number as used with the corresponding -option -append_partition. +command -append_partition. @* The component Interval consists of two byte address numbers separated by a "-" character. E.g. "0-429" means to read bytes 0 to 429. @* @@ -4021,13 +4021,20 @@ Appended partitions get mentioned in APM if other APM partitions emerge. @* @strong{-boot_image any iso_mbr_part_type=}number sets the partition type of the MBR partition which represents the ISO or at least protects it. +@* Number may be 0x00 to 0xff. The text "default" re-enables the default types of the various occasions to create an ISO MBR partition. -@* This is without effect if no such partition emerges by other settings or if the partition type is prescribed mandatorily like 0xee for GPT protective MBR or 0x96 for CHRP. @* +If instead a type_guid is given by a 32-digit hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or by a structured text like +EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, then it will be used as partition type +if the ISO filesystem appears as partition in GPT. +In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped to 0xef. +Any other GUID will be mapped to 0x83. +@* @strong{grub2_mbr=}disk_path works like "any" system_area= with additional 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. @@ -4265,8 +4272,14 @@ MBR features, number 2 would be the most natural choice. @* The type_code may be "FAT12", "FAT16", "Linux", or a hexadecimal number between 0x00 and 0xff. Not all those numbers will -yield usable results. For a list of codes search the Internet for -"Partition Types" or run fdisk command "L". +yield usable results. For a list of MBR partition type codes search the +Internet for "Partition Types" or run fdisk command "L". +@* +type_code may also be a type GUID as plain hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or as structured text like +EBD0A0A2-B9E5-4433-87C0-68B6B72699C7. It will be used if the partition is +mentioned in GPT. In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped +to 0xef. Any other GUID will be mapped to 0x83. @* If some other command causes the production of GPT, then the appended partitions will be mentioned there too. @@ -7238,7 +7251,7 @@ Thomas Schmitt for libburnia-project.org @c man .SH COPYRIGHT @section Copyright -Copyright (c) 2007 - 2018 Thomas Schmitt +Copyright (c) 2007 - 2019 Thomas Schmitt @* Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of @command{xorriso}. diff --git a/xorriso/xorriso_private.h b/xorriso/xorriso_private.h index 702946b7..79649046 100644 --- a/xorriso/xorriso_private.h +++ b/xorriso/xorriso_private.h @@ -2,7 +2,7 @@ /* Command line oriented batch and dialog tool which creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2017 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -495,6 +495,11 @@ struct XorrisO { /* the global context of xorriso */ /* Path and type of image files to be appended as MBR partitions */ char *appended_partitions[Xorriso_max_appended_partitionS]; uint8_t appended_part_types[Xorriso_max_appended_partitionS]; + uint8_t appended_part_type_guids[Xorriso_max_appended_partitionS][16]; + /* Flags in case that appended partitions show up in GPT: + bit0= appended_part_type_guids is valid + */ + uint8_t appended_part_gpt_flags[Xorriso_max_appended_partitionS]; /* If 1: With appended partitions: create protective MBR and mark by GPT */ int appended_as_gpt; /* If 1: With appended partitions: mark by APM */ @@ -507,6 +512,11 @@ struct XorrisO { /* the global context of xorriso */ if not real GPT or CHRP. */ int iso_mbr_part_type; + uint8_t iso_gpt_type_guid[16]; + int iso_mbr_part_flag; + /* Flags in case that the partition table is GPT: + bit0= iso_gpt_type_guid is valid + */ /* See libisoburn.h isoburn_igopt_set_gpt_guid() */ uint8_t gpt_guid[16]; diff --git a/xorriso/xorrisoburn.h b/xorriso/xorrisoburn.h index 6930d0d4..353255a8 100644 --- a/xorriso/xorrisoburn.h +++ b/xorriso/xorrisoburn.h @@ -4,7 +4,7 @@ a command line oriented batch and dialog tool which creates, loads, manipulates and burns ISO 9660 filesystem images. - Copyright 2007-2018 Thomas Schmitt, + Copyright 2007-2019 Thomas Schmitt, Provided under GPL version 2 or later. @@ -642,8 +642,14 @@ int Xorriso_truncate_path_comps(struct XorrisO *xorriso, char *path, int Xorriso_graftable_pathspec(struct XorrisO *xorriso, char *in_pathspec, char *pathspec, int flag); +int Xorriso_parse_guid(struct XorrisO *xorriso, char *text, + uint8_t guid[16], int flag); + int Xorriso_parse_gpt_guid(struct XorrisO *xorriso, char *text, int flag); +int Xorriso_parse_type_guid(struct XorrisO *xorriso, char *text, + uint8_t guid[16], int *mbr_type, int flag); + int Xorriso_format_guid(struct XorrisO *xorriso, uint8_t guid[16], char *line, int flag); diff --git a/xorriso/xorrisofs.1 b/xorriso/xorrisofs.1 index aca8ee07..ed87eff6 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.5.1, Nov 11, 2018" +.TH XORRISOFS 1 "Version 1.5.1, Feb 16, 2019" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -1241,15 +1241,22 @@ No MBR partition of type 0xee emerges, even if GPT gets produced. Gaps between GPT and APM partitions will not be filled by more partitions. Appended partitions get mentioned in APM if other APM partitions emerge. .TP -\fB\-iso_mbr_part_type\fR "default"|number +\fB\-iso_mbr_part_type\fR "default"|number|type_guid Set the partition type -of the MBR partition which represents the ISO or at least protects it. +of the MBR or GPT partition which represents the ISO or at least protects it. +.br Number may be 0x00 to 0xff. The text "default" re\-enables the default types of the various occasions to create an ISO MBR partition. -.br This is without effect if no such partition emerges by other settings or if the partition type is prescribed mandatorily like 0xee for GPT protective MBR or 0x96 for CHRP. +.br +If instead a type_guid is given by a 32\-digit hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or by a structured text like +EBD0A0A2\-B9E5\-4433\-87C0\-68B6B72699C7, then it will be used as partition type +if the ISO filesystem appears as partition in GPT. +In MBR, C12A7328\-F81F\-11D2\-BA4B\-00A0C93EC93B will be mapped to 0xef. +Any other GUID will be mapped to 0x83. .TP \fB--protective-msdos-label\fR Patch the System Area by a simple PC\-DOS partition table where partition 1 @@ -1335,7 +1342,14 @@ The type_code may be "FAT12", "FAT16", "Linux", or a hexadecimal number between 0x00 and 0xff. Not all those numbers will yield usable results. For a list of codes search the Internet for "Partition Types" or run fdisk command "L". -This code matters only with MBR, not with GPT. +If the partition appears in GPT then type_code 0xef is mapped to the EFI System +Partition Type GUID. All others get mapped to Basic Data Type GUID. +.br +type_code may also be a type GUID as plain hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or as structured text like +EBD0A0A2\-B9E5\-4433\-87C0\-68B6B72699C7. It will be used if the partition is +mentioned in GPT. In MBR, C12A7328\-F81F\-11D2\-BA4B\-00A0C93EC93B will be mapped +to 0xef. Any other GUID will be mapped to 0x83. .br If some other command causes the production of GPT, then the appended partitions will be mentioned there too, even if not \-appended_part_as_gpt @@ -2173,7 +2187,7 @@ Thomas Schmitt .br for libburnia\-project.org .SH COPYRIGHT -Copyright (c) 2011 \- 2018 Thomas Schmitt +Copyright (c) 2011 \- 2019 Thomas Schmitt .br Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of xorriso. If you make use diff --git a/xorriso/xorrisofs.info b/xorriso/xorrisofs.info index 604040a8..32a6f4c8 100644 --- a/xorriso/xorrisofs.info +++ b/xorriso/xorrisofs.info @@ -1086,14 +1086,20 @@ Examples: Gaps between GPT and APM partitions will not be filled by more partitions. Appended partitions get mentioned in APM if other APM partitions emerge. --iso_mbr_part_type "default"|number - Set the partition type of the MBR partition which represents the - ISO or at least protects it. Number may be 0x00 to 0xff. The text - "default" re-enables the default types of the various occasions to - create an ISO MBR partition. - This is without effect if no such partition emerges by other - settings or if the partition type is prescribed mandatorily like - 0xee for GPT protective MBR or 0x96 for CHRP. +-iso_mbr_part_type "default"|number|type_guid + Set the partition type of the MBR or GPT partition which represents + the ISO or at least protects it. + Number may be 0x00 to 0xff. The text "default" re-enables the + default types of the various occasions to create an ISO MBR + partition. This is without effect if no such partition emerges by + other settings or if the partition type is prescribed mandatorily + like 0xee for GPT protective MBR or 0x96 for CHRP. + If instead a type_guid is given by a 32-digit hex string like + a2a0d0ebe5b9334487c068b6b72699c7 or by a structured text like + EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, then it will be used as + partition type if the ISO filesystem appears as partition in GPT. + In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped to + 0xef. Any other GUID will be mapped to 0x83. --protective-msdos-label 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 @@ -1163,8 +1169,16 @@ Examples: The type_code may be "FAT12", "FAT16", "Linux", or a hexadecimal number between 0x00 and 0xff. Not all those numbers will yield usable results. For a list of codes search the Internet for - "Partition Types" or run fdisk command "L". This code matters only - with MBR, not with GPT. + "Partition Types" or run fdisk command "L". If the partition + appears in GPT then type_code 0xef is mapped to the EFI System + Partition Type GUID. All others get mapped to Basic Data Type GUID. + + type_code may also be a type GUID as plain hex string like + a2a0d0ebe5b9334487c068b6b72699c7 or as structured text like + EBD0A0A2-B9E5-4433-87C0-68B6B72699C7. It will be used if the + partition is mentioned in GPT. In MBR, + C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped to 0xef. Any + other GUID will be mapped to 0x83. If some other command causes the production of GPT, then the appended partitions will be mentioned there too, even if not -appended_part_as_gpt is given. @@ -1909,7 +1923,7 @@ for libburnia-project.org 11.2 Copyright ============== -Copyright (c) 2011 - 2018 Thomas Schmitt +Copyright (c) 2011 - 2019 Thomas Schmitt Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of xorriso. If you make use of the license to derive modified versions of xorriso then you are @@ -1941,13 +1955,13 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * --embedded-boot Fill System Area e.g. by MBR: SystemArea. (line 79) * --emul-toc enable table-of-content emulation: SetProduct. (line 33) * --for_backup Enable backup fidelity: SetExtras. (line 92) -* --gpt_disk_guid GPT GUID: SystemArea. (line 231) +* --gpt_disk_guid GPT GUID: SystemArea. (line 245) * --grub2-boot-info Patch El Torito boot image: Bootable. (line 109) * --grub2-mbr Install modern GRUB2 MBR: SystemArea. (line 81) -* --grub2-sparc-core SUN SPARC core file: SystemArea. (line 286) +* --grub2-sparc-core SUN SPARC core file: SystemArea. (line 300) * --hardlinks Recording of hardlink relations: SetExtras. (line 130) * --mbr-force-bootable Enforce MBR bootable/active flag: SystemArea. - (line 139) + (line 145) * --md5 Recording of MD5 checksums: SetExtras. (line 122) * --modification-date set ISO image timestamps: ImageId. (line 70) * --no-emul-toc no table-of-content emulation: SetProduct. (line 41) @@ -1961,7 +1975,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 73) * --old-root-no-md5 disable MD5 with -old-root: SetInsert. (line 91) * --protective-msdos-label Patch System Area partition table: SystemArea. - (line 135) + (line 141) * --quoted_path_list read pathspecs from disk file: SetInsert. (line 12) * --scdbackup_tag Recording of MD5 checksum: SetExtras. (line 138) @@ -1978,16 +1992,16 @@ 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 309) +* -alpha-boot DEC Alpha SRM bootloader: SystemArea. (line 323) * -appended_part_as_apm Appended partitions in APM: SystemArea. - (line 215) + (line 229) * -appended_part_as_gpt Appended partitions in GPT: SystemArea. - (line 209) + (line 223) * -append_partition Append MBR or GPT partition after image: SystemArea. - (line 189) + (line 195) * -appid set Application Id: ImageId. (line 41) * -b El Torito PC-BIOS boot image: Bootable. (line 38) -* -B SUN SPARC boot images: SystemArea. (line 271) +* -B SUN SPARC boot images: SystemArea. (line 285) * -biblio set Biblio File path: ImageId. (line 62) * -boot-info-table Patch El Torito boot image: Bootable. (line 104) * -boot-load-size El Torito boot image load size: Bootable. (line 72) @@ -1998,8 +2012,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 253) -* -chrp-boot-part CHRP partition: SystemArea. (line 244) +* -chrp-boot CHRP partition: SystemArea. (line 267) +* -chrp-boot-part CHRP partition: SystemArea. (line 258) * -copyright set Copyright File path: ImageId. (line 66) * -D allow deep directory hierachies: SetExtras. (line 60) * -d omit trailing dot in ISO file names: SetCompl. (line 50) @@ -2010,7 +2024,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 53) -* -efi-boot-part EFI boot partition: SystemArea. (line 221) +* -efi-boot-part EFI boot partition: SystemArea. (line 235) * -eltorito-alt-boot begin next boot catalog entry: Bootable. (line 47) * -eltorito-boot El Torito PC-BIOS boot image: Bootable. (line 45) * -eltorito-catalog El Torito boot catalog name: Bootable. (line 119) @@ -2056,12 +2070,12 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T (line 15) * -hide-rr-moved set deep directory relocation target: SetExtras. (line 90) -* -hppa-bootloader HP-PA bootloader file: SystemArea. (line 298) -* -hppa-cmdline HP-PA PALO command line: SystemArea. (line 292) -* -hppa-hdrversion HP-PA PALO header version: SystemArea. (line 306) -* -hppa-kernel_32 HP-PA kernel_32 file: SystemArea. (line 300) -* -hppa-kernel_64 HP-PA kernel_64 file: SystemArea. (line 302) -* -hppa-ramdisk HP-PA ramdisk file: SystemArea. (line 304) +* -hppa-bootloader HP-PA bootloader file: SystemArea. (line 312) +* -hppa-cmdline HP-PA PALO command line: SystemArea. (line 306) +* -hppa-hdrversion HP-PA PALO header version: SystemArea. (line 320) +* -hppa-kernel_32 HP-PA kernel_32 file: SystemArea. (line 314) +* -hppa-kernel_64 HP-PA kernel_64 file: SystemArea. (line 316) +* -hppa-ramdisk HP-PA ramdisk file: SystemArea. (line 318) * -input-charset set character set of disk file names: Charset. (line 17) * -iso-level define ISO 9660 limitations: SetCompl. (line 7) @@ -2092,8 +2106,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 260) -* -mipsel-boot MIPS Little Endian boot image: SystemArea. (line 266) +* -mips-boot MIPS Big Endian boot image: SystemArea. (line 274) +* -mipsel-boot MIPS Little Endian boot image: SystemArea. (line 280) * -N omit version number in ISO file names: SetCompl. (line 64) * -no-emul-boot El Torito boot image emulation: Bootable. (line 86) * -no-pad do not add zeros to ISO tree: SetProduct. (line 101) @@ -2109,15 +2123,15 @@ 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 94) -* -partition_cyl_align Image size alignment: SystemArea. (line 178) -* -partition_hd_cyl MBR heads per cylinder: SystemArea. (line 161) +* -partition_cyl_align Image size alignment: SystemArea. (line 184) +* -partition_hd_cyl MBR heads per cylinder: SystemArea. (line 167) * -partition_offset Make mountable by partition 1: SystemArea. - (line 150) -* -partition_sec_hd MBR sectors per head: SystemArea. (line 164) + (line 156) +* -partition_sec_hd MBR sectors per head: SystemArea. (line 170) * -part_like_isohybrid Mark partitions like with isohybrid: SystemArea. (line 120) * -path-list read pathspecs from disk file: SetInsert. (line 8) -* -prep-boot-part PReP partition: SystemArea. (line 255) +* -prep-boot-part PReP partition: SystemArea. (line 269) * -preparer set Preparer Id: ImageId. (line 55) * -prev-session set path for loading existing ISO image: Loading. (line 21) @@ -2134,8 +2148,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 74) -* -sparc-boot SUN SPARC boot images: SystemArea. (line 282) -* -sparc-label SUN Disk Label text: SystemArea. (line 284) +* -sparc-boot SUN SPARC boot images: SystemArea. (line 296) +* -sparc-label SUN Disk Label text: SystemArea. (line 298) * -sysid set System Id: ImageId. (line 43) * -transparent-compression enable recognition of zisofs files: SetInsert. (line 53) @@ -2165,7 +2179,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Abstract File, set path, -abstract: ImageId. (line 57) * ACL, record and load, --acl: SetExtras. (line 103) * APM, mark appended partitions, -appended_part_as_apm: SystemArea. - (line 215) + (line 229) * APM, _definition: SystemArea. (line 16) * Application Id, set, -A, -appid: ImageId. (line 34) * Backup, enable fidelity, --for_backup: SetExtras. (line 92) @@ -2189,31 +2203,31 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Bootability, boot image patching, -boot-info-table: Bootable. (line 104) * Bootability, bootable MBR partition, --mbr-force-bootable: SystemArea. - (line 139) -* Bootability, control, --grub2-sparc-core: SystemArea. (line 286) + (line 145) +* Bootability, control, --grub2-sparc-core: SystemArea. (line 300) * Bootability, control, --efi-boot: Bootable. (line 59) -* Bootability, control, -alpha-boot: SystemArea. (line 309) +* Bootability, control, -alpha-boot: SystemArea. (line 323) * Bootability, control, -b, -eltorito-boot: Bootable. (line 38) -* Bootability, control, -B, -sparc-boot: SystemArea. (line 271) +* Bootability, control, -B, -sparc-boot: SystemArea. (line 285) * Bootability, control, -e: Bootable. (line 53) * Bootability, control, -eltorito-platform: Bootable. (line 63) -* Bootability, control, -hppa-bootloader: SystemArea. (line 298) -* Bootability, control, -hppa-cmdline: SystemArea. (line 292) -* Bootability, control, -hppa-hdrversion: SystemArea. (line 306) -* Bootability, control, -hppa-kernel_32: SystemArea. (line 300) -* Bootability, control, -hppa-kernel_64: SystemArea. (line 302) -* Bootability, control, -hppa-ramdisk: SystemArea. (line 304) -* Bootability, control, -mips-boot: SystemArea. (line 260) -* Bootability, control, -mipsel-boot: SystemArea. (line 266) +* Bootability, control, -hppa-bootloader: SystemArea. (line 312) +* Bootability, control, -hppa-cmdline: SystemArea. (line 306) +* Bootability, control, -hppa-hdrversion: SystemArea. (line 320) +* Bootability, control, -hppa-kernel_32: SystemArea. (line 314) +* Bootability, control, -hppa-kernel_64: SystemArea. (line 316) +* Bootability, control, -hppa-ramdisk: SystemArea. (line 318) +* Bootability, control, -mips-boot: SystemArea. (line 274) +* Bootability, control, -mipsel-boot: SystemArea. (line 280) * Bootability, El Torito section id string, -eltorito-id: Bootable. (line 93) * Bootability, El Torito selection criteria, -eltorito-selcrit: Bootable. (line 100) * Bootability, fill System Area e.g. by MBR, -G, --embedded-boot, -generic-boot: SystemArea. (line 68) -* Bootability, for CHRP, -chrp-boot-part: SystemArea. (line 244) -* Bootability, for EFI, -efi-boot-part: SystemArea. (line 221) -* Bootability, for PReP, -prep-boot-part: SystemArea. (line 255) +* Bootability, for CHRP, -chrp-boot-part: SystemArea. (line 258) +* Bootability, for EFI, -efi-boot-part: SystemArea. (line 235) +* Bootability, for PReP, -prep-boot-part: SystemArea. (line 269) * Bootability, install ISOLINUX isohybrid MBR, -isohybrid-mbr: SystemArea. (line 87) * Bootability, install modern GRUB2 MBR, --grub2-mbr: SystemArea. @@ -2230,8 +2244,8 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Bootability, partitions like with isohybrid, -part_like_isohybrid: SystemArea. (line 120) * Bootability, patch System Area partition table, --protective-msdos-label: SystemArea. - (line 135) -* Bootability, SUN Disk Label text, -sparc-label: SystemArea. (line 284) + (line 141) +* Bootability, SUN Disk Label text, -sparc-label: SystemArea. (line 298) * Bootability, type of ISO MBR partition, -iso_mbr_part_type: SystemArea. (line 127) * Bugs, reporting: Bugreport. (line 6) @@ -2250,7 +2264,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Disk files, exclude, -hide-list: SetInsert. (line 44) * Disk files, exclude, -m, -exclude, -x, -old-exclude: SetInsert. (line 31) -* Disk GUID, for GPT, --gpt_disk_guid: SystemArea. (line 231) +* Disk GUID, for GPT, --gpt_disk_guid: SystemArea. (line 245) * disk_path, _definition: Insert. (line 7) * ECMA-119, _definition: Standards. (line 6) * El Torito, _definition: Bootable. (line 13) @@ -2259,7 +2273,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * File timestamps, set all, --set_all_file_dates: SetExtras. (line 35) * Forced output, control, --stdio_sync: SetProduct. (line 23) * GPT, mark appended partitions, -appended_part_as_gpt: SystemArea. - (line 209) + (line 223) * GPT, _definition: SystemArea. (line 13) * Group, for all files, -gid: SetProduct. (line 83) * HFS+, enables production: SetExtras. (line 164) @@ -2277,7 +2291,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 178) +* Image size, alignment, -partition_cyl_align: SystemArea. (line 184) * Incremental insertion, disable disk ino, --old-root-no-ino: SetInsert. (line 73) * Incremental insertion, disable MD5, --old-root-no-md5: SetInsert. @@ -2331,16 +2345,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 130) -* MBR, GPT, append partition, -append_partition: SystemArea. (line 189) -* MBR, sectors per head, -partition_sec_hd: SystemArea. (line 161) -* MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 164) +* MBR, GPT, append partition, -append_partition: SystemArea. (line 195) +* MBR, sectors per head, -partition_sec_hd: SystemArea. (line 167) +* MBR, sectors per head, -partition_sec_hd <1>: SystemArea. (line 170) * MBR, _definition: SystemArea. (line 9) * MD5, record and load, --md5: SetExtras. (line 122) * 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 150) + (line 156) * Options, list, -help: Miscellaneous. (line 21) * Output file, set address, -o, -output: SetProduct. (line 8) * Ownership, for all files, -uid: SetProduct. (line 79) @@ -2400,23 +2414,23 @@ Node: SetHide33398 Node: ImageId34702 Node: Bootable38984 Node: SystemArea45270 -Node: Charset62636 -Node: Jigdo63661 -Node: Miscellaneous67938 -Node: Examples69583 -Node: ExSimple70077 -Node: ExGraft70560 -Node: ExMkisofs71860 -Node: ExGrowisofs73669 -Node: ExIncBackup74859 -Node: ExIncBckAcc78036 -Node: ExBootable79741 -Node: Files83923 -Node: Environ85018 -Node: Seealso85789 -Node: Bugreport86440 -Node: Legal87033 -Node: CommandIdx87930 -Node: ConceptIdx103797 +Node: Charset63502 +Node: Jigdo64527 +Node: Miscellaneous68804 +Node: Examples70449 +Node: ExSimple70943 +Node: ExGraft71426 +Node: ExMkisofs72726 +Node: ExGrowisofs74535 +Node: ExIncBackup75725 +Node: ExIncBckAcc78902 +Node: ExBootable80607 +Node: Files84789 +Node: Environ85884 +Node: Seealso86655 +Node: Bugreport87306 +Node: Legal87899 +Node: CommandIdx88796 +Node: ConceptIdx104663  End Tag Table diff --git a/xorriso/xorrisofs.texi b/xorriso/xorrisofs.texi index 8192daa2..e8357299 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.5.1, Nov 11, 2018" +@c man .TH XORRISOFS 1 "Version 1.5.1, Feb 16, 2019" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -1645,17 +1645,24 @@ No MBR partition of type 0xee emerges, even if GPT gets produced. Gaps between GPT and APM partitions will not be filled by more partitions. Appended partitions get mentioned in APM if other APM partitions emerge. @c man .TP -@item -iso_mbr_part_type "default"|number +@item -iso_mbr_part_type "default"|number|type_guid @kindex -iso_mbr_part_type Set type of ISO MBR partition @cindex Bootability, type of ISO MBR partition, -iso_mbr_part_type Set the partition type -of the MBR partition which represents the ISO or at least protects it. +of the MBR or GPT partition which represents the ISO or at least protects it. +@* Number may be 0x00 to 0xff. The text "default" re-enables the default types of the various occasions to create an ISO MBR partition. -@* This is without effect if no such partition emerges by other settings or if the partition type is prescribed mandatorily like 0xee for GPT protective MBR or 0x96 for CHRP. +@* +If instead a type_guid is given by a 32-digit hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or by a structured text like +EBD0A0A2-B9E5-4433-87C0-68B6B72699C7, then it will be used as partition type +if the ISO filesystem appears as partition in GPT. +In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped to 0xef. +Any other GUID will be mapped to 0x83. @c man .TP @item @minus{}@minus{}protective-msdos-label @kindex @minus{}@minus{}protective-msdos-label Patch System Area partition table @@ -1755,7 +1762,14 @@ The type_code may be "FAT12", "FAT16", "Linux", or a hexadecimal number between 0x00 and 0xff. Not all those numbers will yield usable results. For a list of codes search the Internet for "Partition Types" or run fdisk command "L". -This code matters only with MBR, not with GPT. +If the partition appears in GPT then type_code 0xef is mapped to the EFI System +Partition Type GUID. All others get mapped to Basic Data Type GUID. +@* +type_code may also be a type GUID as plain hex string like +a2a0d0ebe5b9334487c068b6b72699c7 or as structured text like +EBD0A0A2-B9E5-4433-87C0-68B6B72699C7. It will be used if the partition is +mentioned in GPT. In MBR, C12A7328-F81F-11D2-BA4B-00A0C93EC93B will be mapped +to 0xef. Any other GUID will be mapped to 0x83. @* If some other command causes the production of GPT, then the appended partitions will be mentioned there too, even if not -appended_part_as_gpt @@ -2836,7 +2850,7 @@ Thomas Schmitt for libburnia-project.org @c man .SH COPYRIGHT @section Copyright -Copyright (c) 2011 - 2018 Thomas Schmitt +Copyright (c) 2011 - 2019 Thomas Schmitt @* Permission is granted to distribute this text freely. It shall only be modified in sync with the technical properties of xorriso. If you make use