Skip to content
forked from iyksh/ByteOS

A hobby operating system for the i686 architecture.

License

Notifications You must be signed in to change notification settings

Dcraftbg/ByteOS

Repository files navigation

Commit activity Lines of code Repo Size Codacy Badge GitHub top language GitHub license

BasicOS - Literally Basic

Introduction

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.

Table of Contents

Project Description

Overview

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.

Built-in Libraries

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.

Completed Libraries

  • string.h: String manipulation utilities.

Partially Completed Libraries

  • stdio.h: Basic input/output functions.
  • stdlib.h: Standard utility functions.
  • time.h: Time management functions.

Roadmap

  • 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.

Installation

Prerequisites

Building a Cross-Compiler

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.

Required Tools

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).

Build Instructions

  1. Clone the repository:

    git clone https://github.com/iyksh/basicOS && cd basicOS
  2. Build and run the project:

    ./build.sh
  3. Run with QEMU (recommended):

    qemu-system-i386 -kernel $HOME/sysroot/boot/myos.kernel

Contributing

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.

License

This project is licensed under the GPL3 License. See the LICENSE file for more details.

About

A hobby operating system for the i686 architecture.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 88.0%
  • Makefile 5.9%
  • Shell 3.8%
  • Assembly 2.3%