Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

BitVisor on HyperV 再挑戦

More than 1 year has passed since last update.

はじめに

一昨年の BitVisor Advent Calendar で HyperV 上で BitVisor を動かそうとして挫折した記事を書きました. 記事の最後には, 時間があればリベンジするかも. などと書いていましたが完全に放置していたので,今回再挑戦してみようと思った次第です.

残念ながら,今も時間があるわけではないので,ほとんど一昨年の手順をもう一度試すだけになりました… 一昨年挑戦したときの記事–> https://qiita.com/deep_tkkn/items/7f55e507cbe2009c854c

結論

今年も結局動きませんでした...

動作環境

動作環境は一昨年と同じです.(そろそろ新しいマシンが欲しい)

  • マシン: Thinkpad X220
  • CPU: Intel Core i5-2520M CPU @ 2.50GHz
  • RAM: 16 GB
  • Host OS: Windows 10 Version 1903
  • Guest OS: Ubuntu 18.04.2 with
  • Guest kernel: Linux ubuntu1804 4.15.0-70-generic #79-Ubuntu SMP Tue Nov 12 10:36:11 UTC 2019 x8664 x8664 x8664 GNU/Linux

Nested Virtualization の有効化

一昨年の記事で Nested Virtualization を有効にする方法が説明されていたページをリンクしていたんですが,リンク切れしていたのでもう一度ここに書きます.

UI では Nested Virtualization に関する設定項目が全然見えないものの,CLI コマンドから設定できます. まずは今の設定を PowerShell (管理者権限で実行) で確認してみます.

PS C:\WINDOWS\system32> Get-VMProcessor ubuntu1804

VMName     Count CompatibilityForMigrationEnabled CompatibilityForOlderOperatingSystemsEnabled
------     ----- -------------------------------- --------------------------------------------
ubuntu1804 1     False                            False


PS C:\WINDOWS\system32> Get-VMProcessor ubuntu1804 | Select *


VMCheckpointId                               : 00000000-0000-0000-0000-000000000000
VMCheckpointName                             :
ResourcePoolName                             : Primordial
Count                                        : 1
CompatibilityForMigrationEnabled             : False
CompatibilityForOlderOperatingSystemsEnabled : False
HwThreadCountPerCore                         : 0
ExposeVirtualizationExtensions               : False
EnablePerfmonPmu                             : False
EnablePerfmonLbr                             : False
EnablePerfmonPebs                            : False
EnablePerfmonIpt                             : False
Maximum                                      : 100
Reserve                                      : 0
RelativeWeight                               : 100
MaximumCountPerNumaNode                      : 4
MaximumCountPerNumaSocket                    : 1
EnableHostResourceProtection                 : False
OperationalStatus                            : {}
StatusDescription                            : {}
Name                                         : プロセッサ
Id                                           : Microsoft:3E72556C-C387-40DF-A048-AB1E53C1DB27\b637f346-6a0e-4dec-af52-b
                                               d70cb80a21d\0
VMId                                         : 3e72556c-c387-40df-a048-ab1e53c1db27
VMName                                       : ubuntu1804
VMSnapshotId                                 : 00000000-0000-0000-0000-000000000000
VMSnapshotName                               :
CimSession                                   : CimSession: .
ComputerName                                 : WIN-45QGET4E7K9
IsDeleted                                    : False

VMProcessor の ExposeVirtualizationExtensions というのを True じゃないといけないが, False ですね,はい… というわけでこれを設定するために PowerShell で以下のようにする.

PS C:\WINDOWS\system32> Set-VMProcessor -VMName ubuntu1804 -ExposeVirtualizationExtensions $true

もう一度確認

PS C:\WINDOWS\system32> Get-VMProcessor ubuntu1804 | Select *


