uefi-from-scratch is a personal rust project to learn about UEFI and how to use it to boot a semi OS.
To find pre-compiled binaries, please visit releases
There is support for cross-compiling the project against aarch64-unknown-linux-gnu and i686-unknown-linux-gnu targets in addition to the default.
- Get the necessary qemu firmware files for the respective targets
-
- OVFM.fd
-
- OVMF_VARS.fd
- Rename and place them in the emulated-firmware/ directory based on the target:
-
- aarch64-unknown-linux-gnu -> OVMF-aarch64.fd, OVMF_VARS-aarch64.fd
-
- i686-unknown-linux-gnu -> OVMF-i686.fd, OVMF_VARS-i686.fd
- Install the respective rust targets
- Run the following command/s:
just run-aarch64
just run-i686
Provided that the above pre-requisites are installed, run the following command to build and run the project:
just run
just clean
just debug
├── .cargo/
│ └── config
├── .gitignore
├── emulated-firmware/
│ └── OVMF.fd
│ └── OVMF_VARS.fd
├── esp/
│ ├── EFI/
│ │ ├── BOOT/
│ │ │ ├── BOOTX64.EFI
├── src/
│ ├── lib.rs
│ ├── main.rs
│ ├── enum.rs
├── target/
├── ..github/
├── ACPI_Spec_6_5_Aug29.pdf
├── Cargo.lock
├── Cargo.toml
├── justfile
├── LICENSE
├── README.md
├── rust-toolchain.toml
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.