[BitVisor-devel:72] Re: Bitvisor上でのlwIPの使い方について

Hideki EIRAKU hdk @ igel.co.jp
2015年 12月 9日 (水) 17:01:18 JST


海野様

榮樂です。こんにちは。

From: umino tomoki <t.umino.nit @ gmail.com>
Subject: [BitVisor-devel:71] Re: Bitvisor上でのlwIPの使い方について
Date: Wed, 9 Dec 2015 14:17:02 +0900

> bitvisorの設定ファイルは、bitvisor.confとdefconfigの2つがありますが
> vmm.driver.pciの設定は2つのファイルで共有されている必要があるのでしょうか?

boot/login または boot/login-simple をお使いの場合は bitvisor.conf の
設定のみが有効になります。defconfig は boot/login または
boot/login-simple を使わない場合のデフォルト設定になります。

> そこで、bitvisor.confにも同じ設定(””を入れたままだと、文法エラーがでたので、""を外しました)を追加したところ、
> 起動時のログから、IPアドレスが割り振られているところは確認できましたが、
> ゲストOSの起動後にクラッシュしてしまいました。
> その際に出力されたメッセージが以下のものです。
> panic(CPU0): Assertion failed!(h < NUM_OF_RDESC) function receive_physnic
> file drivers/net/pro1000.c line 999

ゲスト OS の起動中に BitVisor からデバイスが見えなくなって、レジスター
の値が 0xFFFFFFFF になってしまい、このようなエラーが出たことがあります。
ネットワークデバイスが接続されている PCI Express のブリッジをゲスト OS
が触ると、このようなエラーになることがあるようです。

net=ip の場合、ゲスト OS からネットワークデバイスが見えない状態になる
ようにできていますが、それが悪さをしているかも知れません。以下のいずれ
かを試してみてください。

1. net=ip ではなく net=ippass にする

   この設定ではゲスト OS からもネットワークが使える状態となり、ゲスト
   OS のネットワーク初期化後に lwIP が使える状態になります。ただし、ゲ
   スト OS と BitVisor の両方で DHCP によるアドレス割り当てを使用する
   とおそらくトラブルの元になるので設定に気をつけてください。ゲスト OS
   でネットワークのインターフェイスの使用を停止すると BitVisor の通信
   もできなくなります。

2. net=ip のままで virtio=1 を追加する (net=ip,tty=1,virtio=1)

   Bitbucket にある最新版 BitVisor にはゲスト OS に virtio-net デバイ
   スとして見せる機能が入っています。これを使うと BitVisor 起動直後か
   ら lwIP が使えます。また、ゲスト OS に virtio-net デバイスドライバー
   がインストールされていれば、ゲスト OS もネットワークデバイスを検出
   しますが、net=ip としてあればゲスト OS は何も通信できない状態となり
   ますので、DHCP の設定のままでも問題ありません。

3. ネットワークデバイスが接続されているブリッジを特定して隠蔽する

   lspci -tv コマンドなどを用いてネットワークデバイスが接続されている
   ブリッジを特定し、根元のブリッジを隠蔽する設定を追加します。そうす
   るとゲスト OS がブリッジを触ることがなくなりますので、ゲスト OS か
   らネットワークデバイスが見えない状態でも、トラブルが起きなくなりま
   す。

   例えば 00:1c.4 のブリッジを隠蔽する場合は以下のようになります。

     vmm.driver.pci=slot=00:1c.4, driver=conceal, and, slot=02:06.0, driver=pro1000, net=ip, tty=1

-- 
Hideki EIRAKU <hdk @ igel.co.jp>


BitVisor-devel メーリングリストの案内