WIN10 mit bhyve

pom

Well-Known Member
Hallo,

ich möchte ein vorhandes Windows10 von Hyper-V unter bhyve laufen lassen.

Dazu habe ich das Windows von HyperV exportiert.
Das entstandene vmdk File dann per qemu-img convert -f vmdk -O raw ... in ein raw Image konvertiert.

Wenn ich dann bhyve starte

Code:
bhyve -AHP -s 0:0,hostbridge -s 31:0,lpc -s 2:0,virtio-net,tap0 -s 3,ahci-hd,./win10_raw.img -s 4:0,ahci-cd,./virtio-win-0.1.118.iso -c 2 -m 4096M -s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait -s 30,xhci,tablet -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd win10
fbuf frame buffer base: 0x95f000000] [sz 16777216

sehe ich auf dem VNC Schirm die Meldung "boot failed. EFI Hard Drive"

Das Windows Image enthält am Anfang einige Textmeldungen (per Hexdump angeschaut). Von daher hätte ich mal die Hoffnung dass, das Image OK ist. Woran könnte das sonst noch liegen? Kann ich das raw image sonst irgendwie prüfen?

Gruß,
Peter
 
Gute Frage - wie finde ich das raus? Bzw. kann bhyve auch win10 "bios" booten?

Ist das die richtige Art:
Code:
bhyve -AHP -s 0:0,hostbridge -s 31:0,lpc -s 2:0,virtio-net,tap0 -s 3,ahci-hd,./win10_raw.img -s 4:0,ahci-cd,./virtio-win-0.1.118.iso -c 2 -m 4096M -s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait -s 30,xhci,tablet -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI_CSM.fd win10

Dann bleibt der VNC Schirm schwarz, es kommt aber auch keine Fehlermeldung.
 
Also: Bhyve kann BIOS booten, die VNC-Konsole hast du allerdings nur mit UEFI. Da sie auf dem UEFI GOP Interface aufsetzt. Windows hat daher nur mit UEFI Sinn, alles andere ist witzlos. Die VGA-Emulation hat es inzwischen immerhin bis zum Call of Testers gebracht, damit wird es diese Einschränkung nicht mehr geben. Allerdings würde ich mir keine Hoffnungen machen, dass sie es in FreeBSD 13.0 schafft. Die Zeit wird langsam knapp...

Ich habe hier mal beschrieben, wie man aus einem BIOS-Windows ein UEFI-Windows macht: https://www.bsdforen.de/threads/winos-aus-virtualbox-unter-bhyve-nutzen.33682/#post-293424 Nicht schön, aber es funktioniert.

Der einfachste Weg herauszufinden, wie das Windows installiert wurde, ist es aus dem Image ein Device zu machen:
Code:
% mdconfig -a -f /pfad/zum/image

Das Kommando gibt dir den Devicenamen zurück. Da kannst du dann mit gpart reinschauen
Code:
% gpart show md0

Gibt es eine Partition vom Typ EFI, ist es ein auf UEFI installiertes Windows. Gibt es sie nicht, ist es ein auf BIOS installiertes Windows. Anschließend das Device noch wieder freigeben:

Code:
% mdconfig -d -u 0
 
Zurück
Oben