Development is underway in one of the branches,
main
contains only working versions of the operating system. Build instructions are down below.
Quantum OS is a continuation project of my ever loving joy for operating system development. I started with a project called FluxedOS; but due to the limitations with c
and c++
, I found myself doing much more work than what should be necessary to program basic Kernel features. This made programming FluxedOS feel like a chore sometimes, and I would spend months working on concepts just because of memory safety issues. This is why I started QuantumOS.
QuantumOS has the idea of being memory safe, and well documented. I want to make an operating system that has an ever dying care for every line of code written. I would like the Kernel to have a whole new feel then anything seen before.
I feel like Operating Systems have become very boring, and progression has stopped trying to bring a new architecture to the realm of System Development.
QuantumOS is one of the few Operating System projects written in the Rust Programming Language. Rust is a programming language that is supposed to solve the aforementioned issues encountered with c
and c++
. This makes development time much faster and easier to maintain, plus having the idea of compiled code is working code. Every time you compile rust, it is guaranteed that you have a memory safe and “working” program. This ensures that almost all problems that were causing my Kernel to crash in c++
would be caught by the compiler.
This is not the only reason that QuantumOS is different. QuantumOS is not going to be based on an existing Operating System. This means that how the file system interacts with the Kernel, and how the system is laid out as a whole is going to be slightly if not wildly different then Linux or Posix
Since the Kernel is small, its super easy to build and get running. Follow the few basic steps to get running.
* Qemu
* Rust (rustup, cargo)
* llvm-tools
(Auto install script coming soon)
# There is a cargo project dedicated to building and running QuantumOS, it is stored in the /Meta subdirectory.
&> cd Meta/
# The build script supports many different functions (please note: Not all of these are fully implemented)
&/Meta/> cargo run -- help
Meta QuantumOS Compile Script
Usage: meta [OPTIONS] <COMMAND>
Commands:
build Build QuantumOS and all of its dependencies
run Run QuantumOS
test Test QuantumOS
clean Delete Build artifacts
help Print this message or the help of the given subcommand(s)
Options:
-b, --bootloader <BOOTLOADER>
Which bootloader to use (bios / uefi)
[default: bios]
Possible values:
- bios: Use bios booting
- uefi: use uefi booting
--kvm
Enable KVM
-d, --debug-compile
Debug Compile Mode
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
# Now lets build and run the project!
&/Meta/> cargo run -- run
...
# This will build and run QuantumOS with normal bulid options!
# There should be no extra work to get Quantum Booting :)
- Make a fork of the project
- Commit fairly (use details of what you changed in each commit)
- Submit a pull request for addition to the main branch
- Check changes
- Click the fork button at the top right corner
- If you need more help, click here
After you make a change, make a small explanation of the changes you made. An example is
&> git add *
&> git commit -a
Added 'MyNewFile.txt'. This file helps explain the contributing.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch main
# Your branch is up to date with 'origin/main'.
#
# Changes to be committed:
# new file: MyNewFile.txt
#
# Untracked files:
# .vscode/
#
# Press ctrl+X then Y then enter to exit and save
&> git push
Go to the main project source (corigan01/QuantumOS). Then click on pull requests. From here you pull in your repo into the main branch.
When you make a pull-request github will check to see if the code works. If github fails to build the code, then you will need to fix and commit those changes. If github is able to build the file, then we will pull it into the main branch!