I have linux on usb(32bit x86) and two PCs,

  1. one an laptop 64x uefi boots fine.
  2. one tablet having 64bit processor but 32bit uefi-bios do not boot.

The second one has no option for legacy boot, but it has the possibillity to boot from .efi-File.

Unfortunately none of the .efi-files ...

  • /efi/boot/bootx64.efi
  • /efi/boot/grubx64.efi

... loads and give the same message: \efi\boot\bootx64.efi boot failed.

Any suggestions?

  • Your system is not capable of booting a 32-bit kernel while in UEFI mode. So either use legacy mode or use a 64-bit kernel. Since only one is possible, your options are limited, none of those files are meant for a 32-bit operating system. They both specifically indicate 64-bit. – Ramhound Jan 30 '16 at 14:33
  • how can that even be possible: a 32-bit linux having 64-bit .efi-File!? – Peter Rader Jan 30 '16 at 14:40
  • It isn't possible. The EFI files are only for the 64-bit installation on the disk. – Ramhound Jan 30 '16 at 14:57
  • 1
    It is possible to do what Peter is asking; it's just a very bleeding-edge configuration. See my answer for more information. – Rod Smith Jan 31 '16 at 20:28

EFIs support programs, including boot loaders, of like bit depth. In other words, an x86-64 (aka AMD64, x64, or EM64T) EFI can launch a 64-bit binary, which normally has a filename ending in x64.efi; and an x86 (aka IA32, i686 or related) EFI can launch a 32-bit binary, which normally has a filename ending in ia32.efi. Note that, if you have a 32-bit EFI, the bit depth of the CPU is irrelevant. The result is that your system with a 32-bit EFI and 64-bit CPU is limited to running 32-bit EFI programs.

Normally, the bit depth of the EFI boot loader (which is just a particular type of EFI program) also limits the bit depth of the OS it runs. Thus, it's easiest to install a 32-bit OS on a computer with a 32-bit EFI. There are ways around this limit, though. In particular, both Apple's OS X boot loader and Linux's GRUB support cross-bit-depth kernel booting, so you can launch a 64-bit kernel from a 32-bit boot loader or vice-versa. (Obviously, you need a 64-bit CPU to launch a 64-bit kernel.) Since you say you're using Linux, but don't say what distribution you're using, I can't give very detailed instructions -- and in fact I don't have the details handy. Such cross-bit-depth installations are very much "bleeding edge," and I recommend avoiding them if at all possible.

Sticking with a 32-bit OS is likely to be easier, but many OSes (including most Linux distributions) have neglected 32-bit EFIs, so you may need to add a boot loader yourself. This process is described for Ubuntu here. IIRC, Debian now provides 32-bit EFI support, so you might get it working "out of the box."

Ultimately, to have one disk that's bootable on both 32-bit and 64-bit EFIs, with BIOS/CSM/legacy-mode boot support out of the question, you'll need to install both 32-bit and 64-bit versions of a boot loader, and configure one to boot in a cross-bit-depth manner. It's likely to be better to have two disks, or at least two installations on one disk, one being 32-bit and the other 64-bit. For an external disk, the 32-bit boot loader will be EFI/BOOT/bootia32.efi and the 64-bit boot loader will be EFI/BOOT/bootx64.efi.

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.