WasmOS is a microkernel developed based on HinaOS. It implements a WebAssembly (Wasm) "userland", and all Wasm binaries are executed in Ring 0 using WAMR. See my blog for more details.
First clone this repository, remember to add the --recursive option as Wasm uses WAMR as a submodule.
git clone --recursive https://github.com/r1ru/WasmOS
Next, build and run WasmOS. The easiest way is to use Dev Container. Launch the container and execute following commands. If you're not using it, please refer to the Dockerfile, install the required packages, and build it.
make # Build WasmOS
make V=1 # Build WasmOS (Output detailed build logs)
make run # Run WasmOS in qemu (single core)
make run CPUS=4 # Run WasmOS in qemu (4 cores)
If it starts successfully, the shell server is launched and you can execute following commands.
start hello # Run a helllo-world program
start wasm_ping # Run a Wasm binary that uses message passing APIs
start wasm_webapi # Run a toy web server (Wasm binary). Access localhost:1234 to see the page
We accept bug reports, feature requests, and patches on GitHub.