uefi-rs
builder-hex0
uefi-rs | builder-hex0 | |
---|---|---|
15 | 6 | |
1,194 | 27 | |
1.6% | - | |
9.5 | 7.6 | |
3 days ago | 2 months ago | |
Rust | C | |
Mozilla Public License 2.0 | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
uefi-rs
-
I wrote a tiny decrypting UEFI bootloader
Hi, did you know that you can write UEFI-code with Rust? You can, using uefi-rs!
-
This Month in Rust OSDev: February 2023
Thanks for pointing that out. I've filed https://github.com/rust-osdev/uefi-rs/issues/685
- [uefi-rs] - How can you load an arbitrary Rust UEFI protocol without so many crazy ass steps?
- Strange mutable/non-mutable borrow errors with "uefi" crate
-
This Month in Rust OSDev: April 2022
I'm extremely confused as to what's going on here. I think it might be related to Line 129: https://github.com/rust-osdev/uefi-rs/blob/main/src/table/system.rs
-
Writing a Simple Operating System – From Scratch [pdf]
First off I don't recommend implementing the specification from scratch. It is big, and there are implementations already in various languages: for C you can use GNU-UEFI, for example, and for Rust you can use uefi-rs. Zig even has it in its standard library! These take care of the fiddly details of interacting with the UEFI firmware's services.
There's tutorial type articles for these around: for C there's https://wiki.osdev.org/UEFI_App_Bare_Bones, for Rust there's this template https://github.com/rust-osdev/uefi-rs/tree/main/template and the crate's documentation.
-
UEFI vs BIOS. How much does it actually matter now of days?
A few people have made some progress into working with UEFI in Rust, and the results are here: https://github.com/rust-osdev/uefi-rs
-
Would someone mind helping explain where this code actually is?
use uefi::prelude::Handle; points to uefi-rs/src/prelude.rs found here: https://github.com/rust-osdev/uefi-rs/blob/master/src/prelude.rs
-
Unable to boot UEFI/Rust in QEMU
Here is an UEFI app/example that should show you how to write a UEFI bootloader.
- Rustで自作OS 3日目
builder-hex0
- Builder-Hex0 – bootstrap compilers without a prebuilt binary
-
NixOS Reproducible Builds: minimal ISO successfully independently rebuilt
Isn't that what builder-hex0 does?
https://github.com/ironmeld/builder-hex0
-
Saving Knowledge Post-Collapse
They literally create a file system and whole operating system in 4KB of text and it is good enough to bootstrap GCC/Linux ( https://github.com/ironmeld/builder-hex0 )
- Builder-Hex0: kernel for bootstrapping compilers without trusting a binary
- Major breakthrough in bitcoin Trust
-
Writing a Simple Operating System – From Scratch [pdf]
"It is true: in our quest to make full use of the CPU, we must abandon all of those helpful routines provided by BIOS. As we will see when we look in more detail at the 32-bit protected mode switch-over, BIOS routines, having been coded to work only in 16-bit real mode, are no longer valid in 32-bit protected mode; indeed, attempting to use them would likely crash the machine.
"So what this means is that a 32-bit operating system must provide its own drivers for all hardware of the machine (e.g. the keybaord, screen, disk drives, mouse, etc). Actually, it is possible for a 32-bit protected mode operating system to switch temporarily back into 16-bit mode whereupon it may utilise BIOS, but this teachnique can be more trouble than it is worth, especially in terms of performance."
--
In the toy 32-bit OS I am currently writing, having easy disk access and text output was more important to me than performance, so I decided to implement this technique to access the disk and screen via the BIOS instead of writing an ATA disk driver.
Although I could not find any minimal yet complete working examples of dropping to 16 bit and later resuming 32 bit mode, I was able to piece it together and write assembly functions called enter_16bit_real and resume_32bit_mode. See https://github.com/ironmeld/builder-hex0/blob/main/builder-h.... Those routines are working well but beware the project is a volatile work in progress and is coded in hex for bootstrapping reasons.
What are some alternatives?
minimal_uefi - A minimal Rust project to get started with UEFI
axiom-zig - A 64-bit kernel implemented in Zig
uefi_rust
turning-polyglot-solutions-into-t
bootloader - An experimental pure-Rust x86 bootloader
axiom - A 64-bit kernel implemented in Nim
blog_os - Writing an OS in Rust
stage0-posix-x86
littleosbook - Source for the little book about OS development
turning-polyglot-solutions-into-trusted-images
oreboot - oreboot is a fork of coreboot, with C removed, written in Rust.
nixpkgs - Nix Packages collection & NixOS