All Projects → ZystemOS → Pluto

ZystemOS / Pluto

An x86 kernel written in Zig

Projects that are alternatives of or similar to Pluto

Macaron
A sweet hobby made operating system written in C++ for x86 CPUs with GUI
Stars: ✭ 34 (-80.23%)
Mutual labels:  kernel, operating-system, x86
georgios
Hobby Operating System
Stars: ✭ 19 (-88.95%)
Mutual labels:  kernel, operating-system, x86
tinyos
An UNIX-like toy operating system runs on x86 CPU
Stars: ✭ 47 (-72.67%)
Mutual labels:  kernel, operating-system, x86
Jingos
JingOS - The World’s First Linux-based OS design for Tablets
Stars: ✭ 101 (-41.28%)
Mutual labels:  x86, kernel, operating-system
Toaruos
A completely-from-scratch hobby operating system: bootloader, kernel, drivers, C library, and userspace including a composited graphical UI, dynamic linker, syntax-highlighting text editor, network stack, etc.
Stars: ✭ 4,687 (+2625%)
Mutual labels:  x86, kernel, operating-system
scaraOS
A 32bit multiboot OS kernel for IA32 (PC/AT) systems.
Stars: ✭ 31 (-81.98%)
Mutual labels:  kernel, operating-system, x86
Build
Armbian Linux build framework
Stars: ✭ 1,827 (+962.21%)
Mutual labels:  kernel, operating-system, x86
Toaru Nih
NOTICE: The ToaruOS-NIH Project has been MERGED UPSTREAM. This repository is now archived.
Stars: ✭ 66 (-61.63%)
Mutual labels:  x86, kernel, operating-system
RocketOS
RocketOS is a Unix based OS that uses legacy BIOS and GRUB and is written in C17. It is being developed for educational purposes primarily, but it still is a serious project. It is currently in its infancy.
Stars: ✭ 23 (-86.63%)
Mutual labels:  kernel, operating-system, x86
TravorOS
A simple OS running on Intel x86 architecture | No longer updating
Stars: ✭ 24 (-86.05%)
Mutual labels:  kernel, operating-system, x86
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (-69.19%)
Mutual labels:  x86, kernel, operating-system
Reactos
A free Windows-compatible Operating System
Stars: ✭ 10,216 (+5839.53%)
Mutual labels:  x86, kernel, operating-system
Tofita
🍬 All-new kernel for @GreenteaOS
Stars: ✭ 112 (-34.88%)
Mutual labels:  kernel, operating-system
Aura Operating System
AuraOS, the Franco-English Operating System developed in C# using Cosmos!
Stars: ✭ 111 (-35.47%)
Mutual labels:  kernel, operating-system
Raspberry Pi Os
Learning operating system development using Linux kernel and Raspberry Pi
Stars: ✭ 11,000 (+6295.35%)
Mutual labels:  kernel, operating-system
X64dbg
An open-source x64/x32 debugger for windows.
Stars: ✭ 37,825 (+21891.28%)
Mutual labels:  hacktoberfest, x86
U Root
A fully Go userland with Linux bootloaders! u-root can create a one-binary root file system (initramfs) containing a busybox-like set of tools written in Go.
Stars: ✭ 1,816 (+955.81%)
Mutual labels:  hacktoberfest, kernel
Emerald
An operating system written in C
Stars: ✭ 118 (-31.4%)
Mutual labels:  kernel, operating-system
Blizzard Jailbreak
An Open-Source iOS 11.0 -> 11.4.1 (soon iOS 13) Jailbreak, made for teaching purposes.
Stars: ✭ 130 (-24.42%)
Mutual labels:  hacktoberfest, kernel
Serenity
SerenityOS is a love letter to '90s user interfaces with a custom Unix-like core. It flatters with sincerity by stealing beautiful ideas from various other systems.
Stars: ✭ 16,842 (+9691.86%)
Mutual labels:  kernel, operating-system

Pluto

Build Status

Pluto is a kernel written almost entirely in Zig and supports x86, with aarch64 and x64 backends being planned.

Hello image

Goals

  • Should be written in Zig as much as possible. Assembly should only be used where required for functionality or performance reasons.
  • Light and performant. The kernel should be usable both on embedded and desktop class CPUs, made possible by it being lightweight and modular.
  • Basic utilities will be written in Zig. This includes a basic text editor and shell, and will be part of the filesystem external to the kernel itself.
  • Easy to port. The kernel is oblivious to the underlying architecture, meaning that ports only need to implement the defined interface and they should work without a hitch.

All of these goals will benefit from the features of Zig.

Build

Requires a master build of Zig (downloaded or built from source) xorriso and the grub tools (such as grub-mkrescue). A qemu-system binary compatible with your chosen target is required to run the kernel (e.g. qemu-system-i386).

zig build

Run

zig build run

or if you want to wait for a gdb connection:

zig build debug-run

Debug

Launch a gdb-multiarch instance and connect to qemu.

zig build debug

Unit testing

Run the unit tests.

zig build test

Runtime testing

Run the runtime tests.

zig build rt-test -Dtest-mode=<MODE>

Available test modes:

  • None: This is the default, this will run the OS normally.
  • Initialisation: Run the OS's initialisation runtime tests to ensure the OS is properly set up.
  • Panic: Run the panic runtime test.

Options

  • -D[build-mode]=: Boolean (default false).
    • build: Build a certain build mode (release-safe, release-fast, release-small). Don't set in order to use the debug build mode.
    • test: Test a certain build mode (release-safe, release-fast, release-small). Don't set in order to use the debug build mode.
  • -Dtarget=: String (default i386-freestanding). The standard target options for building with zig. Currently supported targets:
    • i386-freestanding
  • -Ddisable-display: Boolean (default false)
    • This disables the display output of QEMU.

Contribution

We welcome all contributions, be it bug reports, feature suggestions or pull requests. We follow the style mandated by zig fmt so make sure you've run zig fmt on your code before submitting it.

We also like to order a file's members (public after non-public):

  1. imports
  2. type definitions
  3. constants
  4. variables
  5. inline functions
  6. functions
  7. entry point/init function

More styling information is available on the wiki

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].