The kernel for LibertyOS.

Overview

LibertyOS Logo

This is the official repository of the LibertyOS kernel. LibertyOS is an operating system, built with Rust, that is open-source, free-to-use, and open to new contributors. Everything in LOS is, or will be, built from scratch. Currently, LOS supports x86_64 systems, and can be booted on real hardware, using a simple bootloader. This operating system is being worked on continuously, and all changes are logged in the VERSIONHISTORY.md file (in the root directory of this repository). If you want to see a more detailed explanation of changes between versions, you can read the commits on the GitHub repository.

CURRENTLY IMPLEMENTED FEATURES

  • Support for x86_64
  • A small array of tests
  • Error handlers
  • Built-in support for running LOS with QEMU
  • Displaying text
  • Colored text

WIP FEATURES

  • Basic memory allocation
  • Integrating the alloc crate
  • Basic documentation

PLANNED FEATURES

  • A simple shell
  • Custom filesystem
  • Support for ARM-based targets
  • Support for glibc/musl (or, perhaps, rewriting certain parts of them)
  • Support for FAT, FAT32, EXFAT filesystems
  • Support for ext2, ext3, ext4 filesystems
  • Support for NTFS filesystem
  • Basic networking
  • Hostnames
  • Ability to update the kernel from within the operating system
  • A better, nicer font
  • Full support for ASCII
  • System time
  • Basic customization
Comments
  • Little help

    Little help

    Hi Daniel,

    You asked if I could help you - sure, I can.

    Probably github discussions is not the best medium for comms, so lets figure out what we can use - Telegram, Zulip, Discord, Matrix, or forum.osdev.org forums - anything works.

    opened by berkus 5
  • HUGE PAGES ARE UNSUPPORTED

    HUGE PAGES ARE UNSUPPORTED

    Is this a successful run? Built from latest main commit with cargo build --release; cargo run --release Same without release flag.

    LIBERTY-OS
    KERNEL VERSION 0.9.7
    
    VirtAddr(0xb8000) -> Some(PhysAddr(0xb8000))
    VirtAddr(0x201008) -> Some(PhysAddr(0x401008))
    VirtAddr(0x10000201a10) -> Some(PhysAddr(0x27fa10))
    panicked at `[ERR] HUGE PAGES ARE UNSUPPORTED`, src/mem.rs:37:43
    

    If so, please, provide expected behavior in the README.md

    % qemu-system-x86_64 --version
    QEMU emulator version 6.0.0 (Debian 1:6.0+dfsg-2expubuntu1.1)
    Copyright (c) 2003-2021 Fabrice Bellard and the QEMU Project developers
    
    % lsb_release --all
    Distributor ID:	Ubuntu
    Description:	Ubuntu 21.10
    Release:	21.10
    Codename:	impish
    
    % rustc --version
    rustc 1.59.0-nightly (0fb1c371d 2021-12-06)
    
    opened by Kepler-Br 3
  • Improve performance of creating and filling a vector in line 56 of src/main.rs

    Improve performance of creating and filling a vector in line 56 of src/main.rs

    In line 56 of src/main.rs there is an inefficient creation and population of a vector. This pull request improves this by creating and populating the vector with iterator collect instead of a for loop which pushes a number onto vector with each iteration. This optimization was originally noticed by reddit user NateReinarWoodwind.

    opened by mycielski 2
  • Dockerfile modified from work earney started in issue #5.

    Dockerfile modified from work earney started in issue #5.

    This docker file documents the podman version of commands as that is what I used on Archlinux. The equivalent Docker commands should also work. The target/ directory was added to .dockerignore.

    opened by davethiede 1
  • Update issue templates, add .gitignore, update README.md

    Update issue templates, add .gitignore, update README.md

    Added issue and feature request templates .gitignore would be nice too Updated README.md with "expected behavior"

    Glad to contribute to LibertyOS kernel! Feel free to criticize, edit or request additional features/corrections to this PR I will update my issue to match new issue template after your approval

    opened by Kepler-Br 1
  • Find new name for the kernel

    Find new name for the kernel

    Is your feature request related to a problem? Please describe. The name LibertyOS is already taken by a linux distro advertising as the first blockchain operating system.

    Describe the solution you'd like Find a new name.

    Describe alternatives you've considered The alternative is not changing the name, but that would lead to confusion and this kernel's reputation might suffer by being associated with the distro mentioned above.

    Additional context Reddit post on r/rust from 2021-12-15

    enhancement 
    opened by Aloso 1
  • [BUG] error: cannot find macro `asm` in this scope

    [BUG] error: cannot find macro `asm` in this scope

    Describe the bug When I tried building the kernel from the source when crates were building at the moment of compilation of lazy_static error: cannot find macroasmin this scope error appeared.

    To Reproduce Steps to reproduce the behavior:

    1. Build the kernel from the instructions on the Github page. The error happened when I ran cargo build

    Expected behavior Expected that the kernel would build succesfully

    Additional information

    • Architecture: x86_64
    • OS: Debian 11
    • Build environment: plain linux
    • QEMU version: QEMU emulator version 5.2.0 (Debian 1:5.2+dfsg-11+deb11u1)
    • rustc version: rustc 1.59.0-nightly (c5ecc1570 2021-12-15)
    • Commit hash: here
    bug 
    opened by nikitundrik 1
  • add ability to build LibertyOS from docker.

    add ability to build LibertyOS from docker.

    Add a dockerfile so that LibertyOS can be built from a docker image. This will allow LIbertyOS to be built in a "container" so that all dependencies, etc will be built in the docker container and will not contaminate the host operating system. I will try to create a sample Dockerfile and post it here when I am done. I'm a beginner in dockerfiles, so maybe someone with more experience in docker can take a look at the file I post and suggest improvements.

    opened by ghost 4
