# ArkOS A Linux-based operating system built from scratch — designed to be easy to use, easy to compile, and open for customization. See [ArkOS: Comprehensive System Architecture](arkos_architecture_guide.md) for more details ## ✨ Features | Feature | Status | |---------|--------| | Custom BIOS bootloader (stage1 + stage2) | ✅ | | VESA graphics boot animation (60 FPS expanding dot) | ✅ | | Verified Boot (SHA256 key-signed OS binary) | ✅ | | Native Swift splash screen via Linux framebuffer | ✅ | | Linux kernel 7.0 with custom initramfs | ✅ | | Prebuilt Clang/LLVM toolchain | ✅ | | `.ark` configuration file format | ✅ | | Modular build system with progress output | ✅ | | Service Manager | 🔜 | | Package Manager | 🔜 | ## 🏗️ Building ### Prerequisites | Tool | Purpose | |------|---------| | `clang` (prebuilt, included) | C compilation | | `swiftc` | Swift compilation | | `nasm` | x86 assembly | | `python3` | Boot image packing & signing | | `qemu-system-x86_64` | Testing | | `mkfs.ext4` | Disk image generation | | `cpio`, `gzip` | Initramfs packing | ### Build & Run ```bash cd arkos/ make build # Compiles everything, generates disk images make run # Launches QEMU with the built images (BIOS Mode) make run-uefi # Launches QEMU in UEFI Mode make clean # Removes all build artifacts ``` **Note:** UEFI mode (`make run-uefi`) currently has a few known errors and trying it out is not recommended. The build system uses the prebuilt Clang toolchain at `prebuilts/clang/` for all C compilation. No system compiler dependency. ### Build Output The build system shows modular progress: ``` ╔══════════════════════════════════════╗ ║ ArkOS Build System v2.0 ║ ╚══════════════════════════════════════╝ [ 1/14] Cleaning previous build [ 2/14] Creating staging directories [ 3/14] Integrating frameworks [ 4/14] Preparing boot files ... [14/14] Generating disk images ╔══════════════════════════════════════╗ ║ Build complete! ✓ ║ ╚══════════════════════════════════════╝ ``` ### Output Images All images are generated in `finished/`: | Image | Description | |-------|-------------| | `boot.img` | Bootloader + animation + kernel + initramfs | | `sys.img` | System partition (frameworks, libraries) | | `vend.img` | Vendor partition (DRM, keys, mirror info) | | `avb.img` | Android Verified Boot metadata | | `vbmeta.img` | Verified boot metadata | | `dtbo.img` | Device tree blob overlay | ## 📁 Project Structure ``` arkos/ ├── boot/ # Bootloader source & configs │ ├── source/ # Assembly source (bootloader.asm, stage2.asm) and C source (bootloader.c) │ │ └── animationframes/ # Pre-generated boot animation frames │ ├── initramfs.img # Base initramfs image │ └── *.ark # Boot configuration files ├── frameworks/ # OS frameworks (Swift, DRM, SwiftUI) ├── kernel/ # Linux kernel source + prebuilt bzImage ├── prebuilts/ # Prebuilt toolchains │ └── clang/ # LLVM/Clang 22 toolchain ├── system/ # Core system components │ ├── init.c # PID 1 init process (Verified Boot) │ ├── display/ # Display compositor (ui_daemon) and boot animation │ ├── sha256.c/h # SHA256 implementation for signing │ └── fb_helper.c # Framebuffer ioctl helper ├── vendor/ # Vendor-specific files │ ├── verify/ # Verified Boot keys & signing tools │ ├── mirror/ # Mirror configuration │ └── Widewine/ # DRM (Widevine) integration ├── arkrt/ # ArkOS runtime monolithic daemon ├── Makefile # Top-level build entry point └── finished/ # Build output (generated) ``` ## 🔐 Verified Boot ArkOS implements a custom Verified Boot chain: 1. The build system reads the signing key from `vendor/verify/securebuild.ark` 2. `sign.py` computes `SHA256(KEY + arkrt_binary)` → `signature.bin` 3. At boot, `init.c` recomputes the hash and compares against `signature.bin` 4. **Mismatch → Kernel Panic** (system halts with security warning) 5. **Match → Boot continues** into the `arkrt` daemon and UI layer > ⚠️ Never commit your real signing key to a public repository. Use `vendor/verify/key.py` to generate new keys. ## 📄 License See [LICENSE](LICENSE) for details.