Git Product home page Git Product logo

dexpros's Introduction

DexprOS

A simple operating system for x86-64 UEFI machines written in C and assembly. Made as an experiment to see if I could actually develop something so low-level as an OS.

DexprOS running under QEMU

What is it capable of?

For now, DexprOS is able to:

  • setup graphics using UEFI Graphics Output Protocol,
  • exit UEFI boot services,
  • set up its own 4-level or 5-level page map,
  • load a working General Descriptor Table and Interrupt Descriptor Table,
  • setup PIC (Programmable Interrupt Controller) and PS/2 controller,
  • handle keyboard input and convert it to unicode characters,
  • process a few commands in a simple shell: echo, clear, help, shutdown, reboot.

Planned features

As DexprOS is just an experiment and my focus goes mainly to other projects, new features may be introduced slowly over time.
Here are my upcoming plans:

  • memory allocation,
  • syscalls,
  • userspace code execution,
  • parsing some ACPI structures.

Compiling

The supported compilers are:

  • Clang. When compiling with Clang, a toolchain file isn't required. A proper target is set automatically when configuring the project.
  • MinGW cross-compiler. Within the cmake/cross-compile-toolchains directory, there is a CMake Toolchain file to easily cross-compile the code on Linux if you have MinGW installed.

You can use CMake directly or execute either build-clang.bash or build-mingw.bash script if you're running Linux.

Running

To run on real hardware, create a bootable FAT32 partition on a USB drive. Then copy the BOOTX64.EFI file from your build directory to /EFI/BOOT/BOOTX64.EFI on your USB.

You can also use the generate-img.bash script to generate a disk image that you can run under QEMU.

Dependencies

Code:

  • GNU EFI (bundled with the project itself in third-party/gnu-efi-code),

Building:

  • Either Clang or MinGW cross-compiler,
  • CMake build system.

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.