BIG DISCLAIMER - Spark is an ALPHA STAGE boot manager written in Rust, IT IS NOT MEANT TO BE USED IN PRODUCTION AT THIS MOMENT.
Spark is a boot manager written in Rust that aims for speed and stability during the boot process.
- Minimalist
- Fast
- Stable
- Maintainable and modular
-
ESP automatic detection
-
Installation process and removal
-
Establishing an ESP directory map
-
Reading the NVRAM variables
-
Modifying the NVRAM variables successfully
-
Generating operating system entries
-
Supporting custom signatures of the binary
-
Detect user input
-
Booting any kernel an initramfs
-
Supporting firmware signatures
-
Choose between entries
-
Parsing the system's entries in the ESP
-
Customization of the general config file
- UEFI firmware
- Rustup configured
- x86_64 architecture
- QEMU installed and configured with a Linux OS instance
- QEMU virtual snapshot of the virtual machine before executing the software
- FAT32 file system mounted in either
/boot,/boot/efior/efi
Make sure you have the rustup toolchain before trying to build the binary.
Clone the repository and compile:
git clone https://github.com/Flamitsu/spark
cd spark
cargo build-uefi # This command builds the binary for the .efi bin.
cargo build-normal # This command builds the general binary.However, cargo build-uefi may produce an error. If that happens, it may be that you don't have the toolchain installed.
To proceed execute: rustup target add x86_64-unknown-uefi and re-run: cargo build-uefi command.
This code is still work in progress and it is not meant to be executed in the host machine in any way. You should have a QEMU snapshot (or the software you are using to virtualize an environment) and then execute the software.
To execute the binary, it is extremely recommended to be inside a virtual machine.
After the installation process is complete, you need to run the following command: ./execute.sh, reboot the virtual machine and it should boot the EFI binary.
To contribute to this project you should look at the contributing guidelines first.
This project is licensed under the MIT license or under the Apache 2.0 license
- uefi - Crate to interact with the UEFI in Rust.