Skip to content

preciousbetine/osdev

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Operating System

This is the code for my operating system, written in C++. It is currently under development, but it already includes support for interrupt handling, multitasking, device drivers, a GUI, and a FAT32 filesystem handler.

Tech Stack

  • Assembly Language
  • C++

Features

  • 1st stage bootloader
  • Support for interrupt handling
  • Multitasking support
  • PCI device detection and device drivers
  • Keyboard driver
  • IDE driver for handling ATA hard disks
  • AHCI driver for handling SATA hard disks
  • USB 2.0 EHCI driver
  • FAT32 filesystem handler
  • Support for some available video (VESA) modes
  • Basic GUI
  • Displaying a bitmap image on the screen

Requirements

  • Windows 10 or Linux
  • GCC compiler
  • QEMU emulator (optional)
  • VirtualBox (optional)

Installation

  1. Clone the repository:
git clone https://github.com/preciousbetine/osdev.git
  1. Compile the operating system:
cd osdev
make
  1. Boot the operating system in QEMU:
qemu-system-x86_64 -kernel mykernel.bin
  1. (Optional) Boot the operating system in VirtualBox:
  • Create a new virtual machine in VirtualBox.
  • Set the operating system to "Other".
  • Set the memory size to at least 1024 MB.
  • Generate a VMDK and boot the OS by the instructions in this article.
  • Start the virtual machine.

Usage

Once the operating system is booted, you can interact with it using the keyboard.

Future Features

  • Basic GUI controls (textboxes, list boxes, etc.).
  • An application launcher.
  • More device drivers.
  • A file manager.
  • A shell.

Acknowledgements

I would like to thank these sources for their extensive info:

License

This project is MIT licensed.

About

An operating system built from scratch

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published