PR2025.11.27
数理最適化のエキスパートが断言「AIブームで見落とされがちな重要技術」 1,300社が導入した「演繹的AI」が意思決定を変える
Unikernelと和解せよ(全1記事)
コピーリンクをコピー
ブックマーク記事をブックマーク
佐伯学哉氏(以下、佐伯):「nullpo_head」、Takaya Saekiが、「Unikernelと和解せよ」というタイトルで発表します。
(会場の笑い声を聞いて)なんか今笑った人がいるんですけど、Unikernelはとても大事なものなので、大丈夫です。
とはいえ、今回やるのは確かに一発ネタです。僕はnullpo_headといいます。仮想化周りやOSをよくやっています。前回「デバッガと和解せよ」という発表をしたので、実は和解せよシリーズなんです。

いきなりですが、みなさん日々、Unikernelを使おうと試行錯誤していると思いますが、僕はしていません。していない理由はなにかというと、「Unikernel使うのって腰が重くない?」という話なんですよね。

本当はみなさんUnikernelを使いたいんですが、少しだけ面倒なので気軽に使えないんです。
どうしてかを僕が脳内でいろいろ調査してきたんですけど。まず1個目が、APIを忘れるから使いにくい。「POSIX互換だっけ?」とか。あと移植。普通のUnikernelはけっこう独自APIが必要なので、そもそもアプリケーションに移植する必要がある。

これは大変なので、もっとUnikernelを気軽に使いたいなというのが今回の話です。
UKL(Unikernel Linux)というのがあるそうです。ざっくり言うと、普通のLinuxアプリをLinuxカーネルに静的リンクしてUnikernelにする研究です。

理論上、普通のLinuxアプリが普通にUnikernelになって、あなたのアプリがOSとして動いてすごい、という研究ですね。

なので、これでUKLでRustプログラムを一瞬でUnikernel OSにできるとうれしいからやりたいというのが今回の話です。

何が起きるかというと、普通にcargoでukl buildとかをすると、あなたのRustプログラムがUnikernelになって、OSになって動き、cargo ukl bootすると、qemuでプログラムが動く。

がんばって作りました。ざっくり言ってcustom libcを差し替えるだけです。本当は--targetで動いてほしいんですが、なんやかんやあって難しかったので、cargo uklコマンドとして実現しました。

作ったので、デモします。
ところがどっこい、映らねぇ。これ、時間がすごくもったいないですね。
まず、cargo ukl newコマンドというのがあって、これで普通にcargoのプロジェクトができます。これを動かすと、「Hello, world!」が動きます。これをcargo ukl buildすると……あっ、cargoじゃなかった、悲しい(「carog」と打ち間違えていた)……ビルドが動いて……これ、遅いですねぇ!

(会場笑)
佐伯:Rustってね、コンパイルが遅いのがちょっとね、玉に瑕なんですよね。今度はいつものLinuxカーネルで出します。
(会場笑)
佐伯:普通のRustプログラムがさらに遅いビルドになるんですけど、これはすぐ終わるので。ちなみに(発表時間は)あと何秒ですか? わからない、わからない!
司会者:が、がんばれ〜!
佐伯:「がんばれ」しか言ってくれないんですね。
(会場笑)

司会者:5、4、3、2、1。
佐伯:bootします!! Linuxカーネルで動いて……。

(会場笑)
司会者:はい、ありがとうございました。
(会場拍手)
佐伯:あと3秒だけ。たぶんこれでいいので。
これ、UKLは、起動して5秒後にプログラムが動くんですね……はい!


司会者:動いた、動いた。
(会場拍手)
佐伯:Unikernelと和解できました、という話です。
続きを読むには会員登録
(無料)が必要です。
会員登録していただくと、すべての記事が制限なく閲覧でき、
スピーカーフォローや記事のブックマークなど、便利な機能がご利用いただけます。
すでに会員の方はこちらからログイン
名刺アプリ「Eight」をご利用中の方は
こちらを読み込むだけで、すぐに記事が読めます!
スマホで読み込んで
ログインまたは登録作業をスキップ
この記事をブックマークすると、同じログの新着記事をマイページでお知らせします