Contribute
Register

Is Chimera necessary on machines with native UEFI support?

Status
Not open for further replies.
Joined
May 31, 2012
Messages
1
Mac
  1. 0
Classic Mac
  1. 0
Mobile Phone
  1. 0
I've seen this posted before, but never seen an answer. I recently purchased an ASUS P8Z77-V motherboard, that supports UEFI natively. I've disabled legacy boot in the motherboard's firmware, and can successfully dual-boot Windows 8 and Fedora 17 in UEFI mode, off a GPT disk. Aside from other issues of Ivy Bridge support, driver support, etc, would I need to install Chimera to emulate EFI if my motherboard can support UEFI directly? Or would the OS X installer just place a .efi file on the drive's EFI partition, and "just work"?

Currently I can choose Win8 or Fedora using my motherboard's boot selection menu (pressing F8 during startup). It seems like if the OS X installer did write a .efi file to the EFI partition, the motherboard's UEFI boot option would see it and would display it in the same menu.

Or is that not how all this works?
 
I need an answer too

I'd like to know the same.
 
I use The Maximus V Gene with uEFI and chimera is required for me. I've never heard about it not being required with uEFI, In some cases DSDT is not required.
 
Ok, so Chimera IS required? Now next question: is there a native UEFI version of Chimera that would not run into the BIOS compatibility module but rather as a native UEFI application. I would need that to chainload GRUB UEFI into Chameleon or Chimera. I tried searching since hours for a solution, and everything comes back to MBR tricks. But my disks are GPT-formatted, I have Windows 7 and Fedora 17 booting in native UEFI, but Mac OS X boots in BIOS mode through Chameleon. For now, the only way I have to reach OS X is by hitting the F8 key, but it fails once over two, so I need a boot menu other than the one provided by ASUS. It seems I have to REINSTALL everything in MBR to have GRUB or Chameleon manage the boot. This is a very crude lesson to learn: UEFI is bad crap, at least for the upcoming 5-6 years. I spent a HUGE amount of time setting up my stupid Windows 7, struggled a lot with Linux installation (Ubuntu failed miserably on that box, then I switched to Fedora), but it seems I have to redo it all over again, or buy a real Mac. I would like something b etter than a hack that overrides the Windows UEFI boot manager, preventing Windows to boot at all.
 
What's wrong with chimera?
 
What's wrong with chimera?

Nothing wrong with Chimera per se, in fact. The question is some people, maybe out of vanity or OCD (like me) want to have a pure GUID disk instead of a hybrid MBR and a MBRed Windows 7/8. Chimera AFAIK was developed (based on Chameleon) to emulate UEFI on top of a BIOS system, so some could use a GUID disk (as required by a vanilla OS X installation) with BIOS (unable to boot a GUID disk). As BIOS forcibly boots from MBR's boot sector so Chimera had to be put in it.

But things aren't so simple.

The fact is Chimera is not a single beast. It's a quite complex code that can't fit in MBR's boot sector. So it's "chainloaded". The code snippet (stage 0) that exists in the MBR sector loads the real Chimera (stage 1, loaded from a partition), that in its turn detects installed systems and gives the user the option to load OS X's kernel or other OSes's boot loaders (Windows, Linux, etc.).

This stage 0/stage 1 scheme is nothing revolutionary. In fact most boot managers do exactly that (Windows Boot Manager, GRUB, GRUB2 rEFIt, rEFInd, etc.). If you create a Hackintosh install image with MBR support you can even boot OS X's kernel directly from GRUB (I did it once)

So our problem isn't Chimera's existence, but the fact that in a default Chimera installation we need a hybrid MBR so that little code snippet that loads the real Chimera can be written in MBR's boot sector, and in this scheme to load Chimera you need to boot in BIOS mode. The mistery is how to load Chimera's stage 1 without having an MBR-based stage 0.

That said, Chimera's install package is a compressed archive with lots of things inside, including a file with stage 0 and another with stage 1. And there are HOWTOs out there explaining how to manually put stage 1 in the EFI partition and other tricks. But an easy, automated, click-next-click way to do so isn't available yet. And it's the root of the problem.

In a pure UEFI system with a GUID partition table (GPT) there's no such a thing as a a disk's boot sector ala MBR. Things work quite differently.

In an UEFI system with a GUID partition table (GPT) you'll find a EFI partition that is in fact a FAT32 one (maybe that's the reason you can't use a Windows 7/8 UEFI boot media to install it on a FAT32 partition) and inside of it every UEFI-aware OS will store its own boot manager (stage 0 and some will install stage 1 too, if any) into a folder structure. The firmware stores in the computer's EEPROM the information about what boot managers are available and which one must be called. As the limit for the size of the boot manager is the size of the EFI partition, the 512-byte limit for stage 0 on MBR doesn't exist anymore (and doesn't make sense at all). But an UEFI boot manager is not a sector on disk that must be loaded to a fixed memory address and be executed. It is, in fact a program.

An UEFI boot manager is a 64-bit (in most cases) program in its own right, and as a proper program it is stored in the partition using an industry-standard format: the Windows(!?!) Portable Executable (WinPE) format. To create and compile it of course you'll have to have the UEFI SDK (not available on Mac/Hackintosh AFAICT). And not only that (already daunting task), but the actual knowledge about how to register the boot manager in the UEFI firmware.

So we need one of the following:

1. An UEFI-compatible stage 0 to load the current Chimera;
2. Another UEFI boot manager to chainload Chimera in an easy way;
3. An UEFI-native Chimera port;
4. Another UEFI boot manager capable of loading the Mach kernel.

Alternative 1 is the easier IMO, but alternatives 1 and 3 involve using an UEFI SDK for development, something that AFAIK isn't available for Mac (I may be proven wrong). Alternatives 2 and 4 already exist, but they aren't user-friendly at all. Alternative 3 may be simple or radically difficult, I don't have means to evaluate right now. Now we need someone willing and able to implement one of them. I'm a C and C++ programmer, but I'm just starting to take on OS X. Maybe MacMan can help.
 
Status
Not open for further replies.
Back
Top