| .vscode | ||
| host | ||
| libfat | ||
| mbr | ||
| os3_common | ||
| rawimg | ||
| stage1 | ||
| .DS_Store | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CMakeToolchain.txt | ||
| README.md | ||
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.