No description
Find a file
2025-02-05 23:23:29 +00:00
.vscode Initial commit 2022-09-24 22:30:25 -04:00
host [Stage1] Complete IDT implementation 2023-01-18 17:11:28 +01:00
libfat [Stage1] Complete IDT implementation 2023-01-18 17:11:28 +01:00
mbr [Stage1] Start IDT implementation 2023-01-18 10:59:09 +01:00
os3_common [Common] Fix packing macros for MSVC 2022-10-02 02:06:46 +02:00
rawimg [MBR] Successfully jump to protected mode 2023-01-14 02:15:53 +01:00
stage1 [Stage1] Add RSDP and basic ACPI parsing 2023-06-05 13:13:37 +02:00
.DS_Store Initial commit 2022-09-24 22:30:25 -04:00
.gitignore Initial commit 2022-09-24 22:30:25 -04:00
CMakeLists.txt [Host/KernelCopy] First implementation of KernelCopy 2022-10-06 21:20:29 +02:00
CMakeToolchain.txt [Stage1] Add RSDP and basic ACPI parsing 2023-06-05 13:13:37 +02:00
README.md Add README.md 2025-02-05 23:23:29 +00:00

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.