
BareFlankハイパーバイザーは、Assured Information Security、Inc。(AIS)が率いるRustおよびC ++用のオープンソースハイパーバイザーソフトウェア開発ツールキット(SDK)であり、IntelおよびAMD(ARMV8 CPUS、RISC-VおよびPOWERPC)の64ビットバージョンのハイパーバイザーを迅速にプロトタイプおよび作成するために必要なツールを提供します。 BareFlank SDKは、ハイパーバイザーを開始/停止するのに十分な仮想化サポートのみを提供するため、教育/研究の目的を目的としています。 BareFlankは、MITライセンスを使用するため、独自の完全に機能的なハイパーバイザーを作成するための基礎として使用することもできます。完全なハイパーバイザー(SDKではなく)を探している場合は、Microvを参照してください。教育や研究を行うための最小限のSDKを探しているなら、これがあなたのためのプロジェクトです。単に参照ハイパーバイザーを探している場合は、SimpleVisorをご覧ください。
BareFlankは、層状のモジュール式アプローチを使用して、独自のカスタムハイパーバイザーを作成するときにプロジェクトに必要な複雑さを選択できます。
GitHubからBareFlank Hypervisor SDKの最新バージョンを入手してください。
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
make楽しむ:
make driver_quick
make start
make dump
make stop
私たちのハックをハックできますか?®チャレンジとテストをご覧ください!スコアを提出して、あなたが持っているものを見せてください。全国にオフィスがあり、競争力のある給与と卓越した利益を提供しています。サイバースペースの将来だけでなく、従業員の成功にもコミットしているチームに参加してください。

