Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


A hobby operating system, in Rust

Subscribe to updates I use kernel

Statistics on kernel

Number of watchers on Github 845
Number of open issues 24
Average time to close an issue about 1 month
Main language Assembly
Average time to merge a PR about 14 hours
Open pull requests 13+
Closed pull requests 0+
Last commit over 2 years ago
Repo Created over 4 years ago
Repo Last Updated over 2 years ago
Size 258 KB
Homepage http://intermezzo...
Organization / Authorintermezzos
Page Updated
Do you use kernel? Leave a review!
View open issues (24)
View kernel activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating kernel for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

intermezzOS: kernel

Build Status

intermezzOS is a hobby operating system. This repository is for its kernel. See the website for more.

Also, feel free to join us at #intermezzOS on Freenodes IRC network, if you want to chat.


To build intermezzOS, first you'll need the source:

$ git clone https://github.com/intermezzOS/kernel
$ cd kernel

Next, make sure you're using nightly Rust, and that you have the source code installed as well. The official way to do this is with the rustup tool from Rust's website.

$ rustup override add nightly
$ rustup component add rust-src
$ rustup update nightly

You'll also need xargo. To get it:

 $ cargo install xargo

You'll also need some other things installed on your system; how you get them depends on what system you're running. Consult their documentation to figure out exactly how to install:

  • nasm
  • ld
  • grub-mkrescue: you may also need to install xorriso
  • qemu-system-x86_64

If you're on Bash On Windows, you'll need the grub-pc-bin package, as well as an X server of some kind, like xming. You'll also need to run this:

$ export DISPLAY=:0

You can put it in your ~/.bashrc file to have it automatically work on each session.

If you're on OS X, you might want to use this script to get them. You'll also need to set this in your ~/.cargo/config:

linker = "/Users/yourusername/opt/bin/x86_64-pc-elf-gcc"

Where yourusername is your username.

After all that setup, its as easy as:

$ make run

This will:

  • Build libcore for our x86_64-unknown-intermezzos-gnu target with Xargo
  • Build the Rust code with Cargo
  • Compile the bit of assembly needed to boot
  • Link it all together
  • Build an ISO out of it all
  • Run that ISO in qemu


This project is dual licensed under Apache2/MIT. See the two LICENSE-* files for details.

Code of conduct

The intermezzOS project has a Code of Conduct, please observe it.

kernel open issues Ask a question     (View All Issues)
  • over 3 years explore KVM API
  • almost 4 years move to a higher-half kernel
  • almost 4 years Implement interrupts with error codes
  • almost 4 years Implement keyboards
  • almost 4 years Implement VGA driver
  • almost 4 years Implement multitasking
  • almost 4 years Implement the FAT32 Filesystem
  • almost 4 years Implement user mode
  • almost 4 years Implement paging
  • almost 4 years Implement the serial port
  • almost 4 years We need better docs for the pic crate
  • almost 4 years We need better docs for the keyboard crate
  • almost 4 years We need better docs for the interrupts crate
  • almost 4 years We need better docs for the intermezzos crate
  • almost 4 years We need better docs for the consle crate
  • almost 4 years Cleanup PIC crate
  • almost 4 years README is out of date
  • almost 4 years `cargo test` doesn't work
  • almost 4 years Unit testing; what to do about protected components?
  • almost 4 years QEMU doesn't recognize keycodes (Vagrant)
  • almost 4 years Installation of specific rustc version fails
  • about 4 years Provide cross-compile tools through Homebrew
  • over 4 years Closing qemu Cleanly
  • about 3 years linker-flavor required
  • over 3 years relocation R_X86_64_32 against `.bss' can not be used when making a shared object; recompile with -fPIC
kernel open pull requests (View All Pulls)
  • Mark kmain() as never returning
  • changed ld to x86_64-pc-elf-ld
  • Add backspace key handling
  • Introduce a ringbuffer
  • Serial implementation
  • Stateful keyboard driver
  • grub-mkrescue can be called grub2-mkrescue
  • #70 updated the Readme file
  • Added docs to the interrupts crate
  • Set up the project for project-level testing
  • Install all dependencies on macOS using Homebrew
  • [WIP] implement new VGA as per RFC 0005
  • Ft/mac install
kernel questions on Stackoverflow (View All Questions)
  • Do Linux kernel processes multithread?
  • "Kernel panic" in loading and devtmpfs mounting error into craneboard(am3517_crane)
  • Changing the size of the array in an OpenCL kernel
  • Signal on Kernel parameter change
  • CUDA matrix vector multiplication kernel issues
  • CUDA PTX, driver api - how to get global variable from kernel after execution
  • WorkQueue implementation in Linux Kernel
  • CUDA : Bad performance when allocating heap inside kernel
  • ManagedCuda: IllegalAddress; While Executing a Kernel
  • How to statically build kernel module with buildroot?
  • how to start a process under kernel debugging on windows?
  • Copy function from user space to kernel and execute
  • Kernel build for CentOS 7: kernel-firmware not generated
  • Modify VBO data from OpenCL kernel
  • There alawys has complile error when compile the latest kernel in ubuntu,as follow
  • Explanation of Isotropic Kernel
  • EMV Kernel for CLess Interac card?
  • How / Where to find Linux Kernel Bugs to Fix?
  • why can I enable PCIe MSI on ubuntu 15.04(kernel 3.19.0-42-generic)
  • When I add the option net.ifnames=0 biosdevname=0 in kernel command, the IP route is wrong
  • Linux Kernel Modules between different kernel patches
  • How to check kernel version in Makefile
  • Cannot load my OS kernel
  • How to write a BitBake driver recipe which requires kernel source header files?
  • Systemtap does't show all the local variables in a kernel function
  • Jupyter R kernel crashes
  • How do you get normalized devices coordinates into Apple's Metal kernel functions?
  • Kernel recognizes virtual disks on Azure both as hda and sda
  • Disable kernel tracer
  • Does User space/Kernel Space exist in RTOS?
kernel list of languages used
More projects by intermezzOS View all
Other projects in Assembly