Cynix is a simple IA-32 monolithic unix-like kernel written from scratch in C and asm for educational purposes. You can get it here or even browse the code online. The code is licensed under WTFPL.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar
14 rue de Plaisance, 75014 Paris, France
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
Keep in mind that cynix is undergoing development.
-
Uniprocessor support only
-
Multitasking
-
Virtual memory
-
Read-only ext2 driver
-
Various syscalls (shown below)
-
Basic kernel heap allocator (easily replaceable)
-
Built-in kernel debugger
-
Keyboard/rtc/pic/rs232 drivers
-
PCI driver
-
RTL8139 driver
-
ELF loading (only statically linked binaries)
-
Multiboot compliant
-
Sleep/wakeup mechanism for processes
-
Kernel threads
-
Spinlocks
-
Primitive IPC using pipes.
The following syscalls are currently supported: (exit, fork, read, write, open, close, waitpid, execve, isatty, getpid, getppid, readdir, dup, dup2, stat, fstat, sbrk, getuid, setuid, getgid, setgid, pipe).
One of the primary goals is to get cynix to the point where it can run bash or rc. It should not take too long anymore for that to happen.
During the development of the project, I’ve had to refer to various books and manuals. Apart from the standard Intel and other technical manuals, the following two books were very helpful.