walos
1.0.0
WebAssembly Language based Operating System is a toy OS using the Language-based System approach.
Processes and drivers (services) are WASM binary executed by design in a sandboxed environment. So drivers can be implemented in any language targeting WebAssembly.
Unlike generalist OS, walos ignores hardware protection (Ring0, single address space). This idea simplifies the system architecture and improves performance by avoiding context switching. Syscalls are simple function calls triggered using interfaces like WASI. On the downside, the OS is not protected against CPU side-channel attacks.
clang, lld, wasm-ld - Makeos (EFI | BIOS)efi (EFI runtime)elf (Unix executable)| OS | Needed | Optional |
|---|---|---|
| Debian / Ubuntu | make clang lld |
qemu-system ovmf xorriso |
| Arch / Manjaro | make clang lld |
qemu edk2-ovmf libisoburn |
git clone https://github.com/CalmSystem/walos.git
cd walossample/shell as ELF binarymake run ENTRY=sample/shell LOADER=elfsample/exec with QEMU and OVMFmake run ENTRY=sample/execsample/hello.cmake package ENTRY=sample/hello.csample/vga with QEMU, Limine and graphicsmake run ENTRY=sample/vga RUN_ISO=1 RUN_VGA=1| Message | Possible solution |
|---|---|
No rule to make target '.wasm' |
ENTRY argument missing |
llvm-ar: Command not found |
export PATH=$PATH:/usr/lib/llvm-10/bin |
Executable "wasm-ld" doesn't exist! |
? ? |
lld: error: unable to find library -lc |
export LDPATH=/usr/lib64 |
/bin/sh: 1: ./run: not found |
export DLINK=/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 |
qemu: could not load PC BIOS |
export OVMF=/usr/share/ovmf/x64/OVMF.fd |
*.cHello worldwasm.tga on screen and waitembed.c using system WASM engineDistributed under the GPLv3 License. See LICENSE for more information.