微型Linux模拟器-Blink
2023-06-06 12:55:36 阿炯

Blink 是无特权用户空间虚拟机,支持在任何 POSIX 平台上模拟 x86-64-linux 二进制文件,据称是最小的 x86 Linux 模拟器。它是一个 220kb 的无依赖静态二进制文件,实现了大约 600 条 x86 指令和 180 条 Linux 系统调用。因此 Blink 在运行简单的命令行程序方面相当出色。


其支持多个系统架构与平台
Linux (x86, ARM, RISC-V, MIPS, PowerPC, s390x)
macOS (x86, ARM)
FreeBSD
OpenBSD
Cygwin

Blink depends on the following libraries:
libc (POSIX.1-2017 with XSI extensions)

Blink can be compiled on UNIX systems that have:
A C11 compiler with atomics (e.g. GCC 4.9.4+)
Modern GNU Make (i.e. not the one that comes with XCode)

安装编译过程

./configure    # use `./configure --help | less` for help
make -j8    # build blink and blinkenlights
doas make install    # doas is modern sudo
blink program    # use `man blink` for help

Blink 包含一个简洁的 JIT,在某些情况下,对于像临时程序 (ephemeral programs) 这样的用例,它比 Qemu 快 2 倍。原因在于 Blink 的基线 JIT,它使用 printf 风格的 DSL 快速生成代码。这意味着 Blink 拥有一个易于使用的代码库(只有 63,500 行 ANSI C11 代码)。



虽然 Blink 是命令行工具,但它也有一个 TUI 界面(称为 blinkenlights),支持实时调试和可视化程序。


下面是一个运行裸机 Game of Life 演示的示例,该演示程序采用 Rust 编写,它以 i8086 模式从 BIOS 启动,引导至长模式,然后绘制到 Blinkenlight 基于文本的 CGA 显示器。


blinkenlights -jmr third_party/gameoflife/gameoflife.bin
# Press CTRL-T several times for Turbo mode

Blink 最适合用于命令行程序,当然它也支持模拟 GUI 应用程序。下图是 Blink 在 Debian Linux 上运行 Emacs GUI 的屏幕截图:


详情查看发行说明

最新版本:1.0
1.0 已正式于2023年6月上旬发布。

项目主页:https://github.com/jart/blink