BasicOS is a lightweight operating system developed in Assembly x86 and C99, designed for educational purposes and for those interested in low-level systems programming. The project emphasizes learning and understanding the fundamentals of OS development by building everything from scratch.
NOTE
This project is still in very early stages. Test on real hardware at your own risk.
BasicOS aims to provide a minimalistic and simple operating system that covers the basic functionalities expected from an OS. This includes handling input/output operations, managing memory, and providing a simple shell interface.
To maintain control and ensure that the system operates almost entirely from scratch, standard libraries are being rewritten. This approach helps in understanding the inner workings of these libraries and how they interact with the OS.
- string.h: String manipulation utilities.
- stdio.h: Basic input/output functions.
- stdlib.h: Standard utility functions.
- time.h: Time management functions.
- Completed:
- VGA driver for text output.
- Interrupt Descriptor Table (IDT) setup.
- PS/2 Keyboard support.
- Basic shell interface.
- Real-Time Clock (RTC) driver.
- In Progress:
- ATA PIO mode hard disk driver (28-bit LBA).
- FAT filesystem support.
BasicOS uses an i686-elf-gcc
cross-compiler. The versions used to build the project are:
- binutils-2.40
- gcc-12.2.0
For detailed instructions on building and using a cross-compiler, refer to the OSdev Wiki.
Note: Ensure you configure your cross-binutils with the
--with-sysroot
option.
Make sure you have the following tools installed:
- i686-elf toolchain.
- GRUB, for the
grub-mkrescue
command, along with the appropriate runtime files. - Xorriso, the ISO creation engine used by
grub-mkrescue
. - GCC (GNU Compiler Collection).
- LD (GNU Linker).
-
Clone the repository:
git clone https://github.com/iyksh/basicOS && cd basicOS
-
Build and run the project:
./build.sh
-
Run with QEMU (recommended):
qemu-system-i386 -kernel $HOME/sysroot/boot/myos.kernel
Contributions are welcome! Whether it's reporting bugs, suggesting new features, or submitting pull requests, your involvement is appreciated. Please open an issue to discuss your ideas or improvements.
This project is licensed under the GPL3 License. See the LICENSE file for more details.