Hobbyist Operating System targeting x86_64 systems. Includes userspace, Virtual File System, An InitFS (tarfs), Lua port, easy porting, a decent LibC and LibM, and a shell that supports: piping, file redirection, and more.

Overview


SynnixOS Logo
SynnixOS

Build Status Architecture

Epic Hobby OS targeting x86_64 CPUs, it includes some hacked together functionality for most essential OSs although, with interactivity via QEMU serial0

Grab the latest stable release here

And pick up a nightly build here

Latest releases are released when I upload it manually, and nightly are at 10:30am UTC everyday (which is 10:30pm at night for me).

Requirements

  • Atleast 5GB is required to store the full compiled source and toolchain

  • 2GB or more available RAM is recommended for building the project

  • Dual Core at the bare minimum is recommended

Features

  • ELF Loader

  • Multiboot support

  • POSIX Compliance

  • Lua port

  • Userspace

  • Kernel Modules

  • Serial communications

  • Synchronous Processing

  • Multi-threading

  • Virtual File System

  • TTY

  • PCI support

  • Syscall tracing for debugging

  • Decent LibC

  • LibM

  • InitFS

  • Interactive Shell supporting piping, file redirection and executable search path

  • x86_64 support

  • Networking stack (Sockets, Maybe TCP in the future)

  • Proc File System

  • Unix-like enviroment

  • GRUB Bootloader, not sweaty limine. (Could probably port it though 🤔 )

Contributing

Learn more about how you can help here!

Documentation

Documentation can be found here!

Dark mode Doxygen theme by Doxygen Awesome

Building

For building SynnixOS you'll need a few dependencies. Please install the following on your unix-like system (If on windows consider WSL)

(These follow Ubuntu package names for APT)

  • mtools
  • grub-pc-bin
  • nasm
  • libgmp-dev
  • libmpc-dev
  • libmpfr-dev
  • xorriso
  • ruby
  • build-essential
  • python3

After installing these dependencies you'll need to build the x86_64-synnixos toolchain for cross compiling the OS and it's programs. Run the ./scripts/build_toolchain.bash file from the root of the git repository and wait around 10 or so minutes for it to complete.

Once the toolchain has finished compiling you can run make in the root of the repo to build the OS it should optimaly take only around 30 seconds to compile the OS.

Then after compiling the OS initially cd into external and run ./make.bash to build the various ports of third party software, then go cd .. back into the root directory and run make once more to package the ports into the ISO

After completing all these steps, you may run ./run.rb to run the QEMU emulator with the synnixos.iso ISO

Tested on

Building SynnixOS has been tested only on unix-like enviroments. Here are the following tested operating systems:

Distribution Version Working?
Ubuntu 20.04.2 LTS (WSL x86_64) YES
Ubuntu 20.04.2 LTS x86_64 YES
Kali 2021.1 (WSL x86_64) YES

References

Books and resources

OSDev Wiki - https://osdev.org

The Little OS Book - https://littleosbook.github.io/

Projects

Sortix - https://sortix.org/

Pedigree Project - https://miselin.github.io/pedigree/

Aenix - https://github.com/littleosbook/aenix

The Managram Project - https://github.com/managarm

Toaruos - https://github.com/klange/toaruos

mOS - https://github.com/MQuy/mos

Other awesome OS projects

VisualOS - https://github.com/nothotscott/VisualOS

Aero - https://github.com/Andy-Python-Programmer/aero

License

SynnixOS is licensed under the MIT License

Issues
  • Epic8 CPU Emulator

    Epic8 CPU Emulator

    Port CPU emulator, will require the development of a C implementation using SynnixOS's LibC. Definitely not going to attempt to port the JVM any time soon lol. Epic8 CPU Emulator here.

    TODO Ports 
    opened by RaidTheWeb 1
Releases(2021.8.6)
Owner
RaidTheWeb
Web Developer, Low Level Systems Developer, and OSDev, Avid Programmer, Pronouns: he\him
RaidTheWeb
An x86_64 hobbyist OS written in C and Assembly

KnutOS An x86_64 hobbyist OS made for FUN and LEARNING! It is written in C and Assembly and features a monolithic kernel. Screenshots Features Limine

Yves Vollmeier 27 Jul 28, 2022
Shell program written in C to implement various system calls, with support of executing commands, output redirection and signals.

Use ./shell command to start the shell. $<space>path/executable to run the executable(please specify the path without beginning it with "/"). Eg. type

