os3/README.md
2025-02-05 23:23:29 +00:00

1.4 KiB

OS3

Hobby bootable software suite for x86 (NOT x86_64) systems.

Building

This repository needs 2 separate compilers to function:

  • a generic C/C++ compiler for the "host" (whatever architecture that may be)
  • a i686-elf GCC/Binutils cross-compiler accessible in the path (i686-elf-gcc, i686-elf-objcopy, etc...)

It also needs mkfs.vfat (or newfs_msdod on macOS).

The build system is cmake.

First, generate the host utilities:

cmake -S host -B build/host
cmake --build build/host

Then, generate the bootable image:

cmake -S . -B build -DCMAKE_TOOLCHAIN_FILE=CMakeToolchain.txt
cmake --build build

The image might run (the main branch is not a stable one) via qemu and the following command:

qemu-system-i386 --hda build/kernel.img

Components

In order of dependency:

libfat

Library for handling FAT32 file systems. Can be built for both kernel or host.

os3_common

Common headers shared between host tools and kernel code.

host

A collection of host tools required to build the bootable image

mbr

Stands for "Master Boot Record". It's an assembly file designed to be bootable from MBR x86 systems. (EFI Incompatible).

stage1

Stage 1 bootloader. Written in C. Should initialize most required drivers (USB, Disks, ACPI, Video). Currently not done.

rawimg

Disk image. It's built in multiple stages via various host tools.