CastleOS is a small 64-bit hobby operating system with a shell, an installer, and a growing set of device and network commands.
- Start the build container:
docker run --rm -it -v $(pwd):/root/env castleos-buildenv - Build the kernel and ISO:
make build-x86_64
- Boot it in QEMU:
qemu-system-x86_64 -drive file=dist/x86_64/CastleOS.iso,file.locking=off,format=raw,media=cdrom,readonly=on -boot d -netdev user,id=n0 -device rtl8139,netdev=n0
The repo is built inside the Docker image named castleos-buildenv.
The RTL8139 device is the current working QEMU NIC for packet networking.
qemu-system-x86_64 -drive file=dist/x86_64/CastleOS.iso,file.locking=off,format=raw,media=cdrom,readonly=on -boot d -netdev user,id=n0 -device rtl8139,netdev=n0helpinstallnet statusnet dhcpnet static <ip> <netmask> <gateway>ping <ipv4>wifi statuswifi scanwifi driversdrivers statusdisk statusssh statusshutdown
- The shell boots and responds.
installopens the install flow.networks with the QEMU RTL8139 path.ping 10.0.2.2is the best quick network test.e1000is detected, but its packet driver still does not bind.- Real WiFi, real SSH transport, and real ATA/AHCI/NVMe storage drivers still need more work.
- External ping over QEMU user networking can be limited.
- Bridged networking is a better bet if you want to reach beyond the guest.
- Some install targets are still modeled until native storage drivers land.