Skip to content

mgadda/littleos

Repository files navigation

littleos

A small OS.

What does it do?

Not much just yet. The kernel is loaded via GRUB legacy, identity maps the first 3MB of memory and enables paging, configures software and hardware interrupts, sets up the keyboard for input, writes some data to COM1 serial port and logs what it's doing to the screen.

Building

  1. Install bochs (OS X): brew install bochs
  2. Install VirtualBox
  3. Install Vagrant
  4. cd ~/path/to/repo
  5. vagrant up – cross fingers here
  6. vagrant ssh
  7. cd /vagrant
  8. make

In another shell on the host machine, run: make run

While it's possible to run bochs from within Vagrant (some modifications to bochssrc.txt are required), it's a terrible idea. Bochs is already a pretty slow emulator, then compounded by running it inside Virtual Box. So it's better to do the compilation within vagrant (virtual box) to ensure a consistent development environment but then test/run the kernel on the host development machine.

The takehome is that you have to remember to run make inside the Vagrant box before make run otherwise your build experience will be at the mercy of the host development machine. If that happens to be some kind of linux, it might go okay. If that happens to be macOS, it will almost certainly fail.