Skip to content

UEFI GOP and iohyve

pr1ntf edited this page Oct 17, 2016 · 4 revisions

This document is now outdated as UEFI-GOP Support is in HEAD.

There is now an experimental FreeBSD bhyve branch that allows for a VNC console to be attached to your bhyve guests. It's not in HEAD as of yet, but there is a feature branch available to test. As of 2016/06/09 iohyve can utilize these new features so you can use UEFI-GOP on bhyve to use a VNC console to install and use guests. Please note that this is still experimental, and over time this document may change as this feature is still undergoing active development on both bhyve and iohyve.

Before we begin, please read over the bhyve/UEFI Wiki page. Pay close attention to the Retrieve and Build the Project Branch and Firmware Binary portion to build the bhyve binary. At this time, running make install will not install the bhyve binary to /usr/sbin. Because of this, we must do something a bit hacky to get it working with iohyve.

First we must back up the old bhyve binary:

mv /usr/sbin/bhyve /usr/sbin/bhyve_old

Then copy your newly compiled bhyve binary over to /usr/sbin/:

cp $working_directory/bhyve /usr/sbin

Make sure you have the latest version of iohyve from github:

git clone https://github.com/pr1ntf/iohyve.git

For the purposes of this document, we are going to try out Windows 10 under iohyve.

Add the Windows 10 ISO to iohyve via either by iohyve fetchiso $Win10ISO or iohyve cpiso ~/Downloads/$Windows10.iso and then create your new guest with something like:

iohyve create win10 16G

In order to use the new UEFI-GOP bits, you must set some properties on the newly created guest like:

iohyve set win10 loader=uefi ram=4096M cpu=2 vnc=YES vnc_port=5900 vnc_wait=YES vnc_tablet=YES 

With these settings, we make sure that the guest RAM is 4096M, the number of virtual CPU's is 2, the VNC port is 5900, the guest will not start until the VNC server is connected (vnc_wait=YES), and that the tablet touch interface is connected for better responsiveness in the VNC console (vnc_tablet=YES).

We also need to make sure the guest is ready for Windows:

iohyve set win10 bargs="-H -w" 

Now we can install the Windows 10 VM:

iohyve install win10 Win10_1511_English_x64.iso

Since the default settings for the iohyve UEFI-GOP settings attach the VNC server to 127.0.0.1, you can connect to the VNC server on the local machine with something like vncviewer 127.0.0.1:5900 if you are working on a local machine.

If you are working on a remote machine, you should still only run the VNC server on 127.0.0.1 and use SSH port forwarding to forward you local port to the remote VNC port:

ssh -L 5900:127.0.0.1:5900 -N -f -l $username $hostname

Then you can connect to the VNC server with something like:

vncviewer 127.0.0.1:5900