kernel-dev / poccyOSBootloader

A minimal, PE32+ compatible UEFI bootloader for my operating system (poccyOS).

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

KernelOSBootloader

A minimal, PE32+ compatible UEFI bootloader which is solely used to load my own OS.


Usage

It is solely used to load my own OS, and has not been tested to load any other OS. It will most likely not even work, as the calling conventions used are not that of a standard UEFI bootloader. A common-purpose bootloader passes down the RSDP pointer, the system memory map, and a pointer to the RuntimeServices instance. However, this bootloader in particular passes down the system memory map (in a custom internal representation), a pointer to the DSDT, a pointer to the RuntimeServices instance, and a pointer to an internal representation of the framebuffer.

Note: if you want to build this project yourself, please clone the AUDK repository (listed as a submodule in this repository), and add this project to the AUDK directory. Rename it to BootloaderPkg. Then add BootloaderPkg/BootloaderPkg.inf under Components for both OvmfPkg/OvmfPkgX64.dsc and MdeModulePkg/MdeModulePkg.dsc. Then follow the rest of the steps for setting up EDK2 (source edksetup.sh and make -C BaseTools). Finally, just run build.sh with updated paths.


Credits

  • Mhaeuser — for providing this project with a rich, and high level abstraction for parsing and handling PE/COFF images (PeCoffLib2).
  • Acidanthera — for their fork of EDK2 (AUDK) & Uncrustify bootstrap
    • FYI: If you wish to avoid the over-indentation of function arguments, set indent_paren_after_func_call to false in uncrustify.cfg.`

About

A minimal, PE32+ compatible UEFI bootloader for my operating system (poccyOS).

License:MIT License


Languages

Language:C 97.4%Language:Shell 2.6%