Group Name: factOS
| NIM | Name |
|---|---|
| 13524021 | Natanael I Manurung |
| 13524029 | Niko Samuel Simanjuntak |
| 13524030 | Irvin Tandiarrang Sumual |
| 13524049 | Arina Azka |
- Introduction
- Features
- Prerequisites
- Installation & Usage
- Shell Commands
- Screenshots
- Project Structure
- Acknowledgements
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.
This project is divided into several milestones, implementing the following capabilities:
- 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.
- EXT2 Filesystem: Implementation of the Second Extended Filesystem for file storage and retrieval.
- File Operations: Reading and writing files to the disk image.
- 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.
- Process: Process data type initialization and usage.
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.
-
Clone the repository
git clone https://github.com/labsister23/tugas-besar-os-factos.git cd tugas-besar-os-factos -
Build the OS Compile the kernel and user programs:
make build
-
Run in QEMU Launch the OS in the QEMU emulator:
make run
Or build and run in one command:
make all-run
-
Clean Build Artifacts To remove compiled object files and images:
make clean
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
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
- Course: IF2130 Sistem Operasi
- Institution: Institut Teknologi Bandung
- Year: 2025


