Giter VIP home page Giter VIP logo

experimental-rust-os's Introduction

Untitled Rust OS

Build License

๐Ÿšง This is an experimental OS project written in Rust. More details to come as it gets developed.

Quick References

License

Except where otherwise specified, this project is dual-licensed under both the Apache-2 and MIT licenses.

experimental-rust-os's People

Contributors

bitwizeshift avatar

Watchers

 avatar  avatar

experimental-rust-os's Issues

Locate kernel in file system

In order for a bootloader to function, it must know how to find the kernel inside of a filesystem in the GUID Partition Table (GPT).

This task is to track finding the actual kernel binary in some way. It's possible, as a first version, this will be implemented without using a file-system, and instead just assuming that the first N bytes will be the kernel -- but will later transition into a proper filesystem implementation.

Load ELF executables

In order for a bootloader to be able to boot a kernel, it needs to be able to make sense of its binary format. This project will be leveraging the standard ELF format, and requires a parser to make sense of the various section headers.

Boot using UEFI Secure-Boot

UEFI defines a spec for "Secure boot", which can allow for the motherboard to have a signed key installed which is validated against a signed UEFI binary. This effectively allows a root of trust from the motherboard/hardware -> bootloader.

This task is to track implementing secure-booting.

Bootloader lives in isolated distribution directory

The typical convention for bootloaders is that they live in isolated directories based on vendor distribution, e.g:

efi/
  boot/
    bootaa64.efi
    bootx64.efi
  grub/
    ...
  Microsoft/
    ...
  Fedora/
    ...

This project should do the same. This will effectively require a "shiv" bootloader that calls out to our custom vendor.

The vendor name is currently undecided, and will likely be left as a placeholder like untitled to begin with.

In-house UEFI support

This project has a goal of being self-sufficient from other projects as much as possible, both so that byproducts of this project can contribute to the rest of the OSI community, but also so that upstream changes won't break downstream dependents.

There exists a decent pre-1.0 uefi crate that can be leveraged for the time being; however it should be relatively simple to implement this without a dependency. All it requires is a custom linker to efi_main that accepts two pointer arguments, and the UEFI spec is defined in terms of C structs that can be mapped to #[repr(C)] struct objects.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.