世界を動かす技術を、日本語で。

JavaScriptのためのUEFIバインディング

2026年2月9日原文(codeberg.org)

概要

UEFI Bindings for JavaScript は、UEFI環境でJavaScriptを実行できる仕組み。 Promethee がboot volumeから script.js を読み込み、ブートローダとして動作。 UEFIサービスをJavaScriptから呼び出し可能。 QEMU でのビルド・実行手順が用意されている。 Node.jsと Duktape ツールを利用した最小構成のビルド環境。

UEFI Bindings for JavaScriptとは

  • UEFIファームウェア上JavaScript を実行する仕組み
  • Prometheescript.js を読み込み、JavaScriptブートローダとして起動
  • UEFIサービス(例えば GraphicsOutput プロトコル)をJavaScriptから呼び出し可能
  • UEFIサービス連携 による高度なブート処理の実現

動作概要

  • Promethee がブート時に \script.js をUEFI FATボリュームから読み込み
  • script.js がエントリーポイントとして実行
  • UEFIの各種サービスへJavaScriptからアクセス可能
  • 例:画面描画、デバイス検出など

クイックスタート手順

  • 依存関係取得:./get-depsの実行
  • ビルド&QEMU実行:make runコマンド
  • script.js をUEFI FATボリュームの \script.js に自動コピー

サンプルコード例

  • script.js 内でGraphicsOutputプロトコルを利用
    • var gop = efi.SystemTable.BootServices.LocateProtocol(efi.guid.GraphicsOutput);
    • if (gop) { var red = { r: 255, g: 0, b: 0 }; gop.Blt(red, 'EfiBltVideoFill', 0, 0, 50, 50, 200, 120, 0); }
  • 画面領域塗りつぶし の実装例

注意事項

  • Duktape ツールはソース生成に Node.js を利用
  • ビルドは freestanding (最小限のlibcスタブのみ提供)
  • 独自のブートローダやOS開発に適した環境
  • 技術的な興味を持つ開発者向けのプロジェクト

Hackerたちの意見

わあ、これは呪われてるね。

r/unixpornがDOMサポートされたら喜びそうだね :^)

正しい言葉は「blursed」だと思う。

次のステップは、Reactを使ってUEFIのTUIを作ることだね(やめてほしいけど)。

OMG、それにはinkを使えるね。

お前のせいで、未来のマザーボードに呪いをかけたかもしれない、くそ!

今のゲーマー向けファームウェアのUIがどれだけひどいかを考えると、改善されるかもしれないね。

次はネットワークスタックを追加するんだよね?そうすれば、僕のお気に入りで一番役立つパッケージが使えるようになる? import isOdd from "https://unpkg.com/is-odd";

ブートローダーでGTA-IVの前にisOddを取得してるんだね。

新しいファームウェアには、HTTPやHTTPSを含むネットワークスタックがすでにあるよ。

誰かこれを分解して説明してくれない?Cを使って、jsインタープリタを読み込んで、UEFIの機能を囲むAPIをブートストラップしてるみたいなんだけど、合ってる?もしそうなら、APIがブートストラップされたら、実際にjsでOSを書けるってこと?それとも、まず移行しなきゃいけない他の抽象化があるの?

OSの定義によるけど、確かにそれはできるね :)

Hacker Newsで議論の続きを見る