100 lines
2.0 KiB
Markdown
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!
|