Home

Awesome

<p align="center"><img src="https://github.com/mrgian/felix/assets/10211171/5b3ee648-1886-4727-9d05-cedb53fc828e" height=150></p> <h1 align="center">Felix OS</h1> <h3 align="center"> x86 operating system </h3>

Description

Felix is an experimental operating system for the Intel IA-32 architecture (x86).

It's written completely from scratch in Rust and doesn't use any external dependencies.

This project is part of the work for my bachelor thesis in computer engineering. You can read it here.

Pictures

Felix running in QEMU:<br>

felix_qemu

felix_qemu

Felix running on real hardware:<br> felix_real

Features

Bootloader

Kernel

Shell

Available commands:

libfelix (standard library)

Building

You can download a pre-built image or you can build it by yourself using Docker.

Download pre-built image

build

A build is made for every commit.

To download the latest build click on the badge above, then click on the most recent build and download the artifact.

Build using Docker

First make sure you have Docker installed. Then:

  1. Clone the repo git clone https://github.com/mrgian/felix
  2. Change dir to repo cd felix
  3. Build the image docker build -t felix-image .
  4. Run the container docker run --name felix-container felix-image
  5. Copy build from container to host docker cp felix-container:/root/felix/build .

Build on MacOS/Linux

Make sure you have rustup,mtools,dosfstools and fdisk installed on your system, in any case makefile script will try to install them for you.

git clone https://github.com/mrgian/felix
cd felix
make all

Running

The final disk image is build/disk.img

make run

Or you can run it on a real x86 computer by copying the disk image to a USB drive using this command: sudo dd if=build/disk.img of=/dev/sdX status=progress and then booting from USB.

Progress

Roadmap

The following features are planned to be added sooner or later:

Credits

This project is entirely developed by Gianmatteo Palmieri<br> Logo design by Veronica Grana