Files
scarab-os/README.md
2025-12-30 18:49:57 +00:00

100 lines
2.0 KiB
Markdown

# 🪲 ScarabOS
A minimal hobby operating system written in Rust for x86_64-EFI architecture.
ScarabOS is a learning project focused on systems programming concepts. Purely a project for understanding how operating systems work from the ground up.
## 🚀 Quick Start
### Prerequisites
Ensure you have the following installed:
| Tool | Purpose |
|------|---------|
| `rustup` | Rust toolchain manager ([install here](https://rustup.rs/)) |
| `grub` | Bootloader |
| `nasm` | x86 assembler |
| `qemu-full` | Virtualization (recommended for testing) |
| `xorriso` | ISO image creation |
| `mtools` | FAT filesystem utilities |
**On Arch Linux:**
```bash
sudo pacman -S grub nasm qemu-full xorriso mtools
```
**On Ubuntu/Debian:**
```bash
sudo apt install grub-pc-bin nasm qemu-system-x86 xorriso mtools
```
---
## 🔧 Building from Source
### 1. Set up Rust
Install the nightly toolchain (pinned to January 2024 for stability):
```bash
rustup install nightly
rustup component add rust-src
```
### 2. Create virtual disk
Generate a raw disk image for the filesystem:
```bash
qemu-img create -f raw disk.img 10M
```
> **Note:** Adjust size as needed (e.g. `50M` for 50 megabytes)
### 3. Compile
**First time setup:**
```bash
make clean
```
> ⚠️ Run `make clean` once before your first build
**Build the OS:**
```bash
make
```
This creates `scarab.img`, your bootable OS image!
---
## 🎮 Running ScarabOS
Launch in QEMU with:
```bash
make run
```
You'll boot into a minimal terminal where you can explore the basic command system.
> Use alt + 2 to open up the Qemu terminal and then type q or quit to exit the VM
---
## 📚 Learning Resources
This project was heavily inspired by:
- [Writing an OS in Rust](https://os.phil-opp.com/) by Philipp Oppermann
- My Operating Systems professor in university
- The Pintos educational OS
---
## 🤝 Contributing
This is a personal learning project, but feel free to:
- **Fork** and experiment
- **Open issues** for interesting ideas
- **Share** your own OS development journey!