Ayuj Panchal 1 Nov 15, 2021
Proof of concept userspace filesystem that executes filenames as shell commands and makes the result accessible though reading the file.

ExecFS Proof of concept userspace filesystem that executes filenames as shell commands and makes the result accessible though reading the file. $ ./ex

Camel Coder 28 Aug 5, 2022
Just a really cool scheme made from a really good palette from a really decent background.

LetsHaveKiddos | Royalty Just a really cool scheme made from a really good palette from a really decent background. Honorable mentions The dunst notif

christian jones 9 May 31, 2022
A small, fast, vectorizeable libm

jodiemath a small, fast, vectorizeable libm goals: all functions have absolute or relative error ~= 0.000010 or less, this isn't a fast math library,

null 8 Mar 29, 2022
Memory Process File System (MemProcFS) is an easy and convenient way of viewing physical memory as files in a virtual file system

The Memory Process File System (MemProcFS) is an easy and convenient way of viewing physical memory as files in a virtual file system.

Ulf Frisk 1.4k Aug 8, 2022
A distribution of the cFS that includes the cfe-eds-framework which includes NASA's core Flight Executive(cFE) and CCSDS Electronic Data Sheets(EDS) support.

core Flight System(cFS) Application Toolkit(cFSAT) - Beta Release A distribution of the cFS that includes the cfe-eds-framework which includes NASA's

OpenSatKit 13 Jul 3, 2022
It's a simple and free x86_64 architecture operating system created by one person, GoofOS started since 2022

This project is while developing... GoofOS GoofOS is a text operating system for x86 computers. About This is a 32 bit x86_64 graphical operating syst

null 3 May 1, 2022
An x86_64 operating system

Vigil Vigil is a x86_64 operating system. Features Booted by Limine using the stivale2 protocol Physical memory manager Virtual memory manager "Slab"

null 20 Aug 12, 2022
android analysis tools, jni trace by native hook, libc hook, write log with caller's addr in file or AndroidLog

编译方法 unix like mkdir "build" cd build cmake .. -DNDK=your_ndk_path/Android/sdk/ndk/22.0.7026061 -DANDROID_ABI=armeabi-v7a make -j8 或者使用andriod studio编

pony 50 Aug 9, 2022
A hobbyist 64-bit kernel written in C!

Discitix Kernel A hobbyist kernel written in C! About Discitix is a kernel being written to wander in the world of low level! Discitix aims to be POSI

Ayush Yadav 8 Jan 25, 2022
SafetyHook - simple procedure hooking library for Windows x86 and x86_64 systems

SafetyHook SafetyHook is simple procedure hooking library for Windows x86 and x86_64 systems. It aims to make runtime procedure hooking as safe as pos

null 16 Jul 2, 2022
mimic of libc’s printf function (42 Project, mandatory part only)

42printf mimic of libc’s printf function (42 Project, mandatory part only) This hasn't been tested yet by moulinette and is not recommended to take as

null 1 Oct 26, 2021
DLL Hooker using DLL Redirection

DLLHooker DLL Hooker using DLL Redirection. Development Environment IDE: Visual Studio 2019 Demonstration References [1] https://www.exploit-db.com/do

Jack Ren 1 Jan 21, 2022
My_Shell is a user-defined interactive shell written in C that works similar to the original shell in linux

MY_SHELL Overview My_Shell is a user-defined interactive shell written in C that works similar to the original shell and it can execeute many of the l

Greeshma 1 Nov 22, 2021
A dependency free, embeddable debugger for Lua in a single file (.lua or .c)

debugger.lua A simple, embedabble debugger for Lua 5.x, and LuaJIT 2.x. debugger.lua is a simple, single file, pure Lua debugger that is easy to integ

Scott Lembcke 577 Aug 7, 2022
KePOS is a 64-bit operating system. Design and implement your own operating system

KePOS is a 64-bit operating system. The purpose of this system is to combine the theoretical knowledge and practice of the operating system, and to deepen the understanding of the operating system.

null 65 Jul 27, 2022
Creates a virtual disk in memory and provides the user a shell to interact with it

Tiny-File-System Creates a virtual disk in memory and provides the user a shell to interact with it Known bugs with Export missing chars at the end of

Alex Fuller 2 Nov 23, 2021
Techniques based on named pipes for pool overflow exploitation targeting the most recent (and oldest) Windows versions

Table of Contents Table of Contents Introduction Named-Pipes Introduction Exploitation Spraying the non-paged pool Memory Disclosure/Arbitrary Read Co

null 133 Aug 16, 2022