ref: 45f6dd9f8e21e2e8d6b185d39b2f36098e62b286
dir: /freebsd-bhyve.md/
Running 9front using bhyve(8) on FreeBSD ======================================== Required ports: sysutils/bhyve-firmware sysutils/uefi-edk2-bhyve sysutils/uefi-edk2-bhyve-csm net/tigervnc-viewer Add the following lines to `/etc/rc.conf`. Replace `re0` with your own network interface. It's good practice to assign each VM a unique `tap` interface in case you need to run multiple VMs at the same time. For simplicity's sake, this setup uses only one `tap`: if_bridge_load="YES" if_tap_load="YES" cloned_interfaces="bridge0 tap0" ifconfig_bridge0="DHCP addm re0 addm tap0" ifconfig_bridge0_alias0="inet 10.0.0.1/24" Reboot your machine and then grab a [9front ISO](https://9front.org/releases/). Make a directory where you'll store everything 9front-related. I usually keep all my [bhyve(8)](https://www.freebsd.org/cgi/man.cgi?query=bhyve&sektion=8) VMs under a [ZFS dataset](https://docs.freebsd.org/en/books/handbook/zfs/): $ cd /path/to/vms/ $ mkdir 9front $ mv /path/to/9front_iso 9front.iso Create an empty file to be used as the VM's hard drive. 10G will be more than enough: $ truncate -s 10G disk.img Make a startup script. Feel free to tweak the variable values to match your own setup. Obviously, when you're done installing 9front from the ISO, you'll be running the script without the `-s 3,...` line: $ cat 9front_start #!/bin/sh name="9front" cpu="2" mem="2G" iso="9front.iso" disk="disk.img" tap="tap0" ifconfig ${tap} up bhyve -c ${cpu} -m ${mem} -wH \ -s 0,hostbridge \ -s 3,ahci-cd,${iso} \ -s 4,ahci-hd,${disk} \ -s 5,virtio-net,${tap} \ -s 29,fbuf,tcp=0.0.0.0:5900,w=800,h=600,wait \ -s 30,xhci,tablet \ -s 31,lpc \ -l bootrom,/usr/local/share/uefi-firmware/BHYVE_UEFI.fd \ ${name} Make a shutdown script in order for bhyve(8) to close properly: $ cat 9front_stop #!/bin/sh name="9front" tap="tap0" ifconfig ${tap} down bhyvectl --force-poweroff --vm=${name} bhyvectl --destroy --vm=${name} Make the scripts executable and start the VM: $ chmod +x 9front_start 9front_stop # ./9front_start; ./9front_stop Run vncviewer(1) to connect to the VNC display: $ vncviewer 0.0.0.0 When prompted for the monitor type during boot, choose `xga`. ## Notes - IPv6 does not seem to work with 9front guests. - Some machines present overclocking problems when the host uses `TSC-low` as a time source (see [timecounters(4)](https://man.freebsd.org/cgi/man.cgi?query=timecounters§ion=4)). Changing it to `HPET` usually solves the problem.