WebAssembly (WASM) arch support for the Linux kernel
4 months ago
- #Linux
- #Docker
- #WebAssembly
- 用于通过WebAssembly(Wasm)在网上下载、构建和运行Linux系统可执行文件的脚本。
- 支持在主机、通用Docker容器或特定Docker容器中执行(参见Dockerfile)。
- 组件包括LLVM项目(18.1.2)、Linux内核(6.4.16)、musl(1.2.5)、BusyBox(1.36.1)和最小化initramfs。
- 应用补丁以支持Wasm,包括wasm-ld中的GNU ld风格链接器脚本和内核中的Wasm架构支持。
- BusyBox需要修改后的内核头文件,最初来自Sabotage Linux,已针对musl进行调整。
- Initramfs将BusyBox打包成压缩的cpio归档文件,为shell访问设置pty。
- 包含一个最小化的JavaScript Wasm主机运行时,用于调试目的。
- Wasm缺少MMU,需要以NOMMU配置构建Linux;程序需要-fPIC/-shared参数。
- Docker设置包括linux-wasm-base(含工具的Ubuntu 20.04)和linux-wasm-contained(隔离构建环境)。
- 构建LLVM可能因一个bug而失败;解决方法涉及重新构建(在奇数次尝试时成功)。
- Linux内核构建系统要求LLVM交叉编译器路径不能包含空格。