Skip to content
/ SINX Public

A basic 64bit multiboot2 compliant operating system for learning purposes

Notifications You must be signed in to change notification settings

ShoneGK/SINX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SINX

A basic 64bit multiboot2 compliant operating system for learning purposes

Working Screenshot

FEATURES

This operating system was never meant to be used in the real world but rather as a hobby project

  1. coreutils such as echo
  2. fairly stable TUI
  3. basic VGA and keyboard driver
  4. support for 64 bit
  5. 16 bit color
  6. GRUB bootloader

BUILDING

make sure you have docker and qemu installed and running

  1. download and extract the source
  2. cd into source directory
  3. create a docker image using the provided Dockerfile (you only have to do this once!) docker build buildenv -t sinx-buildenv
  4. enter the docker environment
  • Linux or MacOS: docker run --rm -it -v "$(pwd)":/root/env sinx-buildenv
  • Windows (CMD): docker run --rm -it -v "%cd%":/root/env sinx-buildenv
  1. run makefile inside docker env make build
  2. exit docker environment exit
  3. run the iso! sudo qemu-system-x86_64 kernel.iso

TODO

  • do a very basic code organize
  • make a keyboard driver
  • add a more advanced keybord input system
  • clean up / remove print.c
  • make a red screen of death / kernel panic state
  • add the ability to BACKSPACE
  • do a complete filetree redisign
  • GET 64 BIT/LONG MODE SUPPORT
  • make a basic input system
  • rewrite VGA driver for stability/font control
  • make a more advanced userland shell
  • add basic command framework
  • fix enter and backspace bugs
  • add a blinking cursor
  • read from RTC
  • rewrite all c code into file.c and file.h respectively
  • create/modify a better build system
  • cache all unmodded files for faster compile time
  • add inturupts
  • test on real hardware
  • organize functions into appropriate files
  • add full ASCII compatability
  • convert project to camelCase
  • organize #include statements to remove repeats
  • add POSIX compliance
  • add filesystem support