Blink 1-0 正式發佈, 最小的 x86 Linux 模擬器

出品 | OSC 開源社區(ID:oschina2013)

Blink 1.0 已正式發佈。

Blink 是無特權用戶空間虛擬機,支持在任何 POSIX 平臺上模擬 x86-64-linux 二進制文件,聲稱是最小的 x86 Linux 模擬器。

總的來說,它是一個 220kb 的無依賴靜態二進制文件,實現了大約 600 條 x86 指令和 180 條 Linux 系統調用。因此 Blink 在運行簡單的命令行程序方面相當出色。

./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 顯示器。

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

Blink 最適合用於命令行程序,當然它也支持模擬 GUI 應用程序。下圖是 Blink 在 Debian Linux 上運行 Emacs GUI 的屏幕截圖:

詳情查看 Release Notes:https://github.com/jart/blink/releases/tag/1.0.0


本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/ktOth1I9hOAtWTGjfeJGaQ