Friday, February 15, 2008

Check if you have EFI installed (how-to series)

hackintosh comes in two flavors of install types: one with EFI emulation (A.K.A PC_EFI) and another without,

EFI is intel "Extensible Firmware Interface", it is an interface that abstract the hardware from the software, so no matter what hardware the OS is running on it will always "talk" to the hardware in the same manner and it wont have to find out on what intel configuration it reside on.

EFI supply the OS with services that until today only BIOS would supply (IO,IRQ,rates on board, access to memory, machine clock etc.)  it conform to the firmware on the EFI module residing on the board and have part in the boot process and kext (drivers) loading process, see more detail here and here.

real mac install EFI files (that support intel EFI firmware) in the folder: 


and another copy in folder:


your hackintosh will not have the first file installed, the second might be in the path (but not in use), since we don't have the supporting hardware and firmware version to support this spec in our PC then there is a workaround (a hack) that was made by Netkas and its idea is to mimic the EFI abilities,

the EFI retain a table of data parts and when the OS request a data part or to store a data part the PC_EFI return the proper response. this way the leopard/tiger thinks they are installed on a Mac and allow correct behavior including updates.

there are 3 ways to find out if you have an EFI emulation:

1. if during install you went to a "Darwin Boot" menu and specified to install PC_EFI in the console window,  then you got PC_EFI emulation,
the PC_EFI install screen look like this:

2. another way to find out: is if you made a successful update using the menu bar apple -> "Software Update", if so then you you have EFI emulation installed, although i was talled that there might me some installations that can update without EFI.

3. last and the safest way is to write in the terminal the command:

sudo ioreg -l -w0 -p IODeviceTree | grep efi

and make sure you are getting this as an output:

    +-o efi  
    | |   "name" = <"efi">

b.t.w if you don't have PC_EFI installed you can install it, please refer to this post.

No comments:

the menu is from: Milonic DHTML menus