Build & Run


To install the requirements on an apt-based system such as Ubuntu, the following command can be used:

$ sudo apt install make nasm gcc xorriso mtools bochs bochs-x

This will install the tools necessary for assembly, compilation and emulation. Rotary currently uses Bochs as the preferred x86 emulator, however QEMU can also be used.

Running in an Emulator

To run Rotary using the preferred emulator Bochs, you can do a clean build and run using the following:

$ make clean && make && make run-bochs

Bochs should then appear with a debugging window and the emulated video output.

Running on Real Hardware

To run Rotary on real hardware, build/output/final-image.iso can be burnt to removable media such as a USB.

Output

Currently, debugging information is logged to the COM2 serial port - by default, Bochs will save this output into a com2.txt text file in the root directory. Tailing this file during execution will provide debugging output, such as the example below:

[arch/x86/kernel/interrupts.c] IDT addr: 0xc01240e0, descriptor 0xc01248e0
[arch/x86/kernel/pic8259.c] Sending ICW1_INIT to PIC1
[arch/x86/kernel/pic8259.c] Sending ICW1_INIT to PIC2
[arch/x86/kernel/pic8259.c] Setting PIC offsets [PIC1: 32 | PIC2: 40]
[arch/x86/kernel/pic8259.c] Configuring slave PIC at IRQ2
[arch/x86/kernel/pic8259.c] Configuring slave PIC as secondary
[arch/x86/kernel/pic8259.c] Enabling 8086 mode on PICs
[arch/x86/kernel/pic8259.c] Enabling all IRQs
[arch/x86/kernel/timer.c] Configuring Programmable Interrupt Timer interval to 1Hz
[arch/x86/kernel/timer.c] Registering handler for Programmable Interrupt Timer at 0xc011bebd
[arch/x86/kernel/interrupts.c] Registered handler (0xc011bebd) for int. 32
[arch/x86/kernel/interrupts.c] Registered handler (0xc011a00f) for int. 33
[kernel/sched/task.c] Creating initial task