BIG DISCLAIMER - Spark is a PRE 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 with the initramfs
-
Supporting firmware signatures
-
Choose between entries
-
Parsing the system's entries in the ESP
-
Customization of the general config file
- UEFI firmware
- GPT partition table
- 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
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 loader # This command builds the binary for the .efi bin.
cargo cli # This command builds the general binary.However, cargo loader may produce an error. If that happens, it may be that you don't have the toolchain installed. To install the proper target you need to execute this code:
cd scripts/
./install-targets.sh 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.
If you only want to try the UEFI binary, you need to execute this commands:
cd scripts/
./only-loader.shTo execute the spark-cli or spark-loader binary as a whole, it is extremely recommended to be inside a virtual machine.
After the installation process is complete, you need to run the following command: ./tyr-virtual-machine.sh, and it should be only executed inside a virtual machine.
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.