Skip to content

bluez-sh/TermOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TermOS

An x86 based hobby OS made from scratch

Features

  • Custom bootloader written in x86 asm
  • Kernel's own libc (library used by the kernel as well as the user programs)
  • Linear memory manager (physical memory only)
  • SimpleFS File System support (inode based)
  • Necessary drivers (Keyboard, Screen, ATA)
  • Program interface to register and handle user programs (though they still run in kernel space)
  • A simple system shell to execute commands (and run user programs) - No GUI
  • FCFS program scheduler (can also interrupt the queue and enqueue new programs with LCtrl+C)
  • Multiple commands can also be added to the queue from a file and executed using command "fexec <file descrpitor>"

Possible Features

  • File system abstraction in libc
  • A decent text editor
  • Task Management using Task State Segment (TSS) feature of x86
  • Round Robin scheduling of tasks
  • A better memory manager

Build Instructions

Requirements

  • i386-elf-gcc (crosscompiler toolchain)
  • i386-elf-gdb (for debugging)
  • nasm (Netwide assembler)
  • qemu-system-i386 (included in qemu-arch-extra package in Arch Linux)
  • make

To Build

  • Change the paths for CC and GDB in the Makefile, if required
  • Run the command: qemu-img create hdd.img 512M to create a virtual image for hard disk
  • Then run:
    make - to build
    make run - to build and run the OS on qemu
    make debug - to build and start gdb server (change the debug rule in Makefile, if required)
  • Note: After running the OS for first time, run the OS command formatfs to format hdd.img with SimpleFS

Find the full project report here: https://docs.google.com/document/d/e/2PACX-1vQ-U2EtcHYvwEpf5zWgf_OnuEpHnjlT0J8zZ0_djFvCirTCkCu-3jNLo5R0jY5SCs4F849UCYV8o1Dq/pub

About

An x86 based hobby OS made from scratch

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published