BaseOS is a template for your operating system. It contains several libraries, including a minimized strandard library (ministd) and a set of tools for compiling the system, installing dependencies, etc.
BaseOS is not yet finished and may not work. It still needs tinkering...
The main goal of this project is to create a reliable and simple platform for creating multi-platform operating systems for various 64 bit platforms. So far only the x86_64 target is supported.
BaseOS provides simplified standard library for Rust and tools that take care of dependencies, building and running the operating system.
This project is not intended to be an example of an operating system, only its foundation.
The whole project is under the M.I.T. license, which allows you to add code/files to the project under different licenses (even proprietary).
Tools are available with the util
tool. It performs project initialization and administration, builds the operating system and installs/removes development dependencies.
It also offers the ./util help
command to learn more.
A UNIX-based operating system is required to use the project. You can use Linux, BSD or MacOS. These systems should be fully supported:
- MacOS (with Homebrew)
- Fedora Linux
- Arch Linux (with yay)
- Ubuntu
- Debian
- CentOS
- FreeBSD
- OpenBSD
Please note that some development dependencies must be built from source on certain platforms. If your operating system is not listed above, it does not mean that it is not supported.
- x86_64
- arm64
- Rust (60% of the work is done)
- rustup (regardless of the target platform)
- The
util
utility will install and set it up for you
- The
- Xorriso - builds the ISO
- Qemu - emulator to test the OS on
- To initialize the project, simply clone the base branch
git clone https://github.com/LittleHobbitFrodo/BaseOS.git
- Choose your target platform and programming language
- Configuring the project using the
util
tool./util conf <arch> <lang>
- for example
./util conf x86_64 rust
- for example
- You can also download development dependencies
./util dep install
- dependencies can be removed using
./util dep remove
- Util
- Project Info
- Project configuration
- Project Reconfiguration
- Running
- Dependency management
- Project management
- mkiso
- Bootable
- Renderer
- STDlib
- Bootloader communication
- limine-rs crate
- Text Rendering
- Output Formatting
- Sync primitives
- used Spin crate
- Panicking
- Heap
- buddy_system_allocator
- String (untested)
- Box
Array
is used for allocation of arrays
- Vector
- HashMap
- Rc
- Arc
- Bootloader communication