Skip to content

emexlab/emexOS

Repository files navigation

emexOS

a simple x86_64 Operating System in C made from scratch

GitHub License GitHub repo size GitHub Repo stars

-> emexOS is not based on any existing kernel <-
Discord Badge

What is emexOS?

emexOS is a small graphical operating system entirely written from scratch in C by emex and all its contributors. It's designed for customizer and retro-enthusiasts, who want to fully change the look of their system and love retro-style.

Build Dependencies

For building and compiling emexOS, ensure you have the following installed:

  • x86_64 GCC cross-compiler - This is our preferred compiler for the source code. Currently, emexOS only supports 64-bit x86 machines, but we plan to support more architectures in the future.
  • NASM - Assembler.
  • QEMU - Our preferred emulator.
  • Xorriso - ISO creation.
  • Git and wget - To fetch dependencies.
  • CPIO (use brew install cpio) - For the RAM disk.

You can also use Zig instead of GCC if you prefer to.

For Nix Users

Ensure you have flakes enabled first, then run nix develop to enter the provided development shell which will have all build dependencies and such installed for you. I'd recommend updating the flake using nix flake update as it's sometimes not updated for long periods of time.

Building and Compiling

With all build dependencies installed, you can finally build and run emexOS.

Using gnu-make

  • make fetchDeps - Fetch all libraries and such that emexOS depends on e.g. Limine. git and wget are used for this.
  • make - Build emexOS.
  • make run - Emulate emexOS using QEMU.
  • make clean - Clean up all build outputs.

Using Zig

  • zig build - Fetch, build and run.
  • zig build -Dnofetch - Build and run.
  • zig build -Dclean - Remove (cache, output), fetch, build and run.
  • zig build -Dnofetch -Dclean - Remove (cache, output), build and run.

More Screenshots

Desktop

After booting, you will get into login and will be asked for a password and username, both are emex by default. but you can change it in user/apps/login/login.c .

Currently, no SMP support is available just yet so emexOS runs using only a single core.

readme by emex, Voxi0 and Bi Moz