๐ŸŒ AIๆœ็ดข & ไปฃ็† ไธป้กต
Skip to content

Tugas Besar IF2130 Sistem Operasi 2025 (A Simple 32-Bit Operating System that Demonstrates Fundamental OS Concepts Including Kernel Development, Memory Management, File Systems, and User Interaction)

Notifications You must be signed in to change notification settings

NikSamSim/IF2130_factOS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

factOS

Operating System - IF2130

Mascot

Group Name: factOS

NIM Name
13524021 Natanael I Manurung
13524029 Niko Samuel Simanjuntak
13524030 Irvin Tandiarrang Sumual
13524049 Arina Azka

Build Status Language


Table of Contents

Introduction

factOS is a simple 32-bit operating system developed from scratch as a final project for the IF2130 Operating Systems course (2025). It demonstrates fundamental OS concepts including kernel development, memory management, file systems, and user interaction.

Features

This project is divided into several milestones, implementing the following capabilities:

Milestone 1: Kernel Basics

  • Framebuffer: Text mode output for displaying information.
  • GDT (Global Descriptor Table): Memory segmentation setup.
  • IDT (Interrupt Descriptor Table): Handling hardware and software interrupts.
  • Drivers:
    • Keyboard driver for user input.
    • Disk driver for storage operations.

Milestone 2: Filesystem

  • EXT2 Filesystem: Implementation of the Second Extended Filesystem for file storage and retrieval.
  • File Operations: Reading and writing files to the disk image.

Milestone 3: User Space & Shell

  • Paging: Virtual memory management.
  • User Mode: Executing code in ring 3 protection level.
  • Shell: A command-line interface for interacting with the OS.
  • Command Execution: Running user programs.

Milestone 4: Process

  • Process: Process data type initialization and usage.

Prerequisites

To build and run factOS, you need a Linux environment (WSL is recommended for Windows users) with the following tools installed:

  • gcc (GNU Compiler Collection) - for compiling C code (32-bit support required).
  • nasm (Netwide Assembler) - for compiling assembly code.
  • ld (GNU Linker) - for linking object files.
  • make - for build automation.
  • qemu-system-i386 - for emulating the OS.

Installation & Usage

  1. Clone the repository

    git clone https://github.com/labsister23/tugas-besar-os-factos.git
    cd tugas-besar-os-factos
  2. Build the OS Compile the kernel and user programs:

    make build
  3. Run in QEMU Launch the OS in the QEMU emulator:

    make run

    Or build and run in one command:

    make all-run
  4. Clean Build Artifacts To remove compiled object files and images:

    make clean

Shell Commands

The factOS shell supports the following commands:

Command Description
cd <dir> Change current directory
ls List directory contents
mkdir <name> Create a new directory
cat <file> Display file contents
cp <src> <dst> Copy a file
rm <name> Remove a file
mv <src> <dst> Move or rename a file
find <name> Search for files recursively
grep <pat> Search for pattern in input
echo <text> Display text
touch <name> Create an empty file
write <name> Create a file with content
scrollup Scroll output up
scrolldown Scroll output down
help Show this help message
exit Exit the shell

Note: Pipeline is supported, e.g.: ls | grep txt

Screenshots

Main View
Main View

Features Demo
Features

Project Structure

tugas-besar-os-factos/
โ”œโ”€โ”€ bin/                # Compiled binaries and executables
โ”œโ”€โ”€ files/              # Files to be inserted into the filesystem
โ”œโ”€โ”€ other/              # Miscellaneous files (GRUB, etc.)
โ”œโ”€โ”€ src/                # Source code
โ”‚   โ”œโ”€โ”€ cpu/            # CPU specific code (GDT, IDT, Interrupts)
โ”‚   โ”œโ”€โ”€ driver/         # Hardware drivers (Keyboard, Disk)
โ”‚   โ”œโ”€โ”€ external/       # External tools (Inserter)
โ”‚   โ”œโ”€โ”€ filesystem/     # Filesystem implementation (EXT2)
โ”‚   โ”œโ”€โ”€ header/         # Header files
โ”‚   โ”œโ”€โ”€ memory/         # Memory management (Paging)
โ”‚   โ”œโ”€โ”€ stdlib/         # Standard library functions
โ”‚   โ”œโ”€โ”€ text/           # Text output (Framebuffer)
โ”‚   โ”œโ”€โ”€ kernel.c        # Kernel main entry point
โ”‚   โ””โ”€โ”€ user-shell.c    # User shell implementation
โ”œโ”€โ”€ Makefile            # Build configuration
โ””โ”€โ”€ README.md           # Documentation

Acknowledgements

  • Course: IF2130 Sistem Operasi
  • Institution: Institut Teknologi Bandung
  • Year: 2025

Made with โค๏ธ by factOS

About

Tugas Besar IF2130 Sistem Operasi 2025 (A Simple 32-Bit Operating System that Demonstrates Fundamental OS Concepts Including Kernel Development, Memory Management, File Systems, and User Interaction)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 5