Rose, Reaver Project OS
ReaverOS is part of larger - and yet to become actively developed and gather a team - project, from which it has taken its name - Reaver Project, meant to provide full computer environment. More about it on its website.
ReaverOS is an attempt to build modern operating system, aimed at x86-64 architecture with SMP in mind. It is also aiming to be as legacy free as possible, while implementing modern, µkernel design.
- (really basic) scheduler
- kernel timer API using HPET (or PIT, if HPET is not available) for high precision timer and local APIC timer for preemption timer
- AP booting
Please do note: the Reaver Archive tools have been abandoned. That basically means that currently there's no way to fully build ReaverOS to boot. The InitRD format will soon be replaced with something else, probably with tar (although there's a slight possibility that I'll go back to the Reaver archive format, although this time with an implementation that actually makes sense). I'm sorry for the inconvenience of not being able to get a full Rose build from this branch. If you want to see if the system builds for you, please use one of the past tags.
To build ReaverOS, you will need following tools installed on your system:
- POSIX shell (d'oh)
- make (I am personally using GNU make, since I am on Linux; not sure if I am using some specific GNU things, hopefully not)
- clang++, libc++ for building the kernel, binutils and other tools (I have no plans of supporting GCC at any point in the future)
If any of those required tools doesn't cooperate during build, feel free to contact me (Griwes @ #reaver on Freenode, @Guriwesu on Twitter), but be prepared to get an answer saying "upgrade your tools". I usually Clang's HEAD every month or so, and using every bleeding edge features I feel I need.
To clone and build current revision of Rose, type the following commands in your shell:
git clone git://github.com/griwes/ReaverOS.git cd ReaverOS make prepare make tools make hdd
It is recommended to use a release, not current HEAD, to build the OS, if you want to just try and see it. To get a list
of releases, along with links to download their source code tarballs, visit https://github.com/griwes/ReaverOS/releases
(see warning below before choosing release to build). You should still invoke both
make prepare and
make hdd before
using following instructions to run the OS.
To run ReaverOS, you'll need one of the following:
- Bochs - to invoke Bochs, use plain
makeafter or instead
make preparewill create 1GiB image and bochsrc file that will be used with Bochs by default; if you wish to provide own image (maybe smaller? who knows), consult the bochs manual.
- QEMU - to invoke QEMU, type
make q, it will start the emulator.
- VirtualBox - to use VirtualBox, type
make vbox. This will create a VirtualBox disk image (
builds/directory; use that image as boot image of virtual machine created by you in VirtualBox.
If you really want to run ReaverOS on real hardware (this is possibly a bad idea; in the current state of the OS, it shouldn't
be capable of doing any harm, but it is extremely untested), use
builds/a.img as a raw image of an USB stick and boot it.
If you encounter any bug and want to report it, please attach entire (or as much as you can grab, in case of VirtualBox or real hardware) output of kernel built using these commands:
make clean # clean the non-debug build
followed by one of the following:
make CFL=-DROSEDEBUG # create a debug build and run it in Bochs, OR: make q CFL-DROSEDEBUG # to run it in QEMU, OR: make vbox CFL=-DROSEDEBUG # to create a VirtualBox image with the OS, or: make hdd CFL=-DROSEDEBUG # to just create builds/a.img to be written on USB stick