diff --git a/xorriso/emulators.c b/xorriso/emulators.c index 125320e0..02e77e2b 100644 --- a/xorriso/emulators.c +++ b/xorriso/emulators.c @@ -664,7 +664,7 @@ int Xorriso_genisofs_count_args(struct XorrisO *xorriso, int argc, char **argv, "-hfsplus-block-size", "-apm-block-size", "--grub2-mbr", "--grub2-sparc-core", "--sort-weight-list", "--sort-weight-patterns", "-hppa-hdrversion", "-file_name_limit", "--set_all_file_dates", - "--gpt_disk_guid", "-iso_mbr_part_type", + "--gpt_disk_guid", "-iso_mbr_part_type", "-eltorito-platform", "" }; static char arg2_options[][41]= { @@ -857,6 +857,7 @@ int Xorriso_genisofs_help(struct XorrisO *xorriso, int flag) " Specify the checksum types desired for the output image (in .jigdo)", " -checksum_algorithm_template alg1,alg2,...", " Specify the checksum types desired for the output jigdo template", +" -eltorito-platform Set El Torito platform id for the next boot entry", " -b FILE, -eltorito-boot FILE", " Set El Torito boot image name", " -eltorito-alt-boot Start specifying alternative El Torito boot parameters", @@ -1269,6 +1270,44 @@ ex:; } +int Xorriso_genisofs_platform(struct XorrisO *xorriso, char *id, int flag) +{ + unsigned int u; + char re_id[64]; + + if(strcmp(id, "x86") == 0) + return(0); + else if(strcmp(id, "PPC") == 0) + return(1); + else if(strcmp(id, "Mac") == 0) + return(2); + else if(strcmp(id, "efi") == 0) + return(0xef); + + u= 0x100; + if(strncmp(id, "0x", 2) == 0) { + sscanf(id + 2, "%x", &u); + } else { + sscanf(id, "%u", &u); + sprintf(re_id, "%u", u); + if(strcmp(id, re_id) != 0) + goto wrong_id; + } + if(u <= 0xff) + return((int) u); + +wrong_id:; + sprintf(xorriso->info_text, + "Unrecognized El Torito Platform Id : '%.16s%s'", + id, strlen(id) > 16 ? "..." : ""); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0); + sprintf(xorriso->info_text, + "Recognizable are: x86, PPC, Mac, efi, [0...255], [0x00...0xff]"); + Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "HINT", 0); + return(-1); +} + + /* micro emulation of mkisofs */ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, int argc, char **argv, int flag) @@ -1284,6 +1323,7 @@ int Xorriso_genisofs(struct XorrisO *xorriso, char *whom, int old_root_md5= 1, old_root_dev= 0, old_root_ino= 1, sort_file_pattern= 0; int *weight_list= NULL, weight_count= 0; int *delay_opt_list= NULL, delay_opt_count= 0; + int mkisofs_b_platform_id= 0x00; char *sfe= NULL, *adr= NULL, ra_text[80], *pathspec= NULL, *sort_file= NULL; char *ept, *add_pt, *eff_path= NULL, *indev= NULL, msc[80], *cpt; char *old_root= NULL, *argpt, *hargv[1]; @@ -1892,6 +1932,7 @@ not_enough_args:; delay_opt_list[delay_opt_count - 1]|= 1<<31; } else if(strcmp(argpt, "-b") == 0 || strcmp(argpt, "-eltorito-boot") == 0 || + strcmp(argpt, "-eltorito-platform") == 0 || strcmp(argpt, "--efi-boot") == 0 || strcmp(argpt, "-e") == 0 || strcmp(argpt, "-mips-boot") == 0 || @@ -2414,7 +2455,7 @@ problem_handler_2:; if(strcmp(argpt, "-e") == 0) xorriso->boot_platform_id= 0xef; else - xorriso->boot_platform_id= 0x00; + xorriso->boot_platform_id= mkisofs_b_platform_id; xorriso->boot_efi_default= 0; if(xorriso->boot_emul_default) xorriso->boot_image_emul= 2; @@ -2432,6 +2473,21 @@ problem_handler_2:; } xorriso->keep_boot_image= 0; with_boot_image= 1; + } else if(strcmp(argpt, "-eltorito-platform") == 0) { + if(i + 1>=argc) + goto not_enough_args; + i++; + if(xorriso->boot_image_bin_path[0] != 0) { + ret= Xorriso_genisofs_add_boot(xorriso, 0); + if(ret <= 0) + goto problem_handler_boot; + } + mkisofs_b_platform_id= Xorriso_genisofs_platform(xorriso, argv[i], 0); + if(mkisofs_b_platform_id < 0) { + mkisofs_b_platform_id= 0; + goto problem_handler_boot; + } + } else if(strcmp(argpt, "-c") == 0 || strcmp(argpt, "-eltorito-catalog") == 0) { if(i+1>=argc) diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index da294d9e..4e752870 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2017.05.09.081543" +#define Xorriso_timestamP "2017.06.03.132429" diff --git a/xorriso/xorrisofs.1 b/xorriso/xorrisofs.1 index 8c176e86..9593a184 100644 --- a/xorriso/xorrisofs.1 +++ b/xorriso/xorrisofs.1 @@ -9,7 +9,7 @@ .\" First parameter, NAME, should be all caps .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" other parameters are allowed: see man(7), man(1) -.TH XORRISOFS 1 "Version 1.4.7, Feb 26, 2017" +.TH XORRISOFS 1 "Version 1.4.7, Jun 03, 2017" .\" Please adjust this date whenever revising the manpage. .\" .\" Some roff macros, for reference: @@ -988,6 +988,13 @@ Perform \-eltorito\-alt\-boot, option \-e with the given iso_rr_path, \-no\-emul\-boot, and again \-eltorito\-alt\-boot. This gesture is used for achieving EFI\-bootability of the GRUB2 rescue CD. .TP +\fB\-eltorito-platform\fR "x86"|"PPC"|"Mac"|"efi"|0xnn|nnn +Perform option \-eltorito\-alt\-boot and set the Platform Id number for the next +option \-b or \-eltorito\-boot. The number may be chosen by a platform name or by +a number between 0 and 255 (0x00 and 0xFF). "x86" = 0 is for PC\-BIOS, +"PPC" = 1 for some PowerPC systems, "Mac" = 2 for some MacIntosh systems, +"efi" = 0xEF for EFI on modern PCs with x86 compatible CPUs or others. +.TP \fB\-boot-load-size\fR number|"full" Set the number of 512\-byte blocks to be loaded at boot time from the boot image in the current catalog entry. diff --git a/xorriso/xorrisofs.info b/xorriso/xorrisofs.info index e02a0ccb..899aa287 100644 --- a/xorriso/xorrisofs.info +++ b/xorriso/xorrisofs.info @@ -881,6 +881,13 @@ the System Area. Perform -eltorito-alt-boot, option -e with the given iso_rr_path, -no-emul-boot, and again -eltorito-alt-boot. This gesture is used for achieving EFI-bootability of the GRUB2 rescue CD. +-eltorito-platform "x86"|"PPC"|"Mac"|"efi"|0xnn|nnn + Perform option -eltorito-alt-boot and set the Platform Id number + for the next option -b or -eltorito-boot. The number may be chosen + by a platform name or by a number between 0 and 255 (0x00 and + 0xFF). "x86" = 0 is for PC-BIOS, "PPC" = 1 for some PowerPC + systems, "Mac" = 2 for some MacIntosh systems, "efi" = 0xEF for EFI + on modern PCs with x86 compatible CPUs or others. -boot-load-size number|"full" Set the number of 512-byte blocks to be loaded at boot time from the boot image in the current catalog entry. @@ -1897,13 +1904,13 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * --acl Recording of ACLs: SetExtras. (line 95) * --application_use set Application Use field: ImageId. (line 79) -* --boot-catalog-hide Hide El Torito boot catalog: Bootable. (line 112) +* --boot-catalog-hide Hide El Torito boot catalog: Bootable. (line 119) * --efi-boot El Torito EFI boot image: Bootable. (line 59) * --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 228) -* --grub2-boot-info Patch El Torito boot image: Bootable. (line 100) +* --grub2-boot-info Patch El Torito boot image: Bootable. (line 107) * --grub2-mbr Install modern GRUB2 MBR: SystemArea. (line 81) * --grub2-sparc-core SUN SPARC core file: SystemArea. (line 283) * --hardlinks Recording of hardlink relations: SetExtras. (line 116) @@ -1949,9 +1956,9 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -b El Torito PC-BIOS boot image: Bootable. (line 38) * -B SUN SPARC boot images: SystemArea. (line 268) * -biblio set Biblio File path: ImageId. (line 62) -* -boot-info-table Patch El Torito boot image: Bootable. (line 95) -* -boot-load-size El Torito boot image load size: Bootable. (line 63) -* -c El Torito boot catalog name: Bootable. (line 105) +* -boot-info-table Patch El Torito boot image: Bootable. (line 102) +* -boot-load-size El Torito boot image load size: Bootable. (line 70) +* -c El Torito boot catalog name: Bootable. (line 112) * -C set load address and write address offset: Loading. (line 25) * -cdrecord-params set load address and write address offset: Loading. (line 46) @@ -1973,10 +1980,11 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -efi-boot-part EFI boot partition: SystemArea. (line 218) * -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 110) -* -eltorito-id El Torito boot section id string: Bootable. (line 84) +* -eltorito-catalog El Torito boot catalog name: Bootable. (line 117) +* -eltorito-id El Torito boot section id string: Bootable. (line 91) +* -eltorito-platform El Torito Platform Id: Bootable. (line 63) * -eltorito-selcrit El Torito boot selection criteria: Bootable. - (line 91) + (line 98) * -exclude exclude disk files from inserting: SetInsert. (line 37) * -exclude-list exclude disk files from inserting: SetInsert. (line 44) * -f follow symbolic links on disk: SetInsert. (line 22) @@ -1990,7 +1998,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -graft-points enable target=source pathspecs: SetInsert. (line 28) * -gui increase frequency of pacifier messages: Miscellaneous. (line 29) -* -hard-disk-boot El Torito boot image emulation: Bootable. (line 74) +* -hard-disk-boot El Torito boot image emulation: Bootable. (line 81) * -help list supported options: Miscellaneous. (line 21) * -hfs-bless HFS+ blessing ppc_bootdir: SetExtras. (line 201) * -hfs-bless-by HFS+ blessing: SetExtras. (line 191) @@ -2053,7 +2061,7 @@ File: xorrisofs.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: T * -mips-boot MIPS Big Endian boot image: SystemArea. (line 257) * -mipsel-boot MIPS Little Endian boot image: SystemArea. (line 263) * -N omit version number in ISO file names: SetCompl. (line 64) -* -no-emul-boot El Torito boot image emulation: Bootable. (line 77) +* -no-emul-boot El Torito boot image emulation: Bootable. (line 84) * -no-pad do not add zeros to ISO tree: SetProduct. (line 93) * -o set output file address: SetProduct. (line 8) * -old-exclude exclude disk files from inserting: SetInsert. (line 42) @@ -2134,17 +2142,17 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Block address, set sorting weight, --sort-weight-patterns: SetProduct. (line 76) * Bootability, boot catalog hidden, --boot-catalog-hide: Bootable. - (line 112) + (line 119) * Bootability, boot catalog name, -c, -eltorito-catalog: Bootable. - (line 105) + (line 112) * Bootability, boot image emulation, -hard-disk-boot: Bootable. - (line 74) + (line 81) * Bootability, boot image load size, -boot-load-size: Bootable. - (line 63) + (line 70) * Bootability, boot image patching, --grub2-boot-info: Bootable. - (line 100) + (line 107) * Bootability, boot image patching, -boot-info-table: Bootable. - (line 95) + (line 102) * Bootability, bootable MBR partition, --mbr-force-bootable: SystemArea. (line 139) * Bootability, control, --grub2-sparc-core: SystemArea. (line 283) @@ -2153,6 +2161,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Bootability, control, -b, -eltorito-boot: Bootable. (line 38) * Bootability, control, -B, -sparc-boot: SystemArea. (line 268) * Bootability, control, -e: Bootable. (line 53) +* Bootability, control, -eltorito-platform: Bootable. (line 63) * Bootability, control, -hppa-bootloader: SystemArea. (line 295) * Bootability, control, -hppa-cmdline: SystemArea. (line 289) * Bootability, control, -hppa-hdrversion: SystemArea. (line 303) @@ -2162,9 +2171,9 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top * Bootability, control, -mips-boot: SystemArea. (line 257) * Bootability, control, -mipsel-boot: SystemArea. (line 263) * Bootability, El Torito section id string, -eltorito-id: Bootable. - (line 84) -* Bootability, El Torito selection criteria, -eltorito-selcrit: Bootable. (line 91) +* Bootability, El Torito selection criteria, -eltorito-selcrit: Bootable. + (line 98) * Bootability, fill System Area e.g. by MBR, -G, --embedded-boot, -generic-boot: SystemArea. (line 68) * Bootability, for CHRP, -chrp-boot-part: SystemArea. (line 241) @@ -2182,7 +2191,7 @@ File: xorrisofs.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top (line 108) * Bootability, next entry, -eltorito-alt-boot: Bootable. (line 47) * Bootability, no boot image emulation, -no-emul-boot: Bootable. - (line 77) + (line 84) * Bootability, partitions like with isohybrid, -part_like_isohybrid: SystemArea. (line 120) * Bootability, patch System Area partition table, --protective-msdos-label: SystemArea. @@ -2352,24 +2361,24 @@ Node: SetExtras21966 Node: SetHide32539 Node: ImageId33843 Node: Bootable38125 -Node: SystemArea43896 -Node: Charset61048 -Node: Jigdo62073 -Node: Miscellaneous66350 -Node: Examples67995 -Node: ExSimple68489 -Node: ExGraft68972 -Node: ExMkisofs70272 -Node: ExGrowisofs71538 -Node: ExIncBackup72728 -Node: ExIncBckAcc75889 -Node: ExBootable77578 -Node: Files81760 -Node: Environ82855 -Node: Seealso83626 -Node: Bugreport84277 -Node: Legal84870 -Node: CommandIdx85767 -Node: ConceptIdx101342 +Node: SystemArea44351 +Node: Charset61503 +Node: Jigdo62528 +Node: Miscellaneous66805 +Node: Examples68450 +Node: ExSimple68944 +Node: ExGraft69427 +Node: ExMkisofs70727 +Node: ExGrowisofs71993 +Node: ExIncBackup73183 +Node: ExIncBckAcc76344 +Node: ExBootable78033 +Node: Files82215 +Node: Environ83310 +Node: Seealso84081 +Node: Bugreport84732 +Node: Legal85325 +Node: CommandIdx86222 +Node: ConceptIdx101870  End Tag Table diff --git a/xorriso/xorrisofs.texi b/xorriso/xorrisofs.texi index b91a49e0..fbf0a321 100644 --- a/xorriso/xorrisofs.texi +++ b/xorriso/xorrisofs.texi @@ -50,7 +50,7 @@ @c man .\" First parameter, NAME, should be all caps @c man .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection @c man .\" other parameters are allowed: see man(7), man(1) -@c man .TH XORRISOFS 1 "Version 1.4.7, Feb 26, 2017" +@c man .TH XORRISOFS 1 "Version 1.4.7, Jun 03, 2017" @c man .\" Please adjust this date whenever revising the manpage. @c man .\" @c man .\" Some roff macros, for reference: @@ -1339,6 +1339,15 @@ Perform -eltorito-alt-boot, option -e with the given iso_rr_path, -no-emul-boot, and again -eltorito-alt-boot. This gesture is used for achieving EFI-bootability of the GRUB2 rescue CD. @c man .TP +@item -eltorito-platform "x86"|"PPC"|"Mac"|"efi"|0xnn|nnn +@kindex -eltorito-platform El Torito Platform Id +@cindex Bootability, control, -eltorito-platform +Perform option -eltorito-alt-boot and set the Platform Id number for the next +option -b or -eltorito-boot. The number may be chosen by a platform name or by +a number between 0 and 255 (0x00 and 0xFF). "x86" = 0 is for PC-BIOS, +"PPC" = 1 for some PowerPC systems, "Mac" = 2 for some MacIntosh systems, +"efi" = 0xEF for EFI on modern PCs with x86 compatible CPUs or others. +@c man .TP @item -boot-load-size number|"full" @kindex -boot-load-size El Torito boot image load size @cindex Bootability, boot image load size, -boot-load-size