Hi all... I found on some of the references for running Linux on Mac and (U)EFI systems something about rebuilding the EFI grub application, in order to that one would have to issue the following command, either as root with sudo:
Code:
grub2-mkimage -d . -o grub2.efi -p "" part_gpt part_msdos ntfs ntfscomp hfsplus fat ext2 normal chain boot configfile linux multiboot -O $(uname -m)-efi
When I add a --verbose in there before the -d option I see the following:
Code:
grub2-mkimage: info: getting the size of ./part_gpt.mod.
...
grub2-mkimage: info: getting the size of ./multiboot.mod.
grub2-mkimage: info: the total module size is 0x5aca8.
grub2-mkimage: info: getting the size of ./kernel.img.
grub2-mkimage: info: reading ./kernel.img.
grub2-mkimage: info: getting the size of ./kernel.img.
grub2-mkimage: error: invalid ELF header.
Doing a 'file' command on the kernel.img file yields:
Code:
kernel.img: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), statically linked, stripped
Now, this is on an x86_64 system, replicated this on my main x86_64 workstation to verify and sure enough is the same... Why is a 32-bit kernel.img file being supplied by the x86_64 version of Grub2? What's more, pretty much all modules are 32-bit:
Code:
rpm -ql grub2
...
/usr/lib/grub2/i386-pc
/usr/lib/grub2/i386-pc/acpi.mod
/usr/lib/grub2/i386-pc/affs.mod
/usr/lib/grub2/i386-pc/afs.mod
/usr/lib/grub2/i386-pc/afs_be.mod
/usr/lib/grub2/i386-pc/aout.mod
/usr/lib/grub2/i386-pc/at_keyboard.mod
/usr/lib/grub2/i386-pc/ata.mod
/usr/lib/grub2/i386-pc/ata_pthru.mod
/usr/lib/grub2/i386-pc/befs.mod
/usr/lib/grub2/i386-pc/befs_be.mod
/usr/lib/grub2/i386-pc/biosdisk.mod
/usr/lib/grub2/i386-pc/bitmap.mod
/usr/lib/grub2/i386-pc/bitmap_scale.mod
/usr/lib/grub2/i386-pc/blocklist.mod
/usr/lib/grub2/i386-pc/boot.img
/usr/lib/grub2/i386-pc/boot.mod
/usr/lib/grub2/i386-pc/bsd.mod
/usr/lib/grub2/i386-pc/btrfs.mod
/usr/lib/grub2/i386-pc/bufio.mod
/usr/lib/grub2/i386-pc/cat.mod
/usr/lib/grub2/i386-pc/cdboot.img
/usr/lib/grub2/i386-pc/chain.mod
/usr/lib/grub2/i386-pc/cmostest.mod
/usr/lib/grub2/i386-pc/cmp.mod
/usr/lib/grub2/i386-pc/command.lst
/usr/lib/grub2/i386-pc/config.h
/usr/lib/grub2/i386-pc/configfile.mod
/usr/lib/grub2/i386-pc/cpio.mod
/usr/lib/grub2/i386-pc/cpuid.mod
/usr/lib/grub2/i386-pc/crypto.lst
/usr/lib/grub2/i386-pc/crypto.mod
/usr/lib/grub2/i386-pc/cs5536.mod
/usr/lib/grub2/i386-pc/date.mod
/usr/lib/grub2/i386-pc/datehook.mod
/usr/lib/grub2/i386-pc/datetime.mod
/usr/lib/grub2/i386-pc/diskboot.img
/usr/lib/grub2/i386-pc/dm_nv.mod
/usr/lib/grub2/i386-pc/drivemap.mod
/usr/lib/grub2/i386-pc/echo.mod
/usr/lib/grub2/i386-pc/efiemu.mod
/usr/lib/grub2/i386-pc/efiemu32.o
/usr/lib/grub2/i386-pc/efiemu64.o
/usr/lib/grub2/i386-pc/elf.mod
/usr/lib/grub2/i386-pc/example_functional_test.mod
/usr/lib/grub2/i386-pc/ext2.mod
/usr/lib/grub2/i386-pc/extcmd.mod
/usr/lib/grub2/i386-pc/fat.mod
/usr/lib/grub2/i386-pc/font.mod
/usr/lib/grub2/i386-pc/fs.lst
/usr/lib/grub2/i386-pc/fshelp.mod
/usr/lib/grub2/i386-pc/functional_test.mod
/usr/lib/grub2/i386-pc/gcry_arcfour.mod
/usr/lib/grub2/i386-pc/gcry_blowfish.mod
/usr/lib/grub2/i386-pc/gcry_camellia.mod
/usr/lib/grub2/i386-pc/gcry_cast5.mod
/usr/lib/grub2/i386-pc/gcry_crc.mod
/usr/lib/grub2/i386-pc/gcry_des.mod
/usr/lib/grub2/i386-pc/gcry_md4.mod
/usr/lib/grub2/i386-pc/gcry_md5.mod
/usr/lib/grub2/i386-pc/gcry_rfc2268.mod
/usr/lib/grub2/i386-pc/gcry_rijndael.mod
/usr/lib/grub2/i386-pc/gcry_rmd160.mod
/usr/lib/grub2/i386-pc/gcry_seed.mod
/usr/lib/grub2/i386-pc/gcry_serpent.mod
/usr/lib/grub2/i386-pc/gcry_sha1.mod
/usr/lib/grub2/i386-pc/gcry_sha256.mod
/usr/lib/grub2/i386-pc/gcry_sha512.mod
/usr/lib/grub2/i386-pc/gcry_tiger.mod
/usr/lib/grub2/i386-pc/gcry_twofish.mod
/usr/lib/grub2/i386-pc/gcry_whirlpool.mod
/usr/lib/grub2/i386-pc/gettext.mod
/usr/lib/grub2/i386-pc/gfxmenu.mod
/usr/lib/grub2/i386-pc/gfxterm.mod
/usr/lib/grub2/i386-pc/gptsync.mod
/usr/lib/grub2/i386-pc/gzio.mod
/usr/lib/grub2/i386-pc/halt.mod
/usr/lib/grub2/i386-pc/hashsum.mod
/usr/lib/grub2/i386-pc/hdparm.mod
/usr/lib/grub2/i386-pc/hello.mod
/usr/lib/grub2/i386-pc/help.mod
/usr/lib/grub2/i386-pc/hexdump.mod
/usr/lib/grub2/i386-pc/hfs.mod
/usr/lib/grub2/i386-pc/hfsplus.mod
/usr/lib/grub2/i386-pc/iorw.mod
/usr/lib/grub2/i386-pc/iso9660.mod
/usr/lib/grub2/i386-pc/jfs.mod
/usr/lib/grub2/i386-pc/jpeg.mod
/usr/lib/grub2/i386-pc/kernel.img
/usr/lib/grub2/i386-pc/keylayouts.mod
/usr/lib/grub2/i386-pc/keystatus.mod
/usr/lib/grub2/i386-pc/legacycfg.mod
/usr/lib/grub2/i386-pc/linux.mod
/usr/lib/grub2/i386-pc/linux16.mod
/usr/lib/grub2/i386-pc/lnxboot.img
/usr/lib/grub2/i386-pc/loadenv.mod
/usr/lib/grub2/i386-pc/loopback.mod
/usr/lib/grub2/i386-pc/ls.mod
/usr/lib/grub2/i386-pc/lsacpi.mod
/usr/lib/grub2/i386-pc/lsapm.mod
/usr/lib/grub2/i386-pc/lsmmap.mod
/usr/lib/grub2/i386-pc/lspci.mod
/usr/lib/grub2/i386-pc/lvm.mod
/usr/lib/grub2/i386-pc/mdraid09.mod
/usr/lib/grub2/i386-pc/mdraid1x.mod
/usr/lib/grub2/i386-pc/memdisk.mod
/usr/lib/grub2/i386-pc/memrw.mod
/usr/lib/grub2/i386-pc/minicmd.mod
/usr/lib/grub2/i386-pc/minix.mod
/usr/lib/grub2/i386-pc/minix2.mod
/usr/lib/grub2/i386-pc/mmap.mod
/usr/lib/grub2/i386-pc/moddep.lst
/usr/lib/grub2/i386-pc/msdospart.mod
/usr/lib/grub2/i386-pc/multiboot.mod
/usr/lib/grub2/i386-pc/multiboot2.mod
/usr/lib/grub2/i386-pc/nilfs2.mod
/usr/lib/grub2/i386-pc/normal.mod
/usr/lib/grub2/i386-pc/ntfs.mod
/usr/lib/grub2/i386-pc/ntfscomp.mod
/usr/lib/grub2/i386-pc/ntldr.mod
/usr/lib/grub2/i386-pc/ohci.mod
/usr/lib/grub2/i386-pc/part_acorn.mod
/usr/lib/grub2/i386-pc/part_amiga.mod
/usr/lib/grub2/i386-pc/part_apple.mod
/usr/lib/grub2/i386-pc/part_bsd.mod
/usr/lib/grub2/i386-pc/part_gpt.mod
/usr/lib/grub2/i386-pc/part_msdos.mod
/usr/lib/grub2/i386-pc/part_sun.mod
/usr/lib/grub2/i386-pc/part_sunpc.mod
/usr/lib/grub2/i386-pc/partmap.lst
/usr/lib/grub2/i386-pc/parttool.lst
/usr/lib/grub2/i386-pc/parttool.mod
/usr/lib/grub2/i386-pc/password.mod
/usr/lib/grub2/i386-pc/password_pbkdf2.mod
/usr/lib/grub2/i386-pc/pbkdf2.mod
/usr/lib/grub2/i386-pc/pci.mod
/usr/lib/grub2/i386-pc/play.mod
/usr/lib/grub2/i386-pc/png.mod
/usr/lib/grub2/i386-pc/probe.mod
/usr/lib/grub2/i386-pc/pxe.mod
/usr/lib/grub2/i386-pc/pxeboot.img
/usr/lib/grub2/i386-pc/pxecmd.mod
/usr/lib/grub2/i386-pc/raid.mod
/usr/lib/grub2/i386-pc/raid5rec.mod
/usr/lib/grub2/i386-pc/raid6rec.mod
/usr/lib/grub2/i386-pc/read.mod
/usr/lib/grub2/i386-pc/reboot.mod
/usr/lib/grub2/i386-pc/regexp.mod
/usr/lib/grub2/i386-pc/reiserfs.mod
/usr/lib/grub2/i386-pc/relocator.mod
/usr/lib/grub2/i386-pc/scsi.mod
/usr/lib/grub2/i386-pc/search.mod
/usr/lib/grub2/i386-pc/search_fs_file.mod
/usr/lib/grub2/i386-pc/search_fs_uuid.mod
/usr/lib/grub2/i386-pc/search_label.mod
/usr/lib/grub2/i386-pc/sendkey.mod
/usr/lib/grub2/i386-pc/serial.mod
/usr/lib/grub2/i386-pc/setjmp.mod
/usr/lib/grub2/i386-pc/setpci.mod
/usr/lib/grub2/i386-pc/sfs.mod
/usr/lib/grub2/i386-pc/sleep.mod
/usr/lib/grub2/i386-pc/tar.mod
/usr/lib/grub2/i386-pc/terminal.lst
/usr/lib/grub2/i386-pc/terminal.mod
/usr/lib/grub2/i386-pc/terminfo.mod
/usr/lib/grub2/i386-pc/test.mod
/usr/lib/grub2/i386-pc/test_blockarg.mod
/usr/lib/grub2/i386-pc/testload.mod
/usr/lib/grub2/i386-pc/tga.mod
/usr/lib/grub2/i386-pc/trig.mod
/usr/lib/grub2/i386-pc/true.mod
/usr/lib/grub2/i386-pc/udf.mod
/usr/lib/grub2/i386-pc/ufs1.mod
/usr/lib/grub2/i386-pc/ufs2.mod
/usr/lib/grub2/i386-pc/uhci.mod
/usr/lib/grub2/i386-pc/usb.mod
/usr/lib/grub2/i386-pc/usb_keyboard.mod
/usr/lib/grub2/i386-pc/usbms.mod
/usr/lib/grub2/i386-pc/usbserial_common.mod
/usr/lib/grub2/i386-pc/usbserial_ftdi.mod
/usr/lib/grub2/i386-pc/usbserial_pl2303.mod
/usr/lib/grub2/i386-pc/usbtest.mod
/usr/lib/grub2/i386-pc/vbe.mod
/usr/lib/grub2/i386-pc/vga.mod
/usr/lib/grub2/i386-pc/vga_text.mod
/usr/lib/grub2/i386-pc/video.lst
/usr/lib/grub2/i386-pc/video.mod
/usr/lib/grub2/i386-pc/video_bochs.mod
/usr/lib/grub2/i386-pc/video_cirrus.mod
/usr/lib/grub2/i386-pc/video_fb.mod
/usr/lib/grub2/i386-pc/videoinfo.mod
/usr/lib/grub2/i386-pc/videotest.mod
/usr/lib/grub2/i386-pc/xfs.mod
/usr/lib/grub2/i386-pc/xnu.mod
/usr/lib/grub2/i386-pc/xnu_uuid.mod
/usr/lib/grub2/i386-pc/xzio.mod
/usr/lib/grub2/i386-pc/zfs.mod
/usr/lib/grub2/i386-pc/zfsinfo.mod
...
How am I supposed to build a 64-bit grub2.efi file then? If I perform a 'file' command on the generated grub2.efi file, the file is empty.
---------- Post added at 09:33 PM ---------- Previous post was at 08:12 PM ----------
I should have paid more attention to the output of yum search grub...
It so happens that there is a grub2-efi rpm which provides both an .efi image and the missing modules installed to /usr/lib/grub2/x86_64-efi... Now if only I could find a way for it to actually find its confiuration file, instead of having it load into rescue console... But I have managed to get the menu by manually loading the configuration file, and was successful at loading a kernel in EFI mode this way...