Hinzufügen eines DVD-Laufwerks zu einer headless-VirtualBox unter FreeBSD

547
Dan Barowy

Ich habe eine Windows 10 VM, die auf FreeBSD 11.1 in VirtualBox headless ausgeführt wird. Es läuft ohne Probleme. Ich möchte der VM den Zugriff auf physische CDs / DVDs ermöglichen, damit ich echte Discs einlegen und in der VM öffnen kann.

Wenn ich tue

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

Die VM startet nicht mehr.

$ 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 

Ich habe dafür gesorgt, dass /etc/devfs.confenthält

perm cd* 0660 perm xpt0 0660 perm pass* 0660 

und mein Benutzer ist in der Operatorgruppe. Darüber hinaus enthält das VirtualBox-Protokoll keine offensichtlichen Fehler oder Warnungen. Die VM bricht einfach ohne nützliche Diagnoseinformationen ab. Durch das Entfernen des CD-Geräts wird die Funktionalität der VM wiederhergestellt.

Irgendwelche Ideen?

Update: Es sieht so aus, VBoxHeadlessals würde es aufgrund eines Segmentierungsfehlers heruntergefahren. Die Ursache ist mir immer noch unklar. Von /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 

Update 2: VBoxHeadlessAbbruch ist der Punkt, an dem die VM ATA-Geräte initialisiert. Ohne das CD-Gerät sehe ich Folgendes im Protokoll:

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

aber wenn ich es wieder hinzufüge, bekomme ich

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

2 Antworten auf die Frage

2
harrymc

Ich denke, dass Ihr Fehler ist, dass Sie den Speicher als definieren sollen, IDE Controllerstatt SATA Controller.

Der Befehl sollte eher so aussehen:

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

Bei Problemen versuchen Sie Folgendes:

 $ 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 
