RO
RoverOS
About
RoverOS is a hobby OS developed by one person that is certain to have some bugs and oversights.
The 'Rover' in RoverOS is taken from my dogs name, and that is where my username comes from as well.
There is no specific goal of this OS/Kernel, it is just for fun and to learn more about OS internals.
Planned for next update
Things I will try to add in the next update
- General frameworks for future updates (IE. SLAB, Buddy, AHCI, Mutlitasking)
Planned features
These are things I will likely add/do in the near future
- AHCI support
- Generic USB device drivers
- Reduced amount of C files
Unsupported hardware
- Non UEFI machines
- CSM only UEFI machines
- Non x64 (64 bit) CPUs
- Aarch32 only CPUs
Requirements
Things needed for both architectures
gccor an x86_64 cross compiler in/home/your_username/opt/cross/binldMake
x86_64 requirements
Tools needed for AMD64
ovmf(I suggest looking up how to get ovmf for your distro)nasmmtoolsxorrisoqemu-system-x86_64
ARM requirements
Tools needed for Aarch64
arm-none-eabi-asarm-none-eabi-ldqemu-system-aarch64xorriso
Other make options
Add to the makefile arguments to use them make arch=<target_arch> <arg>=<value>
kvmset to1to enable kvm emulatorhddset to1to enable copying to a real hddgdbset to1to enable the use of gdb with qemu
Compiling
Setting vars
Do not include the '' or "" unless specified and avoid adding a space or / after a variable
Edit the config.mk file to set these vars
- set
OVMF_PATHto where your OVMF.fd file is (This is likely to be in/usr/share/qemu)
Example:OVMF_PATH = /use/share/qemu
RoverOS
- Ensure all vars are set as required above
- cd to the base of the RoverOS folder (where the Makefile is)
- run
make arch=<target_arch>to compile and run the EFI application
Replace '<target_arch>' with either 'x86_64' or 'aarch64'. It is case sensitive
Real hardware (Empty FAT32 Partiton needed)
Requirements for AMD64
- GPT Formatted HDD
- 30 MB FAT32 Partition
- GRUB Bootloader
Requirements for Aarch64
- Unknown (I do not have a raspberrypi to test with yet)
Setting vars
- set
HDD_PATHto a FAT32 partition and ensure the partition is mounted
Example:HDD_PATH = /media/rover/C4D3-DC2C
Compiling
- run
make arch=DESIRED_ARCH hdd=1
GRUB
- Put the following in your
40_customgrub file. - set the root to your FAT32 partition
- hd# where # is the HDD/SSD number, gpt# where # is the partition number
menuentry "RoverOS" {
set root='hd#,gpt#'
chainloader /Polarboot.efi
}
This file is at /etc/grub.d/ for Ubuntu
- update grub config via command (Search up how to do it for your distro)
- Reboot and the option 'RoverOS' should be there
Misc
make resetcleans the directory to the default statemake checkchecks for compilers and OVMF
On this page
Languages
C91.5%Makefile4.5%Assembly3.5%Linker Script0.4%GDB0.1%
Contributors
MIT License
Created November 3, 2022
Updated January 9, 2026