My very own UNIX clone, for education/self-amusement.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.

fotix is a unix like clone.
Copyright (c) 2013 - 2016 Fotis Koutoulakis


fotix is a unix like kernel that I made, mostly for self-education / self-amusement.


  • Interrupt handling.
  • Multitasking capable
  • Some (primal) memory management
  • A (primal) scheduler



To build fotix, you should have a cross-compiler. I personally used GCC-4.9 for my development purposes, targeted at i586. It goes without saying that you should also have binutils. You can get a basic toolchain installed by running the script at utils/ You should also have nasm.

To build the iso, you should also have installed grub-mkrescue and xorriso. To run the iso, you can use any virtual machine hypervisor, although I personally use QEMU, and the one-step-build script is automated to use QEMU.

Building instructions

If you do have all that, just run make at the top of the project's root directory and then run the script (as root). This will create an ISO, and run it with QEMU.

If you don't want to use QEMU, simply modify to not delete the iso image, so that you can use it with another hypervisor, or just replace QEMU with your favourite hypervisor.

I should have a cross compiler built (along with binutils)

  • There is one at earth. It is under $HOME/bin/cross/
  • To use it for the session I have to do export PATH="$HOME/bin/cross/bin:$PATH"

Known bugs

  • When a fork()-ed process attemtps to run, we get a page fault, which results on a kernel panic.


02:50:34 nlightnfotis@earth ~/osdev/fotix $ cloc .
      37 text files.
      37 unique files.
     353 files ignored. v 1.56  T=1.0 s (33.0 files/s, 3337.0 lines/s)
Language                     files          blank        comment           code
C                               14            325            428           1488
C/C++ Header                    13            130            190            459
Assembly                         4             39             48            190
make                             1              6              2             14
Bourne Shell                     1              3              4             11
SUM:                            33            503            672           2162


  • Implement IPC
  • Implement threading
  • Improve memory management
  • Implement a shell
  • Improve the scheduler


fotix is distributed under the BSD 3-Clause license. See file LICENSE for more info.