This is compilation of Labs completed by LynxLine ( into the source code repository.

We started a small and exciting project just for fun as “Porting Inferno OS to Raspberry Pi”. Of course we would like to run it there as native, not hosted. It was always declared that this OS is very simple for porting to new platforms, so let’s just research this and reach new distilled experiences of system programming. Also this OS is very small, simple and easy to tweak for research purposes.

We decided to organize it as some set of small labs with very detailed steps of what is done to reach results and make everything easy to reproduce.

Season 1: Road to boot…

  1. Lab 1, Compiler
  2. Lab 2, Hardware
  3. Lab 3, R-Pi Booting process
  4. Lab 4, Loading kernel
  5. Lab 5, Hello World
  6. Lab 6, Compile something
  7. Lab 7, linking, planning next
  8. Lab 8, memory model
  9. Lab 9, coding assembler part
  10. Lab 10, Bss, memory pools, malloc
  11. Lab 11, _div, testing print
  12. Lab 12, interrupts, part 1
  13. Lab 13, interrupts, part 2
  14. Lab 14, interrupts, part 3
  15. Lab 15, Eve, Hello World from Limbo!

Season 2: Close to hardware…

  1. Lab 16, Adding clocks, timers, converging to 9pi codes
  2. Lab 17, mmu init
  3. Lab 18, we have a screen!
  4. Lab 19, keyboard through serial, fixes to get Ls
  5. Lab 20, devusb, usbdwc and firq, first step to usb
  6. Lab 21, porting usbd, fixed in allocb, see usb in actions
  7. Lab 22, Usb keyboard
  8. Lab 23, hard disk or SD card
  9. Lab 24, network, part 1
  10. Lab 25, network, part 2
  11. Lab 26, floating point



  1. Download latest zip package from Downloads
  2. Pepare SD card with first DOS partition for boot (about 100MB, there is a problem with dossrv and large partitions)
  3. Unzip all files to SD (boot.scr, kernel.bin, ... should in root of SD)
  4. Boot Raspberry Pi
  5. By default it starts styxlisten -A tcp!*!564 export /, so you can mount it on other host by mount -A tcp!!564 /n/remote/rpi (-A means no auth, IP is for example, see what it got by DHCP)

Special thanks:

  • Charles Forsyth
  • Richard Miller
  • Peter D. Finn