Didier Spaier
2014-Jul-29 13:03 UTC
[syslinux] isohybrid: slint64-14.1.iso: unable to find mac efi image
HI, In http://slint.fr/misc/MacBoot/ you'll find all context information. All files referenced here are stored there. Long story short: once dd-ed on an USB stick the ISO image can boot on a BIOS or EFI machine, but I want it to be able to boot on most x86_64 Macs with an EFI firmware. Unfortunately I get the error message: isohybrid: slint64-14.1.iso: unable to find mac efi image The script whose end is "mac_hybrid_image_mac_able.sh" is run on a Slackware64-14.1 that ships syslinux 4.06 to prepare the mac-HFS+ image file (in addition to the two others already included) and build the ISO. Here a few questions and remarks: _I am aware of the recent patches of isohybrid.c .Is there a chance that using syslinux from git as of today enhance chances of success? Or could I just cherry pick part of the file tree (which one, then?) and back-port it to syslinux 4.06? _I realize that it's probably a PEBCAK issue. Can anyone check the isohybrid command at end of mac_hybrid_image_mac_able.sh? in "man mkisofs" they are many HFS options, but I am not acquaited with all that stuff. Could someone help my find out which ones I should use? Or where else should I ask that if that's too much a newbie question here? _Could my problem be related to a badly blessed file/directory? I just run hfs-bless (from Matthew Garett in Fedora's mactelboot package) on /system/Library/CoreServices/BOOTX64.EFI in the HFS+ file systemt hat will become macboot.img, but am not sure that's the right thing to do. _On the same topic, I saw that now @ Fedora they don't use hfs-bless any more, see mkefiboot (shipped in lorax/src/sbin). Does somrone know why? The URL http://developer.apple.com/library/mac/#technotes/tn/tn1150.html to the he Technical Note TN1150: HFS Plus Volume Format referenced in mkefiboot is broken. _Is there a chance that I'd succeed in using xorriso instead of mkisofs? I must admit that I never used it and the length of the man page is scaring me. I'd be very grateful to any Thomas who could happen to read this and help me write the command ;) Thanks in advance for any clue, Didier PS I guess that mkefiboot is used to build the installer in Fedora 20 Live ISO.
Thomas Schmitt
2014-Jul-29 14:45 UTC
[syslinux] isohybrid: slint64-14.1.iso: unable to find mac efi image
Hi,> Unfortunately I get the error message: > isohybrid: slint64-14.1.iso: unable to find mac efi imageThis is probably due to El Torito Platform id "Mac" in -eltorito-alt-boot -no-emul-boot -eltorito-platform Mac \ -eltorito-boot isolinux/macboot.img \ This caused in the image http://slint.fr/misc/MacBoot/slint64-14.1.iso platform id 1 with the third image. (I would have expected 2 from reading El Torito specs: 0=x86 , 1=PowerPC , 2=Mac. Shrug.) Regardless whether this is the right number for the purpose of booting some Mac from CD/DVD, it is not what isohybrid.c expects. This program expects to find the UEFI image as second boot image and the Mac image as third boot image. Both with Platform Id 0xef. This composition would be achieved by mkisofs options: -no-emul-boot -boot-load-size 4 -boot-info-table \ -b isolinux/isolinux.bin \ -c isolinux/isolinux.boot \ -eltorito-alt-boot -no-emul-boot -eltorito-platform 0xEF \ -eltorito-boot isolinux/efiboot.img \ -eltorito-alt-boot -no-emul-boot -eltorito-platform 0xEF \ -eltorito-boot isolinux/macboot.img \>From util/isohybrid.c :---------------------------------------------------------------- int read_efi_section(const uint8_t *buf) { ... if (platform_id == 0xef) return 0; return 1; } ... main(int argc, char *argv[]) { ... if (mode & EFI) { if (!read_efi_section(buf)) { ... } buf += 32; if (mode & MAC) { if (!read_efi_section(buf)) { ... } else { errx(1, "%s: unable to find mac efi image", argv[0]); } } ----------------------------------------------------------------> _Could my problem be related to a badly blessed file/directory?Any mis-composition of isolinux/macboot.img would only show up at boot time. Also any negative effect from platform id 0xef with the Mac image should only show up at boot time. I would be interested to learn more about HFS+ and Blessing. But> https://developer.apple.com/library/mac/technotes/tn/tn1150.htmlsays "Sorry, that page cannot be found". I only know that grub-mkrescue blesses /System/Library/CoreServices/boot.efi with "intel_bootfile" and /System/Library/CoreServices with "ppc_bootdir"> _Is there a chance that I'd succeed in using xorriso instead of mkisofs?Yes. :)) You will not have to use isohybrid.pl or isohybrid.c afterwards: ( cd $SLINT xorriso -as mkisofs -o /tmp/slint${SFX}-${VERSION}.iso \ -rational-rock -J -A 'Slint Install' \ -hide-rr-moved \ -v -v -d -N \ -isohybrid-mbr /usr/lib/syslinux/isohdpfx.bin \ -no-emul-boot -boot-load-size 4 -boot-info-table \ -b isolinux/isolinux.bin \ -c isolinux/isolinux.boot \ -eltorito-alt-boot -no-emul-boot \ -e isolinux/efiboot.img \ -isohybrid-gpt-basdat \ -eltorito-alt-boot -no-emul-boot \ -e isolinux/macboot.img \ -isohybrid-gpt-hfsplus -isohybrid-apm-hfsplus \ -V 'SlintISO' . 2>>${TMP}/log.txt ) If you cannot locate isohdpfx.bin in your SYSLINUX installation, you may take the first 512 bytes of your existing slint64-14.1.iso that was treated by isohybrid: dd if=slint64-14.1.iso bs=512 count=1 of=isohdpfx.bin xorrisofs does not know option -eltorito-platform but expresses the Platform Id 0xef by option -e instead of option -eltorito-boot. -isohybrid-gpt-basdat and -isohybrid-gpt-hfsplus -isohybrid-apm-hfsplus mark the current boot images in GPT resp. in GPT and Apple Partition Map.> the length of the man page is scaring me.Too many options, i know. (Nevertheless, if you are interested in the meaning of above options, look them up in man xorrisofs.) Have a nice day :) Thomas
Ady
2014-Jul-29 15:06 UTC
[syslinux] isohybrid: slint64-14.1.iso: unable to find mac efi image
> Hi, > > > Unfortunately I get the error message: > > isohybrid: slint64-14.1.iso: unable to find mac efi image > > This is probably due to El Torito Platform id "Mac" in > > -eltorito-alt-boot -no-emul-boot -eltorito-platform Mac \ > -eltorito-boot isolinux/macboot.img \ > > This caused in the image > http://slint.fr/misc/MacBoot/slint64-14.1.iso > platform id 1 with the third image. (I would have expected 2 > from reading El Torito specs: 0=x86 , 1=PowerPC , 2=Mac. Shrug.) > > Regardless whether this is the right number for the purpose of > booting some Mac from CD/DVD, it is not what isohybrid.c > expects. > This program expects to find the UEFI image as second boot image > and the Mac image as third boot image. Both with Platform Id 0xef. >>Fromcdrtools.sourceforge.net/private/man/cdrtools-3.01axx/mkisofs.8.html Look at the "-eltorito-platform id" option: [quote] x86 This is the default platform id value and speci- fies entries for the PC platform. If no -eltorito-platform option appears before the first -eltorito-boot option, the default boot entry becomes an entry for the x86 PC platform. PPC Boot entries for the Power PC platform. Mac Boot entries for the Apple Mac platform. efi Boot entries for EFI based PCs. # A numeric value specifying any platform id. [/quote] I don't know about the specific "platform id" argument that the isohybrid tool expects for each case, but "efi", "Mac" and "PPC" are not the same for mkisofs. If the isohybrid tool expects to use "efi" for "Mac" and/or for "PPC", then perhaps this might be part of the problem (if not now, at least at some point)? Regards, Ady.
Apparently Analagous Threads
- isohybrid: slint64-14.1.iso: unable to find mac efi image
- isohybrid: slint64-14.1.iso: unable to find mac efi image
- isohybrid: slint64-14.1.iso: unable to find mac efi image
- isohybrid: slint64-14.1.iso: unable to find mac efi image
- isohybrid: slint64-14.1.iso: unable to find mac efi image