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


