XenプロジェクトがハイパーバイザーをRaspberry Pi 4に正式に移植

Table of Contents

XenプロジェクトがハイパーバイザーをRaspberry Pi 4に正式に移植

Xen プロジェクトはハイパーバイザーを 64 ビット Raspberry Pi 4 に移植しました。

公式移植のアイデアはXenコミュニティから湧き上がり、Xenプロジェクト諮問委員会の議長であるジョージ・ダンラップ氏の元に届きました。ダンラップ氏はこのアイデアをRaspberry Pi Foundationで働く知人に伝えたところ、Raspberry Piの約40%が愛好家ではなくビジネスユーザーに販売されていると聞かされました。

Pi担当のエベン・アプトン氏によると、2019年12月時点で3,000万台を超えるArmベースのPiが販売され、2020年4月には月間60万台を超える好調な販売が続いており、ダンラップ氏は組み込みおよび産業用アプリケーションに向けたXenの推進を継続するチャンスを見出しました。

FPGAメーカーのザイリンクスで昼間勤務するステファノ・スタベリーニ氏と、元Apache Foundationディレクターのローマン・シャポシュニク氏が、この移植作業を引き受けた。2人は、RPi 4のシステムオンチップが、Xenが標準でサポートする一般的なGIC-400割り込みコントローラを使用していることに気づき、これは全体として十分に容易な作業になるだろうと考えた。しかし、2人はそれが危険な楽観主義だったことを認めた。IRQのことはさておき、物理メモリと仮想メモリのアドレスを操作しなければならない広大な世界が待ち受けていたのだ。

2人は「私たちがXenのメモリアロケータとLinuxのアドレス変換層の奥深くへの冒険に乗り出そうとしていることにまったく気づいていなかった」と伝えられている。

「最初のハードルは、低メモリアドレスの利用可能性でした」と、The Registerが本日の一般公開に先立ち入手したXen Pi移植の発表文で、2人はこう記している。「RPi4には、RAMの最初の1GBにしかアクセスできないデバイスがあります。Dom0の1GB未満のメモリ容量では不十分でした。Julien Grall氏は、RPi4上のDom0の1GB未満のメモリ割り当てを増やすという、シンプルな1行の修正でこの問題を解決しました。このパッチは現在、Xen 4.14に含まれています。」

その問題が解決されたので、2人は再び移植がうまくいってゲスト Arm Linux オペレーティング システムを起動できることを期待しました。

理由は次の通りです。「LinuxのXenサブシステムはvirt_to_phys仮想アドレスを物理アドレスに変換するために を使用しますが、これはほとんどの仮想アドレスでは機能しますが、すべてではありません。RPi4 Linuxカーネルは を使用して物理アドレスに変換できない仮想アドレスを渡す場合がありvirt_to_phys、そうすると深刻なエラーが発生することが判明しました。」

2人のコーダーは、適切な場合に異なるアドレス変換関数を使用することで修正方法を発見しました。この作業は現在、Linuxカーネルのマスターブランチに反映されています。

もう一つの、最大のハードルがまだ先にあった。

ラスパッド

RasPad 3.0はRaspberry Pi 4をタブレットに変換します - いくつかの癖に備えてください

続きを読む

「Linuxカーネルは、物理アドレスとDMAアドレスという概念を常に持ち続けてきました。DMAアドレスはデバイスのプログラミングに使用され、物理アドレスとは異なる可能性があります」と両氏は説明しました。「実際には、Xenが動作可能なx86、ARM、ARM64プラットフォームのいずれにも、物理アドレスと異なるDMAアドレスはありませんでした。LinuxのXenサブシステムは、DMA/物理アドレスの二重性を独自のアドレス変換に利用しています。ゲストから見た物理アドレスを、Xenから見た物理アドレスに変換するためにこれを使用しています。」

しかし、Raspberry Pi 4 はこの技術を採用しなかったため、Linux の Xen サブシステムが機能しなくなりました。

「問題を絞り込むのは容易ではありませんでした」と2人は書いている。「問題を理解してからは、12個のパッチを適用し、LinuxでDMA/物理アドレス変換を完全にサポートできるようになりました。」

「アドレス変換問題の解決は、私たちの楽しいハッキングアドベンチャーの終焉でした。XenとLinuxのパッチを適用することで、XenとDom0は完璧に動作します。Linux 5.9がリリースされれば、RPi4でXenがすぐに使えるようになります。」

Linux 5.9について言えば、Linus Torvalds氏は月曜日にリリース候補版7を公開し、正式版リリースの前にもう1サイクルのテストが必要だと示唆しました。つまり、公式のXen-on-Piが簡単に導入できるようになるまでには、もう少し時間がかかるでしょう。

リリースが待ちきれない方のために、The Registerの報道によると、IoT/ネットワークエッジ向けLinux Foundation OSであるProject EVEが、Xen-for-RPiのビルド手順をGitHubページで公開する予定です。Xenプロジェクトのブログにも、Xenの起動手順が掲載される予定です。また、非公式の移植版(例えばこちら)も存在しますが、システムRAMが1GBに制限されるなどの制限があります。

スタベリーニ氏はThe Registerに対し、Xen on RPiの公式移植版はIoTコミュニティに大きな変化をもたらすだろうと語った。他のArm開発ボードはRaspberry Piよりも高価であり、プログラマーはプロトタイピングにおいてより安価な代替手段に流れていくだろうからだ。スタベリーニ氏はまた、単一のエッジデバイスでリアルタイムOSと別のOSの両方を動作させ、それぞれ異なるタスクを専用に動作させながら、同じハードウェア上で動作させ、コンテナとしてOSを共有するのではなく、仮想マシンの優れた分離性を活用するといったシナリオも提示した。

George Dunlap 氏は、公式の Xen-on-RPi ポートはホームラボの構築者にも役立つ可能性があると考えています。あるいは、開発者にメインマシン上の仮想マシンやコンテナよりもサイドプロジェクトに適した環境を提供するだけかもしれません。®

Discover More