Skip to content

32-bit Unix-based Operating System, with EXT2 Filesystem

Notifications You must be signed in to change notification settings

KenEzekiel/operating-system-unix

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tugas Besar IF2230 Sistem Operasi

System Requirements

  • GNU GCC 11 (need some adjustment if it is compiled in GCC 9)

Table of Contents

Project Description

This Repository is meant for the Operating System Course on making a Operating System, specifically, a 32-bit Operating System.

Milestone 1 focuses on the GDT, Writing text to a framebuffer and booting sequence

Milestone 2 focuses on interrupt, keyboard I/O, and Filesystem, the bonus included in Milestone 2 includes Infinite Directory entry for the filesystem, CMOS Time, and designing/implementing a filesystem other than the Filesystem FAT32 - IF2230 Edition

Milestone 3 focuses on user mode and shell. Bonus included in this milestone include recursive cp and rm, relative pathing, and some creativity, for example simple memory management implementation (malloc, free, and realloc), time command, help command, simple text editor program, and snake minigame.

Team Member

NIM Nama
13521045 Fakhri Muhammad Mahendra
13521089 Kenneth Ezekiel Suprantoni
13521093 Akbar Maulana Ridho
13521101 Arsa Izdihar Islam

Running The Program

Run the makefile using make command, all of the dependencies will automatically be compiled, and a kernel window will pop up using the QEMU Emulator.

for creating a disk image, use make disk command, this will create a new disk image and delete the last one.

for inserting the shell, use make insert-shell command, this will insert a shell into the user space

Program Structure

│
│   README
│   makefile
│   .gitignore
│
├─── bin
│
├─── img
│
├─── other
│
└─── src
      │    cmos.c
      │    external-inserter.c
      │    framebuffer.c
      │    gdt.c
      │    kernel_loader.s
      │    kernel.c
      │    keyboard.c
      │    linker.ld
      │    math.c
      │    menu.lst
      │    paging.c
      │    portio.c
      │    stdmem.c
      │    string.c
      │
      ├─── filesystem
      ├─── interrupt
      ├─── lib-header
      └─── user

EXT2 Filesystem

This project implements EXT2 as Operating System Filesystem. We design the C header structure by ourself. The source of our EXT2 filesystem can be accessed here.

Directory Entry

We use linked list directory table that contains directory entry. The directory table is also a linked list so that if the entry is already full in a block, another block will be allocated (infinite directory).

Each directory entry has dynamic length of name. The implementation is almost like this.

Snake Game

You can play snake minigame by using command snake in shell.

Simple Text Editor (nano)

You could create a new file and write its concent with command nano filename. It will show a nano-like text editor. To save the changes, simply type Ctrl + C. This is write only and does not support edit existing file.

About

32-bit Unix-based Operating System, with EXT2 Filesystem

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C 93.8%
  • Assembly 4.1%
  • Makefile 2.1%