chore(doc): update readme

This commit is contained in:
2025-11-01 02:04:52 -04:00
parent b94c684d52
commit 5217dd0538
2 changed files with 12 additions and 16 deletions

View File

@@ -6,11 +6,11 @@
</div> </div>
Sprout is an **EXPERIMENTAL** programmable UEFI bootloader written in Rust. Sprout is a programmable UEFI bootloader written in Rust.
Sprout is in use at Edera today in development environments and is intended to ship to production soon. It is in use at Edera today in development environments and is intended to ship to production soon.
The name "sprout" is derived from our company name "Edera" which means "ivy." The name "Sprout" is derived from our company name "Edera" which means "ivy."
Given that Sprout is the first thing intended to start on an Edera system, the name was apt. Given that Sprout is the first thing intended to start on an Edera system, the name was apt.
It supports `x86_64` and `ARM64` EFI-capable systems. It is designed to require UEFI and can be chainloaded from an It supports `x86_64` and `ARM64` EFI-capable systems. It is designed to require UEFI and can be chainloaded from an
@@ -18,16 +18,13 @@ existing UEFI bootloader or booted by the hardware directly.
Sprout is licensed under Apache 2.0 and is open to modifications and contributions. Sprout is licensed under Apache 2.0 and is open to modifications and contributions.
**IMPORTANT WARNING**: Sprout does not support all of UEFI Secure Boot yet.
See [this issue](https://github.com/edera-dev/sprout/issues/20) for updates.
## Background ## Background
At [Edera] we make compute isolation technology for a wide variety of environments, often ones we do not fully control. At [Edera] we make compute isolation technology for a wide variety of environments, often ones we do not fully control.
Our technology utilizes a hypervisor to boot the host system to provide a new isolation mechanism that works Our technology uses a hypervisor to boot the host system to provide a new isolation mechanism that works
with or without hardware virtualization support. To do this we need to inject our hypervisor at boot time. with or without hardware virtualization support. To do this, we need to inject our hypervisor at boot time.
Unfortunately, GRUB, the most common bootloader on Linux systems today, utilizes a shell-script like Unfortunately, GRUB, the most common bootloader on Linux systems today, uses a shell-script like
configuration system. Both the code that runs to generate a GRUB config and the GRUB config configuration system. Both the code that runs to generate a GRUB config and the GRUB config
itself is fully turing complete. This makes modifying boot configuration difficult and error-prone. itself is fully turing complete. This makes modifying boot configuration difficult and error-prone.
@@ -52,8 +49,7 @@ simplify installation and usage.
## Features ## Features
NOTE: Currently, Sprout is experimental and is not intended for production use. **NOTE**: Sprout is still in beta.
The boot menu mechanism is very rudimentary.
### Current ### Current

View File

@@ -1,16 +1,16 @@
use crate::actions::chainload::ChainloadConfiguration;
use crate::actions::ActionDeclaration; use crate::actions::ActionDeclaration;
use crate::actions::chainload::ChainloadConfiguration;
use crate::config::RootConfiguration; use crate::config::RootConfiguration;
use crate::entries::EntryDeclaration; use crate::entries::EntryDeclaration;
use crate::generators::list::ListConfiguration;
use crate::generators::GeneratorDeclaration; use crate::generators::GeneratorDeclaration;
use crate::generators::list::ListConfiguration;
use crate::utils; use crate::utils;
use anyhow::{Context, Result}; use anyhow::{Context, Result};
use std::collections::BTreeMap; use std::collections::BTreeMap;
use uefi::fs::{FileSystem, Path, PathBuf};
use uefi::proto::device_path::text::{AllowShortcuts, DisplayOnly};
use uefi::proto::device_path::DevicePath;
use uefi::CString16; use uefi::CString16;
use uefi::fs::{FileSystem, Path, PathBuf};
use uefi::proto::device_path::DevicePath;
use uefi::proto::device_path::text::{AllowShortcuts, DisplayOnly};
/// The name prefix of the Linux chainload action that will be used to boot Linux. /// The name prefix of the Linux chainload action that will be used to boot Linux.
const LINUX_CHAINLOAD_ACTION_PREFIX: &str = "linux-chainload-"; const LINUX_CHAINLOAD_ACTION_PREFIX: &str = "linux-chainload-";