Releases(0.9.1)
Owner
null
A tiny 32 bit kernel written in Rust

rustboot A tiny 32 bit kernel written in Rust. I was inspired to download Rust and try to do this after seeing zero.rs - a stub that lets Rust program

Charlie Somerville 1.5k Dec 30, 2022
Experimental kernel for embedded devices written in Rust

bkernel is an experimental kernel for embedded devices written in Rust. I'm mostly trying out Rust now to see how it applies to kernel development. Pr

Alexey Shmalko 84 Dec 13, 2022
💻 An x86_64 kernel in the works

BruhOS a basic x86_64 kernel in the works. cool stuff written in rust boots with any stivale2-compliant bootloader framebuffer bitmap font renderer pm

Safin Singh 9 Jun 8, 2021
Open Source Rust kernel; Runs WASM and WASI as lightweight containers.

?? etheryal Kernel etheryal kernel is an Open Source capability-based Kernel written in the Rust programming language. The kernel allows implementing

null 32 Dec 4, 2022
Basic Rust kernel using Limine

Rust Limine Barebones This is a small kernel that boots using Limine. Build First of all, download Rust ! (I guess you already did it if you are here

Quentincestino 16 Dec 23, 2022
A new operating system kernel with Linux binary compatibility written in Rust.

Kerla Kerla is a monolithic operating system kernel from scratch in Rust which aims to be compatible with the Linux ABI, that is, runs Linux binaries

Seiya Nuta 3.1k Jan 1, 2023
Minimal x86_64 OS kernel written in Rust

rkernel A minimal x86_64 Rust OS kernel. Multiboot2 VGA driver PIC PIT PS/2 Keyboard driver PS/2 Mouse driver TSC RTC Allocator ATA PIO (In progress..

Divy Srivastava 36 Apr 26, 2022
The official kernel for Popcorn OS, and operating system designed for handheld devices.

About Popkern is the kernel for Popcorn OS, an operating system designed for handheld devices. As such, the kernel is (to be) optimised at all levels

Team Scena 3 Sep 19, 2021
🍒 Small, simple, and fast kernel written in Rust. 🌸

?? Small, simple, and fast kernel written in Rust. ??

Cherry Developers 5 May 20, 2022
Examples on how to write Windows kernel drivers in Rust

windows-kernel-rs Note: this is still work in progress! This is a Windows kernel framework in Rust that consists of windows-kernel-sys, a crate that p

S.J.R. van Schaik 77 Dec 28, 2022
Xrs is a POSIX-subset operating system kernel written in Rust.

XRS-OS ( ?? WIP) Xrs is a POSIX-subset operating system kernel written in Rust. Current project team members 0x5459 core developer (he/him) 0x5457 cor

null 7 Nov 16, 2022
Linux kernel modules written in Rust

Linux kernel modules written in Rust A collection of in-progress experimental Linux kernel modules written for the Rust for Linux project To run the o

Milan 10 Nov 13, 2022
Rux - An x86_64 toy operating system kernel written in Rust

Rux - An x86_64 toy operating system kernel written in Rust. Rux is a port of the Hux kernel, my x86 32-bit single-CPU toy kernel written in C, following the OSTEP book structure and terminology.

Guanzhou Jose Hu 6 Feb 26, 2022
An super minimal kernel written in rust

Grisha This project depends on this blog serie Philipp Oppermann's blog Required Knowlege I don't know what you really need to know to learn efficient

Ismail Ait Bella 3 Feb 3, 2022
A custom kernel for educational reasons

A custom kernel for educational reasons

TornaxO7 16 Dec 25, 2022
An x86-64 kernel with ~100% Rust (originally) in a week

litchi-rs An x86-64 kernel with ~100% Rust (originally) in a week. The continuation of Litchi. Try it Make sure the Rust toolchains and qemu-system-x8

Bugen Zhao 38 Oct 11, 2022
Library for loading Linux kernel modules.

liblmod - Library for loading Linux kernel modules Features: modprobe rmmod Example code: extern crate liblmod; fn main() -> std::io::Result<()> {

Zapomnij 2 Aug 2, 2022
Linux ABI-compatible kernel written in Rust

Linux ABI-compatible kernel written in Rust ??️ Screenshot (v0.1.0-alpha.1) ?? Build dependencies To compile GalaxyOS kernel and create basic OS ISO i

Krzysztof Stefańczyk 3 Dec 5, 2022
Kernel density estimation in Rust.

kernel-density-estimation Kernel density estimation in Rust. Kernel density estimation (KDE) is a non-parametric method to estimate the probability de

Seaton Ullberg 16 Jan 16, 2023