https://github.com/okuoku/wasmlinux-project
Build environment WasmLinux kernel and userland
https://github.com/okuoku/wasmlinux-project
lkl wasm webassembly
Last synced: 3 months ago
JSON representation
Build environment WasmLinux kernel and userland
- Host: GitHub
- URL: https://github.com/okuoku/wasmlinux-project
- Owner: okuoku
- Created: 2023-11-26T12:32:43.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-10-20T06:55:13.000Z (9 months ago)
- Last Synced: 2025-03-27T23:51:11.596Z (3 months ago)
- Topics: lkl, wasm, webassembly
- Language: Makefile
- Homepage: https://wasmlinux-demo.pages.dev/
- Size: 41 KB
- Stars: 48
- Watchers: 5
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# WasmLinux project (prototype)
WasmLinux project is an effort that create WebAssembly "native" Linux
environment, both kernel and userland.- WasmLinux kernel is patched LKL kernel.
- WasmLinux userland is patched Musl libc and BusyBox
- Toolchain is stock Clang + LLVM without any patches
- "Runner" is the integration component that implements syscall
entrypoint etc.## Demo
https://wasmlinux-demo.pages.dev/
## Build
Note: Currently, this project is in early PoC phase.
Entire build dependencies are contained as submodules.
Please make sure thie repository is cloned with `--recursive` option.On Windows or macOS, case sensitive filesystem is required to build Linux
kernel.### Host tool setup
Install `llvm-project` and `wabt` to `host/` directory.
### WasmLinux kernel and userland
Kernel build scripts are written in CMake. You can invoke it with:
```
cmake -P phases/build-phase1-kernel.cmake
cmake -P phases/build-phase2-libc.cmake
cmake -P phases/build-phase3-kernel.cmake
cmake -P phases/build-phase4-userland.cmake
```Phase5 is standard CMake project.
### Runner
`runner/hostrunner` contains Runner sources and it is standard CMake project.
To build Web version of WasmLinux, build Runner with Emscripten.
Otherwise, Runner is just a standard C++20 project and it should run on
anywhere supporting both libuv and C++20.