|Tests / Coverage||Go 1.7.x||Go 1.8.x||Go 1.9.x||Go 1.10.x||Go 1.x|
The goal of this project is to build a 64-bit POSIX-compliant tick-less kernel with a Linux-compatible syscall implementation using Go.
This project is not about building yet another OS but rather exists to serve as proof that Go is indeed a suitable tool for writing low level code that runs at ring-0.
Note: This project is still in the early stages of development and is not yet
in a usable state. In fact, if you build the ISO and boot it, the kernel will
eventually panic with a
Kmain returned error.
To find out more about the current project status and feature roadmap take a look at the status page.
Building and running gopher-os
make run-qemu or
A detailed guide about building, running and debugging gopher-os on Linux/OSX as well as the list of supported boot command line options are available here.
How does it look?
80x25 (stadard 8x16 font):
1024x768 (10x18 font):
2560x1600 (14x28 font):
gopher-os is Open Source. Feel free to contribute! To get started take a look at the contributing guide.
gopher-os is distributed under the MIT license.
Package logo contains logos that can be used with a framebuffer console.
|Package logo contains logos that can be used with a framebuffer console.|
Package goruntime contains code for bootstrapping Go runtime features such as the memory allocator.
|Package goruntime contains code for bootstrapping Go runtime features such as the memory allocator.|
Package sync provides synchronization primitive implementations for spinlocks and semaphore.
|Package sync provides synchronization primitive implementations for spinlocks and semaphore.|