Guter Vorschlag, aber leider erzeugt das den gleichen Fehler. Das Protokoll zeigt jetzt zwei PIIX3-Einträge anstelle von einem (für LUN # 0 und LUN # 1). Dan Barowy vor 5 Jahren 0
Das hätte funktionieren sollen. Es stimmt etwas mit Ihrer VM. Ich empfehle, es mit GUI auf einen Computer zu kopieren und die Definition zu untersuchen. Wenn nötig, rekonstruieren Sie es anhand der Festplatte. harrymc vor 5 Jahren 0
2
3D1T0R

Dinge zu versuchen:

Laut FreeBSD-Handbuch §21.6.3: DVD / CD-Zugriff von VirtualBox ™ Host

HAL muss ausgeführt werden, damit die VirtualBox ™ DVD / CD-Funktionen funktionieren

Also musst du…

Aktivieren Sie es /etc/rc.confund starten Sie es, falls es noch nicht läuft

Dazu fügen Sie hald_enable="YES"Ihre /etc/rc.confDatei hinzu und führen sie dann aus

# service hald start 

Dies gilt zusätzlich zu der Anforderung für den Benutzer, der Zugriff auf /dev/xpt0, /dev/cdNund benötigt, und /dev/passNder gemäß demselben Abschnitt des Handbuchs "normalerweise dadurch erreicht wird, dass der Benutzer Mitglied wird operator" und die Berechtigungen des Geräts korrigiert werden, indem diese Zeilen hinzugefügt werden /etc/devfs.conf"

perm cd* 0660 perm xpt0 0660 perm pass* 0660 

und (damit das System diese Änderungen verwendet) den devfsDienst neu zu starten

# service devfs restart 

Wenn Ihre VM nach all dem immer noch nicht startet, während Sie mit Ihrem Host-CD / DVD-Laufwerk verbunden sind, sollten Sie diese Ratschläge befolgen (von derselben Seite wie oben):

Erstellen Sie bei Bedarf zuerst ein leeres IDE-CD / DVD-Gerät. Wählen Sie dann das Host-Laufwerk aus dem Popup-Menü für die Auswahl des virtuellen CD / DVD-Laufwerks.

Wenn Sie das erwähnte 'Popup-Menü' nicht verwenden können, denke ich (aus der Dokumentation), dass das Folgende das Befehlszeilenäquivalent sein sollte:

  1. Bei ausgeschalteter VM: Schließen Sie ein leeres virtuelles IDE-CD / DVD-Gerät an

    VBoxManage storageattach MyVM --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium emptydrive 
  2. Starten Sie Ihre VM:

    VBoxManage startvm MyVM 
  3. Während die VM noch läuft: Wechseln Sie zur Verwendung des Hostlaufwerks

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

Leider funktioniert es immer noch nicht:

Anscheinend gibt es einen Fehler in VirtualBox, der verhindert, dass dies auf Ihrem System funktioniert. Ich schlage vor, dass das Problem den VirtualBox-Entwicklern im Bugtracker des Projekts gemeldet wird .

Problemumgehung:

Bis zur Behebung dieses Problems empfiehlt es sich, das Problem zu umgehen, indem Sie eine ISO-Datei von Ihren physischen Datenträgern zur Verwendung mit VirtualBox erstellen. (Manche Leute bevorzugen es trotzdem.)

  1. Lesen Sie die Block- und Volume-Größe der Disc, damit Sie ein perfektes ISO erstellen können
    (dieser Schritt ist nicht unbedingt erforderlich. Wenn Sie jedoch eine ISO ohne ISO erstellen, wird die Prüfsumme anders als bei der ursprünglichen ISO-Datei, die zum Erstellen der CD verwendet wurde. Ein Paar von Null-Datenblöcken am Ende "sowie die Volumengröße können später nützlich sein.)
    isoinfo -d -i /dev/cd0 | grep -i -E 'block size|volume size'

    Sie erhalten eine ähnliche Ausgabe:

    Logical block size is: 2048 Volume size is: 327867 
  2. Verwenden Sie dddiese Option, um den Inhalt der Disc zu kopieren

    • dd if=/dev/cd0 of=<cd name>.iso bs=<block size from step 1> count=<volume size from step 1>
      Zum Beispiel werde ich ein ISO namens "MyVirtualCD.iso" von der obigen Beispiel-CD erstellen:
      dd if=/dev/cd0 of=MyVirtualCD.iso bs=2048 count=327867
    • Wenn Sie Schritt 1 übersprungen haben, lassen Sie es einfach weg bsund countwie
      dd if=/dev/cd0 of=MyVirtualCD.iso
      folgt : Ihr ISO wird immer noch einwandfrei funktionieren. Am Ende werden nur unnötige "Null-Datenblöcke" angezeigt.
    • Wenn Sie eine neue Version verwenden dd, wird möglicherweise der Status durch Hinzufügen status=progresszur obigen Befehlszeile angezeigt
    • Wenn Sie eine ältere Version von verwenden ddoder einen schöneren Fortschrittsanzeiger verwenden möchten, können Sie die Installation pvüber "The Ports Collection" oder "FreshPorts" installieren und die ddAusgabe durchleiten, pvum Statistiken zu sehen, und da wir die Volumengröße aus Schritt kennen 1, eine genaue Fortschrittsanzeige:
      dd if=/dev/cd0 | pv -s <volume size from step 1> | dd of=<cd name>.iso

      In unserem Beispiel würde dies wie folgt aussehen:
      dd if=/dev/cd0 of=MyVirtualCD.iso | pv -s 327867 | dd of=MyVirtualCD.iso

  3. Jetzt können Sie das ISO an die VM anschließen und starten:

    • VBoxManage storageattach MyVM --storagectl "SATA Controller" --port 1 --device 0 --type dvddrive --medium /path/to/MyVirtualCD.iso
    • VBoxManage startvm MyVM
    • Wenn Sie Ihre VM mit dem emptydrivezuvor erwähnten Medium booten, steht das leere virtuelle CD-Laufwerk zur Verfügung, damit Sie denselben storageattachBefehl verwenden können, während die VM ausgeführt wird, um eine Ihrer virtuellen CDs zu wechseln, wann immer Sie möchten.

Quellen:
FreeBSD-Handbuch, VBoxManage-Dokumente, Thomas-Krenn-Wiki, Fragen Sie Ubuntu nach "phoibos"

"hald" läuft bereits auf meinem Rechner, mit genau derselben "/ etc / devfs", die Sie haben. Gutes Denken aber! Dan Barowy vor 5 Jahren 0
Leider hat diese Antwort nicht geholfen (ich vermute einen VBox-Fehler), aber es scheint vollständig genug zu sein, dass es hoffentlich jemand anderen hilft. Dan Barowy vor 5 Jahren 0
Ich habe meine Antwort bearbeitet, um Informationen darüber zu erhalten, wie ISO-Dateien von Ihren CDs erstellt werden, um dieses Problem zu umgehen. Da es sich anscheinend um einen Fehler in VirtualBox handelt, fordere ich Sie auf, ihn über den [Bugtracker] (https://www.virtualbox.org/wiki/Bugtracker) zu melden. Wenn Sie dies tun, posten Sie bitte einen Link zum Fehler in einem Kommentar, und ich bearbeite ihn in meiner Antwort. 3D1T0R vor 5 Jahren 0
@ DanBarowy: Haben Sie einen Fehlerbericht eingereicht? 3D1T0R vor 5 Jahren 0