uefi-rs
axiom-zig
uefi-rs | axiom-zig | |
---|---|---|
15 | 3 | |
1,194 | 5 | |
1.6% | - | |
9.5 | 1.8 | |
4 days ago | over 2 years ago | |
Rust | Zig | |
Mozilla Public License 2.0 | - |
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日目
axiom-zig
-
Zig, Rust, and Other Languages
Nim is also a strong player as a systems programming language. In terms of memory management, it's configurable, and by default you get ARC (no GC). I've written a hobby kernel (if you can call it that) in Nim[1] as well as Zig[2], and I found Nim to be much more ergonomic and approachable. The fact that Zig requires weaving an allocator through most calls that may allocate gets in the way of what I'm trying to do. I'd rather focus on core logic and have ref counting take care of dropping memory when appropriate.
One thing I wish Nim had though is true sum types with payloads. I think there's an RFC for that, but it's a shame it's not in the language yet.
[1] https://github.com/khaledh/axiom
[2] https://github.com/khaledh/axiom-zig
- Nim v2.0 Released
-
Writing a Simple Operating System – From Scratch [pdf]
If anyone is interested, I have a couple of implementations of booting under UEFI and getting a bunch of info about the system (don't expect a functioning system, they just boot and dump some info):
Nim: https://github.com/khaledh/axiom
Zig: https://github.com/khaledh/axiom-zig (this one goes into depth in disassembling ACPI DSDT bytecode)
What are some alternatives?
minimal_uefi - A minimal Rust project to get started with UEFI
axiom - A 64-bit kernel implemented in Nim
uefi_rust
linux - Linux kernel source tree
bootloader - An experimental pure-Rust x86 bootloader
builder-hex0 - Builder-Hex0 is a minimal build system which includes a bootloader, kernel, shell, and a hex0 compiler
blog_os - Writing an OS in Rust
v - Write Nim only with 'v'
littleosbook - Source for the little book about OS development
nimbus-eth2 - Nim implementation of the Ethereum Beacon Chain
oreboot - oreboot is a fork of coreboot, with C removed, written in Rust.
jester - A sinatra-like web framework for Nim.