Ubuntu 20.04でBareFlankハイパーバイザーをコンパイルして使用する方法については、最新のデモをご覧ください。
以下のCPPCONの次のビデオと同様に、より優れたコンテンツについては、YouTubeチャンネルをご覧ください。
BareFlankを使用しようとする前に、最初のエクスペリエンスに大きな違いをもたらすことができるため、次のヒントを確認してください。
bcdedit /set hypervisorlaunchtype offにする必要があります。現在、BareFlankハイパーバイザーは、Clang/LLVM 10+コンパイラのみをサポートしています。ただし、これにより、ハイパーバイザーをクロスコンパイルのサポートを含むWindowsにネイティブにコンパイルできるようになります。他のC ++ 20コンパイラのサポートを必要に応じて追加できます。それが必要かどうかをお知らせください。
WindowsでBSLをコンパイルするには、最初にUEFI SecureBootを無効にし、テスト署名モードを有効にする必要があります。これには、Windowsを再インストールする必要がある場合があることに注意してください(警告されています)。これは、管理者特権を使用してコマンドプロンプトから実行できます。
bcdedit.exe /set testsigning ON
<reboot>
次に、以下をインストールしてください。
コンピレーション中に必要なWindows固有のライブラリが含まれているため、Visual Studioが必要です。 Visual Studioにネイティブに出荷するClang/LLVMプロジェクトを使用する代わりに、LLVMプロジェクトが提供する標準のClang/LLVMバイナリを使用して、LLD、Clang Tidy、Clang形式などのすべてのツールを取得します。また、忍者をパスのどこかに置く必要があることに注意してください(通常、CmakeのBinフォルダーにドロップします)。最後に、 WDKをインストールするときは、すべての指示に従ってください。これらの命令は頻繁に変更され、各ステップは、指示によって提供された順序で正しくインストールする必要があります。ステップをスキップする、または間違った順序でパッケージをインストールすると、WDKインストールが機能しません。
BSLをコンパイルするには、Bashを使用します。 CMDプロンプトの開設や「Bash」の入力など、Bashを開始する方法はたくさんあります。バッシュを実行したら、次のパスを追加してください。
たとえば、.bashrcでは、次のものを追加する場合があります(Visual Studioがこれらのファイルを置く場所に応じて):
export PATH= " /c/Program Files (x86)/Microsoft Visual Studio/2019/Community/MSBuild/Current/Bin:/c/Program Files (x86)/Windows Kits/10/Tools/x64:/c/Program Files (x86)/Windows Kits/10/bin/10.0.19041.0/x64: $PATH "最後に、Bashから以下を実行します。
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
ninja info
ninjaUbuntu(20.04以降)にBSLをコンパイルするには、最初に次の依存関係をインストールする必要があります。
sudo apt-get install -y clang cmake lldBSLをコンパイルするには、以下を使用してください。
git clone https://github.com/bareflank/hypervisor
mkdir hypervisor/build && cd hypervisor/build
cmake ..
make info
makeUEFIをコンパイルするには、上記のOSの手順に従ってください。ただし、cmakeに以下を追加します。
-DHYPERVISOR_BUILD_EFI= ONその後、通常どおりハイパーバイザーを構築でき、UEFIローダーが自動的にコンパイルされます。カーネル、拡張機能、UEFIローダーがコンパイルされたら、UEFI FS0パーティションにコピーできます。すべてのバイナリをFS0パーティションにコピーする必要があり、一部のシステムではこれがUSBスティックである可能性があることに注意してください。このコピープロセスを支援するために、ビルドシステムには次のコマンドが含まれます。
make copy_to_efi_partitionデフォルトでは、これはEFIパーティションを使用しますが、以下を使用して再配置できます。
-DHYPERVISOR_EFI_FS0=< path to FS0>一部のシステムでは、UEFIシェルを提供する必要があるため、BareFlankには、カーネル、拡張機能、UEFIローダーとともにコピーされるこのシェルのコピーが含まれています。 UEFIシェルに再起動したら、ハイパーバイザーを使用して開始できます
start_bareflank.efi
デフォルトでは、ハイパーバイザーはOSを起動できないことに注意してください。より完全なUEFIサポートを提供する非デフォルトの例を使用するか、OSを正常に起動できる独自の拡張機能を提供する必要があります。最後に、現在、STOPやダンプなどの他のVMMCTL関数を提供していません。
BareFlank Hypervisor SDKは、次の主要なコンポーネントで構成されています。
「拡張機能」は、コードを置く場所です。これは、いわゆる「リング-1」またはVMXルートでマイクロカーネルの上で実行されるリング3アプリケーションです。 「カーネル」は前述のマイクロカーネルであり、実際にハイパーバイザーを実装するすべてのハイパーバイザーアプリケーションを実行する責任があります。言い換えれば、すべてのハイパーバイザーロジックはあなたが提供する拡張機能に実装されており、私たちのマイクロカーネルはVMXルートで拡張機能を実行するためだけにそこにあります。 「ローダー」は、マイクロカーネルと拡張機能をVMXルートに配置します。ハイパーバイザーの開始と停止、およびデバッグリングの内容を投棄する責任があります。 「VMMCTL」アプリケーションは、ローダーを制御するために使用されます。これは、ローダーに何をすべきかを伝えるための簡単な手段を提供します。
BareFlankを起動するには、「ローダー」をコンパイルしてOSのカーネルで実行します。それを行うには、次のことを実行します(WindowsでNinjaと交換してください):
make driver_build
make driver_load
これにより、「ローダー」が構築され、OSのカーネルで実行されます。 Cmakeを使用して上記のBULD命令に従った場合、マイクロカーネル、VMMCTL、および拡張機能を既にコンパイルする必要があります(デフォルトではデフォルトの例です)。これらのコンポーネントがコンパイルされたら、次のコマンドを使用してハイパーバイザーを実行できます(WindowsのNinjaにMakeを置き換えます):
make start
デバッグ情報を取得するには、次のものを使用します(WindowsでNinjaと交換してください):
make dump
ハイパーバイザーを停止するには、次のものを使用します(WindowsでNinjaに置き換えます):
make stop
最後に、「ローダー」をアンロードしてビルドシステムをクリーンアップするには、以下を実行できます(WindowsでNinjaに置き換えます):
make driver_unload
make driver_clean
そして、それだけです。 BareFlankの構築と使用方法の詳細については、次のコアを実行できるコマンドの完全なリストと完全なビルド構成(WindowsのNinjaに置き換えます)を実行できます。
make info
BareFlankハイパーバイザーには、独自のカスタムハイパーバイザーを作成するために使用できる一連の例拡張機能が完備されています。開始するには、ワーキングディレクトリを作成し、ビルドプロセスをスピードアップするためにいくつかのリポジトリをクローン化します。
mkdir ~ /working
mkdir ~ /working/build
git clone https://github.com/bareflank/bsl ~ /working/bsl
git clone https://github.com/bareflank/hypervisor ~ /working/hypervisor次に、既存の例をワーキングディレクトリにコピーします(プロジェクトに最適な出発点を提供する例を選択します)。
cp -R ~ /working/hypervisor/example/default ~ /working/extension最後に、プロジェクトを構成し、ビルドシステムにカスタム拡張機能を見つける方法を伝えます。
cd ~ /working/build
cmake
../hypervisor
-DHYPERVISOR_EXTENSIONS_DIR= $PWD /../extension
-DFETCHCONTENT_SOURCE_DIR_BSL= $PWD /../bsl HYPERVISOR_EXTENSIONS_DIR拡張機能の位置を定義します。パスは絶対パスでなければならないことに注意してください。そのため、ビルドフォルダーの絶対パスを出発点として使用し、そこから拡張フォルダーの場所を作成しました。
FETCHCONTENT_SOURCE_DIR_BSLはオプションです。これは、BSLをどこで見つけるかをビルドシステムに伝えます。既にBSLをワーキングディレクトリにクローン化しているため、ビルドシステムに自動的にBSLを取得するように依頼する代わりに使用できます。これは、オフラインビルドに最適です。また、cmakeを頻繁に再実行している場所でビルドし、BSLが毎回ダウンロードするのを待ちたくありません。
上記の残りの使用手順は、カスタムハイパーバイザーを起動/停止するために使用できます。マイクロカーネルが拡張機能を提供するAbisの詳細については、DocsフォルダーのマイクロカーネルSyscall仕様を参照してください。また、このABIの実装の実装を、必要に応じて使用できるC ++ APIのセットとして提供します。 APIのこの例は、syscall/include/mk_interface.hppファイルで見ることができます。
Rustの例を使用するには、Rustをインストールして毎晩のチャンネルに切り替える必要があります。
BareFlank Hypervisorは、以下を含むライブラリの使用方法を学ぶための大量の有用なリソースを提供します。
ご質問、バグ、または機能のリクエストがある場合は、次のいずれかをお気軽にお問い合わせください。
あなたが助けたいなら:
BareFlankハイパーバイザーは、可能な限り最高のコード品質を確保するために、次のツールを活用します。各プル要求は、次の厳密なテストとレビューを受けます。
Windowsでは、シリアル出力が機能しない場合があり、一部のシステム(Intel Nucなど)では、デフォルトのWindowsシリアルデバイスがBareFlankがまったく開始されないようにする場合があります。この場合、以下を使用してデフォルトのシリアルデバイスを無効にします。
reg add "HKEY_LOCAL_MACHINESystemCurrentControlSetServicesSerial" /f /v "start" /t REG_DWORD /d "4"
シリアルデバイスの使用方法の詳細については、上記の「重要なヒント」を参照してください。
BareFlankハイパーバイザーは、MITライセンスに基づいてライセンスされています。
BareFlankに興味がある場合は、次のプロジェクトにも興味があるかもしれません。
もっと:
https://github.com/ainfosec/more
SimpleVisor:
https://github.com/ionescu007/simplevisor
HyperPlatform:
https://github.com/tandasat/hyperplatform