O sistema operacional baseado em linguagem WebAssembly é um sistema operacional de brinquedo usando a abordagem do sistema baseado em idiomas.
Processos e drivers (serviços) são binários do WASM executados pelo design em um ambiente de caixa de areia. Portanto, os drivers podem ser implementados em qualquer idioma que segmente WebAssembly.
Ao contrário do sistema operacional generalista, o Walos ignora a proteção de hardware (ring0, espaço de endereço único). Essa ideia simplifica a arquitetura do sistema e melhora o desempenho, evitando a comutação de contexto. Syscalls são chamadas de função simples acionadas usando interfaces como o WASI. No lado negativo, o sistema operacional não está protegido contra ataques de canal lateral da CPU.
clang , lld , wasm-ld - façaos (efi | BIOS)efi (tempo de execução EFI)elf (executável da Unix)| OS | Necessário | Opcional |
|---|---|---|
| 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 como binário elfo make run ENTRY=sample/shell LOADER=elfsample/exec com qemu e ovmf make run ENTRY=sample/execsample/hello.c make package ENTRY=sample/hello.csample/vga com qemu, limine e gráficos make run ENTRY=sample/vga RUN_ISO=1 RUN_VGA=1| Mensagem | Solução possível |
|---|---|
No rule to make target '.wasm' | Argumento ENTRY ausente |
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 na tela e espereembed.c Usando o System Wasm EngineDistribuído sob a licença GPLV3. Consulte a licença para obter mais informações.