Skip to content
/ spark Public

Bootmanager programmed in rust.

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

Flamitsu/spark

Spark

Alpha stage

BIG DISCLAIMER - Spark is an ALPHA STAGE boot manager written in Rust, IT IS NOT MEANT TO BE USED IN PRODUCTION AT THIS MOMENT.

Table of contents

Description

Spark is a boot manager written in Rust that aims for speed and stability during the boot process.

Features

  • Minimalist
  • Fast
  • Stable
  • Maintainable and modular

TODO

TODO (general binary):

  • 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

TODO (UEFI 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

Requirements

  • 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/efi or /efi

Installation

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.

Execution

Disclaimer

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.

Contribution

To contribute to this project you should look at the contributing guidelines first.

License

This project is licensed under the MIT license or under the Apache 2.0 license

Credits

  • uefi - Crate to interact with the UEFI in Rust.

Releases

No releases published

Packages

No packages published