Operating System Development
About This Operating System
The current implementation uses a legacy BIOS (i.e., not using a bootloader such as GRUB, but rather using a custom bootloader). At this time, this operating system is not intended to implement 64-bit long mode; it will rather run in 32-bit protected mode once operational.
Finding the Source Code
The source code and any distributions of this project can be found at my GitHub.
License
This project is licensed under the MIT License. Visit the GitHub repository linked above for more information about the rights, limitations, and conditions imposed by this license.
Hardware Support
The official operating system only supports compiling source code targeting an i386/x86-64 machine.
NOTE THAT THE OPERATING SYSTEM HAS NOT BEEN TESTED ON REAL HARDWARE. THUS FAR, IT HAS BEEN EMULATED WITH QEMU AND DEBUGGED WITH BOCHS.
Storage Media
The operating system is intended to run off a 1.44MB floppy disk with the FAT-12 format. Some compliant values are hard-coded in the bootloader. To add support for other bootable storage media, you must implement the bootloader code yourself.
Toolchain
The following software is used in the toolchain required to build this OS:
- CMake
- Watcom (specifically for 16-bit mode) – wcc, wlink
- NASM (Netwide Assembler)
- A GCC/G++ cross compiler for the targeted architecture (need a freestanding environment).
- The compiler scripts are setup to work in a Linux or Windows Subsystem for Linux distribution. These scripts are written as shell scripts. Make sure to give them “run” privileges. Finally, check the consts.sh script to make sure that all environment variables used are defined on your system and correspond to the appropriate directories (especially the cc_dir variable which corresponds to the bin directory of your cross-compiler).