Hasty Briefsbeta

双语

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交叉编译器路径不能包含空格。