All Projects → RaidTheWeb → SynnixOS

RaidTheWeb / SynnixOS

Licence: GPL-3.0 license
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.

Programming Languages

c
50402 projects - #5 most used programming language
Makefile
30231 projects
ruby
36898 projects - #4 most used programming language
assembly
5116 projects
shell
77523 projects
lua
6591 projects

Projects that are alternatives of or similar to SynnixOS

KnutOS
An x86_64 hobbyist OS written in C and Assembly
Stars: ✭ 16 (-60%)
Mutual labels:  kernel, x86-64, osdev, operating-system, hobby-os
georgios
Hobby Operating System
Stars: ✭ 19 (-52.5%)
Mutual labels:  kernel, osdev, operating-system, hobby-os
biefircate
Running x86-16 or x86-32 code from x86-64 UEFI; _very experimental_ • mirror of https://gitlab.com/tkchia/biefircate • developer notes at https://gitlab.com/tkchia/biefircate/-/blob/main/doc/NOTES.asciidoc
Stars: ✭ 47 (+17.5%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Macaron
A sweet hobby made operating system written in C++ for x86 CPUs with GUI
Stars: ✭ 34 (-15%)
Mutual labels:  kernel, osdev, operating-system, hobby-os
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 (+11617.5%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Cyjon
A simple, clean code, multi-tasking operating system written in pure assembly language for 64-bit processors from the AMD64 family.
Stars: ✭ 184 (+360%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Wingos
a little 64bit operating system written in c++ with smp support
Stars: ✭ 361 (+802.5%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Dennix
Dennix is a unix-like hobbyist operating system written from scratch.
Stars: ✭ 53 (+32.5%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Cuteos
A 64-bit SMP-safe kernel for the PC architecture.
Stars: ✭ 51 (+27.5%)
Mutual labels:  kernel, x86-64, osdev, operating-system
Dgos
Operating System
Stars: ✭ 90 (+125%)
Mutual labels:  kernel, x86-64, osdev, operating-system
duckOS
Yet another hobby x86 UNIX-like operating system written in C and C++. Features a dynamically linked userspace, an in-house c standard library, and more! And yes, it runs DOOM.
Stars: ✭ 250 (+525%)
Mutual labels:  kernel, osdev, operating-system, hobby-os
saturn
A microkernel based operating system developed from scratch. This repository also includes all Saturn services and applications.
Stars: ✭ 21 (-47.5%)
Mutual labels:  x86-64, osdev, operating-system
MeetixOS
An hobby OS written in modern C++20 which aims to be Unix-like. Currently based on EvangelionNG, a GhostOS derived kernel
Stars: ✭ 179 (+347.5%)
Mutual labels:  osdev, operating-system, hobby-os
kora-kernel
Kernel for my operating system KoraOS
Stars: ✭ 15 (-62.5%)
Mutual labels:  osdev, operating-system, hobby-os
kwast
Rust operating system running WebAssembly as userspace in ring 0
Stars: ✭ 83 (+107.5%)
Mutual labels:  x86-64, osdev, operating-system
MoonOS
MoonOS (just a kernel atm) is a micro kernel designed for the x86_64 and arm architecure.
Stars: ✭ 82 (+105%)
Mutual labels:  x86-64, osdev, operating-system
pranaOS
A unix operating system written from scratch in c that gives support for arm, x86
Stars: ✭ 138 (+245%)
Mutual labels:  kernel, x86-64, operating-system
homebrew-i386-elf-toolchain
Homebrew formulas for buildling a valid GCC toolchain for the i386-elf target.
Stars: ✭ 62 (+55%)
Mutual labels:  toolchain, kernel, osdev
moros
MOROS: Obscure Rust Operating System 🦉
Stars: ✭ 508 (+1170%)
Mutual labels:  x86-64, osdev, hobby-os
ArvernOS
💾 A minimal, experimental and "toy" monolithic kernel to learn about OS development // Work In Progress
Stars: ✭ 313 (+682.5%)
Mutual labels:  x86-64, operating-system, hobby-os


SynnixOS Logo

Build Status Architecture

PROJECT IS DEFUNCT, I AM WORKING ON CWORD INSTEAD (Different project that is far better already.)

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).

Very Nice - Totally Linus Torvalds

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

  • Ape language 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 🤔)

  • Env Parser (/etc/.env)

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

Project Structure

    |-- docs/ - doxygen documentation (generated on git push)

    |-- external/ - extra software that isn't included normally
        |-- ape/ - ape port
        |-- lua/ - lua port
        |-- Epic8C/ - c port of Epic8 CPU emulator
        |-- kuroko/ - WIP port of Kuroko
        |-- luna/ - WIP port of Luna
        |-- pcc/ - WIP port of portable c compiler
        |-- quickjs/ - WIP port of QuickJS
        |-- synfetch/ - technicaly OS specific neofetch-like program
        |-- tinycc/ - WIP port of Tiny C Compiler
        |-- tinyvm/ - WIP port of tiny virtual machine
        |-- make.bash - script to build all ports

    |-- fakerootfs/ - fake system root to store data and directories that do not get deleted on make clean

    |-- fs/ - file system source code
        |-- include/
            |-- snx/
                |-- fs.h - vfs headers
        
        |-- char_devices.c - character based /dev devices
        |-- directory.c - directory source file
        |-- fs.c - file system source file
        |-- membuf.c - memory buffer source
        |-- pipe.c - piping functions
        |-- procfs.c - /proc file system source
        |-- socket.c - socket based file system source

    |-- include/ - global header files
        |-- basic.h - basic convenience header

    |-- kernel/ - synergy kernel source
        |-- include/
            |-- snx/ - synergy kernel headers
        
    |-- libc/ - user space libc

    |-- libm/ - math library (user space)

    |-- linker/ - dynamic linker (for loading ELFs)

    |-- modules/ - kernel modules

    |-- scripts/ - synnixos scripts

    |-- sh/ - synnixos shell

    |-- sysroot/ - system root?

    |-- toolchain/ - synnixos toolchain

    |-- user/ - user space programs

    |-- x86/ - x86 kernel space functions

    |-- .gitignore - git ignore file

    |-- build.mk - autogenerated build makefile

    |-- CONTRIBUTING.md - contributing information

    |-- ERRNOS - error numbers file

    |-- gitlogo.png - github logo

    |-- init.tar - initFS tar file

    |-- last_output - last output from qemu emulator

    |-- LICENSE - MIT license

    |-- makefile - build makefile

    |-- README.md - root readme

    |-- ROADMAP.md - road map information

    |-- run.rb - qemu emulator runner

    |-- snxk.elf - synergy kernel ELF file

    |-- synnixos.iso - output ISO file

    |-- SYSCALLS - syscall information (for building automatically)

    |-- tap0.pcap - tap0 network file

    |-- TODO.md - things i need done

    |-- version - version information


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

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].