56 lines
1.4 KiB
Markdown
56 lines
1.4 KiB
Markdown
# 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.
|