diff --git a/README.md b/README.md new file mode 100644 index 0000000..001064a --- /dev/null +++ b/README.md @@ -0,0 +1,56 @@ +# 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.