Difference between revisions of "UEFI"

From ReactOS Wiki
Jump to: navigation, search
(Created page with "Support for UEFI booting will require several different pieces in the installer, the kernel storage stack, and the bootloader. This page documents the various pieces and also ...")
 
Line 1: Line 1:
 
Support for UEFI booting will require several different pieces in the installer, the kernel storage stack, and the bootloader. This page documents the various pieces and also serves as a reference for where to get relevant information and tools.
 
Support for UEFI booting will require several different pieces in the installer, the kernel storage stack, and the bootloader. This page documents the various pieces and also serves as a reference for where to get relevant information and tools.
 +
 +
== Installer ==
 +
The installer is currently split into two parts, stage one and stage two. Stage one is located in base/setup/usetup and stage two is located in dll/win32/syssetup. Note that due to hardcoding in the kernel, when usetup is placed in the ISO it is renamed to smss because that is the first thing the kernel loads.
 +
 +
To implement UEFI support requires that the installers be able to create GPT based partitions.
  
 
== UEFI ==
 
== UEFI ==

Revision as of 16:57, 13 May 2014

Support for UEFI booting will require several different pieces in the installer, the kernel storage stack, and the bootloader. This page documents the various pieces and also serves as a reference for where to get relevant information and tools.

Installer

The installer is currently split into two parts, stage one and stage two. Stage one is located in base/setup/usetup and stage two is located in dll/win32/syssetup. Note that due to hardcoding in the kernel, when usetup is placed in the ISO it is renamed to smss because that is the first thing the kernel loads.

To implement UEFI support requires that the installers be able to create GPT based partitions.

UEFI

To develop against UEFI will require the EDKII source code. The documentation on the Tianocore project outlines exactly how to obtain and build the source code and most of it is sufficiently clear. Note that for all practical purposes you are primarily interested in the library and module headers that give you access to the UEFI API. However, building everything just tends to be easier than trying to put together a standalone UEFI application due to the way EDKII's build system works.

For those interested in actually playing around with a UEFI image itself, the Open Virtual Machine Firmware (also part of Tianocore) provides a platform for use with QEMU. OVMF provides binary images in addition to the source code. Its documentation is a bit more sparse however and there are a few minor irritants.

  • Building OVMF requires having an ACPI Source Language compiler, which is separate from the C compiler used for the rest of UEFI. The OVMF documentation links you to two options, Microsoft's or Intel's, but states that you need to configure them to be part of your EDKII build tree without explaining what that means. For all practical purposes, it just means setting the WIN_ASL_BIN_DIR value in the Conf/tools_def.txt file to the path where you downloaded the ASL compiler, whether it be Microsoft's or Intels.
  • Starting up OVMF on QEMU actually requires the option -monitor stdio to be passed in, otherwise QEMU just hangs. Whether this is due to OVMF or QEMU is unknown at this point.