Giter VIP home page Giter VIP logo

enki-os's Introduction

enki-os

A basic x86 kernel to learn how operating systems get from BIOS to userland.

This is my first dive into the deep world of operating systems. I hope to make another kernel in the future using the things I learned here. This one still needs a lot of love and care it probably won't get.

Named after Enki, Sumerian god of water, knowledge, crafts, and creation.

Features / Goals

  • Custom bootloader
  • FAT-16 file system (except fwrite)
  • PS/2 keyboard driver
  • Static ELF file loading
  • Partial LibC
  • Process create/manage via TSS
  • Userland with basic shell
  • Basic Multitasking (timer based)

docs/enki-test.png

Building Locally

  • Install dependencies and build cross compiler: make toolchain
  • Build OS image: make
  • Build OS image and launch in QEMU: make qemu
  • Build OS image and launch with GDB connected to QEMU: make debug

TODO Items

  • Proper trapping/exception handling
  • Shift key
  • Scrolling terminal
  • Cursor support
  • Clear terminal
  • Init Floating Point Unit (FPU)
  • Reboot command
  • ACPI
  • PC speaker support
  • Terminal color support
  • Abstraction over PIC
  • Abstraction over timer
  • Gather system info and print on startup (memory, timer, etc)
  • Stack smash protector
  • Multiboot header
  • Dockerfile with toolchain installed? Github action?

Limitations

  • Lazy A20 line enable; Could potentially fail on some systems
  • Memory fragmentation
  • Only one drive supported (master - drive 0)
  • Missing FAT16 write
  • ELF file loading loads entire file into heap memory...
  • Only supports loading static ELF files
  • Simple multitasking via timer
  • Limited process control (no fork or exec)
  • No threading
  • Probably a lot more I'm forgetting...

References

enki-os's People

Contributors

barrettotte avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.