it-swarm-ja.com

FreeBSDのヘッドレスVirtualBoxにDVDドライブを追加する

Windows 10 VM FreeBSD11.1のVirtualBoxでヘッドレスで実行しています。問題なく実行されます。VMで物理CDにアクセスできるようにしたい/実際のディスクを挿入してVMで開くことができるようにDVD。

私がする時

VBoxManage storageattach MyVM --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium Host:/dev/cd0

VMは起動しなくなりました。

$ VBoxManage startvm MyVM
--type headless Waiting for VM "MyVM" to power on...
VBoxManage: error: The VM session was aborted
VBoxManage: error: Details: code NS_ERROR_FAILURE (0x80004005), component SessionMachine, interface ISession

/etc/devfs.confに含まれていることを確認しました

perm cd* 0660
perm xpt0 0660
perm pass* 0660

私のユーザーはオペレーターグループに属しています。さらに、VirtualBoxログには明らかなエラーや警告は含まれていません。 VMは、有用な診断情報なしで中止されます。CDデバイスを取り外すと、VMが機能するようになります。

何か案は?

更新:セグメンテーション違反のためにVBoxHeadlessがシャットダウンしているようです。原因はまだはっきりしていません。 /var/log/messagesから:

May 5 12:05:31 the_computer kernel: vboxdrv: XXXXXXXXXXXXXXXX VMMR0.r0
May 5 12:05:31 the_computer kernel: vboxdrv: XXXXXXXXXXXXXXXX VBoxDDR0.r0
May 5 12:05:31 the_computer kernel: pid 61621 (VBoxHeadless), uid 1001: exited on signal 11

更新2:VBoxHeadlessが異常終了するポイントは、VMがATAデバイスを初期化するポイントです。CDデバイスがない場合、ログに次のように表示されます。

...
00:00:01.280311 VD#0: Cancelling all active requests
00:00:01.280468 PIIX3 ATA: LUN#0: no unit
...

しかし、それを再び追加すると、

...
00:00:00.273730 VD#0: Cancelling all active requests
[end of file]
4
Dan Barowy

試すべきこと:

FreeBSDハンドブック§21.6.3によると:VirtualBox™ホストDVD/CDアクセス

VirtualBox™DVD/CD機能を機能させるには、HALを実行する必要があります

したがって、あなたは…する必要があります

/etc/rc.confで有効にし、まだ実行されていない場合は開始します

これは、hald_enable="YES"をyour/etc/rc.confファイルに追加してから実行することで実行されます。

# service hald start

これは、ユーザーが/dev/xpt0/dev/cdN、および/dev/passNにアクセスする必要があるという要件に追加されます。これは、ハンドブックの同じセクションによると、「通常、ユーザーをoperatorのメンバーであり、「これらの行を/etc/devfs.confに追加することで」デバイスのアクセス許可を修正します。

perm cd* 0660
perm xpt0 0660
perm pass* 0660

および(システムがこれらの変更を利用するように)devfsサービスを再起動します

# service devfs restart

このすべての後、ホストCD/DVDドライブに接続しているときに、VMがまだ起動しない場合は、このアドバイスに従うことを検討してください( 同じページから取得 上記のように):

必要に応じて、最初に空のIDE CD/DVDデバイスを作成します。次に、仮想CD/DVDドライブを選択するためのポップアップメニューからホストドライブを選択します。

上記の「ポップアップメニュー」を使用できない場合は、(ドキュメントを読んで)次のコマンドラインに相当するものが必要だと思います。

  1. VM電源がオフの場合:空の仮想IDE CD/DVDデバイスを接続します

    VBoxManage storageattach MyVM --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium emptydrive
    
  2. VMを起動します。

    VBoxManage startvm MyVM
    
  3. VMがまだ実行されている間:ホストドライブの使用に切り替えます

    VBoxManage storageattach MyVM --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium Host:/dev/cd0
    

残念ながら、それでも機能しない可能性があります。

VirtualBoxにバグがあり、システムでこれが機能しない可能性があるようです。この問題は、プロジェクトの Bugtracker でVirtualBox開発者に報告することをお勧めします。

回避策:

この問題が修正されるまで、VirtualBoxで使用するために物理ディスクからISOファイルを作成して問題を回避することをお勧めします。 (とにかくこれを好む人もいます。)

  1. 完璧なISOを作成できるように、ディスクのブロックとボリュームサイズを読み取ります
    (この手順は実際には必要ではありませんが、それなしで作成されたISOは、CDの作成に使用された元のISOファイルとは異なるチェックサムを持ちます。 「最後にゼロのデータブロックのペア」とボリュームサイズは後で役立ちます)
    isoinfo -d -i /dev/cd0 | grep -i -E 'block size|volume size'

    次のような出力が得られます。

    Logical block size is: 2048
    Volume size is: 327867
    
  2. ddを使用して、ディスクの内容をコピーします

    • dd if=/dev/cd0 of=<cd name>.iso bs=<block size from step 1> count=<volume size from step 1>
      たとえば、上記のサンプルディスクから「MyVirtualCD.iso」というISOを作成します。
      dd if=/dev/cd0 of=MyVirtualCD.iso bs=2048 count=327867
    • 手順1をスキップした場合は、次のようにbscountを省略します。
      dd if=/dev/cd0 of=MyVirtualCD.iso
      ISOは引き続き正常に機能し、最後に不要な「ゼロデータブロック」が含まれるだけです。
    • 新しいバージョンのddを使用している場合は、上記のコマンドラインにstatus=progressを追加することでステータスの表示をサポートする場合があります
    • 古いバージョンのddを使用している場合、または見栄えの良い進行状況インジケーターが必要な場合は、 "The Ports Collection" または "を介してpvをインストールできます。 FreshPorts " 、そしてdd出力をpvにパイプして統計を確認します。ステップ1からボリュームサイズがわかっているので、正確な進行状況バー:
      dd if=/dev/cd0 | pv -s <volume size from step 1> | dd of=<cd name>.iso

      この例では、これは次のようになります。
      dd if=/dev/cd0 of=MyVirtualCD.iso | pv -s 327867 | dd of=MyVirtualCD.iso

  3. これで、ISOをVMにアタッチして、起動できます。

    • VBoxManage storageattach MyVM --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium /path/to/MyVirtualCD.iso
    • VBoxManage startvm MyVM
    • また、前述のemptydriveメディアを使用するように設定してVMを起動すると、空の仮想CDドライブを使用して同じstorageattachコマンドを使用できます。VMは、いつでも仮想CDの1つをスワップインするために実行されています。

出典:
FreeBSDハンドブックVBoxManage docsThomas-Krenn Wiki「phoibos」でUbuntuの回答を求める

2
3D1T0R

エラーは、ストレージをIDE ControllerではなくSATA Controllerとして定義する必要があることだと思います。

コマンドは次のようになります。

VBoxManage storageattach MyVM --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium Host:/dev/cd0

問題が発生した場合は、これを試してください:

   $ VBoxManage storagectl MyVM --name "IDE Controller" --remove 
   $ VBoxManage storagectl MyVM --name "IDE Controller" --add ide
   $ VBoxManage storageattach MyVM --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium Host:/dev/cd0
2
harrymc