VMCheckpointId                               : 00000000-0000-0000-0000-000000000000
VMCheckpointName                             :
ResourcePoolName                             : Primordial
Count                                        : 1
CompatibilityForMigrationEnabled             : False
CompatibilityForOlderOperatingSystemsEnabled : False
HwThreadCountPerCore                         : 0
ExposeVirtualizationExtensions               : True
EnablePerfmonPmu                             : False
EnablePerfmonLbr                             : False
EnablePerfmonPebs                            : False
EnablePerfmonIpt                             : False
Maximum                                      : 100
Reserve                                      : 0
RelativeWeight                               : 100
MaximumCountPerNumaNode                      : 4
MaximumCountPerNumaSocket                    : 1
EnableHostResourceProtection                 : False
OperationalStatus                            : {}
StatusDescription                            : {}
Name                                         : プロセッサ
Id                                           : Microsoft:3E72556C-C387-40DF-A048-AB1E53C1DB27\b637f346-6a0e-4dec-af52-b
                           d70cb80a21d\0
VMId                                         : 3e72556c-c387-40df-a048-ab1e53c1db27
VMName                                       : ubuntu1804
VMSnapshotId                                 : 00000000-0000-0000-0000-000000000000
VMSnapshotName                               :
CimSession                                   : CimSession: .
ComputerName                                 : WIN-45QGET4E7K9
IsDeleted                                    : False          

OK そうですね.

参考 URL

とりあえず試す

  1. Hyper-V 上で VM, Guest OS を用意
    • 今回は別用で用意したものを流用
    • 第一世代の VM (BIOS boot)
  2. BitVisor のバイナリをダウンロード, boot 以下に置く https://bitvisor.orgNigtyly Build からダウンロード
  3. grub の設定

    • /etc/grub.d/40_custom に以下を追記

      menuentry "BitVisor" {
              multiboot /boot/bitvisor.elf
      }
      
    • /etc/default/grub

      • GRUB_TIMEOUT_STYLEhidden から menu
      • GRUB_TIMEOUT0 から 10
      $ diff -u default_grub.backup /etc/default/grub
      --- default_grub.backup 2019-12-02 22:56:16.648771785 +0900
      +++ /etc/default/grub   2019-12-02 22:56:29.527069551 +0900
      @@ -4,8 +4,8 @@
       #   info -f grub -n 'Simple configuration'
      
       GRUB_DEFAULT=0
      -GRUB_TIMEOUT_STYLE=hidden
      -GRUB_TIMEOUT=0
      +GRUB_TIMEOUT_STYLE=menu
      +GRUB_TIMEOUT=10
       GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
       GRUB_CMDLINE_LINUX_DEFAULT="splash quiet"
       GRUB_CMDLINE_LINUX=""
      
    • sudo grub-mkconfig -o /boot/grub/grub.cfg

結果

起動しませんでした… エラーも一昨年の記事と同じ…

どうでもいいんですが,この状態で VM に接続するとキーボードの Caps Lock のライトが点滅するんですよね… しかも光っている時に VM からフォーカスを外すと Caps Lock が入った状態になる… 地味に困ります.

32bit ビルドも試す

Nigtyly build はたぶん 64 bit 向けバイナリだと思いますが,一昨年の結果では 64 bit は厳しそうということだったので 32 bit 向けバイナリも試します.

  1. https://bitvisor.org/ からlatest のコードをダウンロード (bitbucket から clone してもいいと思います)
  2. make config して 64 を disable
  3. make
  4. bitvisor.elf を差し替え

結果は...

こちらも去年と同じ結果でした orz …

おわりに

HyperV のバージョンなどは上がっていると思いますが,残念ながら一昨年と同じ結果になってしまいました.
(というか VMEntry Failure は調べるの辛すぎるから Intel さんもっと細かい情報をエラーコードで返してお願い…)
VMEntry Failure から調べるのは難しそうだったので,Windows のイベントビューアとか弄ってみてたのですが,時間切れになってしまいました...

おまけ

↓こういうことがなければもう少し調べられていた気がする(いいわけ)
- https://twitter.com/deep_tkkn/status/1201490870467358720
- https://twitter.com/deep_tkkn/status/1201491922075828225

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away