Hosts/BSD: Difference between revisions

From QEMU
Line 15: Line 15:


Run the image with:
Run the image with:
  qemu-system-x86_64 -m 2048 -hda FreeBSD-11.0-RELEASE-amd64.qcow2 -enable-kvm -netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:7722-:22 -device e1000,netdev=mynet0
  qemu-system-x86_64 -m 2048 \
  -hda FreeBSD-11.0-RELEASE-amd64.qcow2 -enable-kvm \
  -netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:7722-:22 \
  -device e1000,netdev=mynet0


(TODO: check virtio works and recommend that instead.)
(TODO: check virtio works and recommend that instead.)

Revision as of 11:08, 21 March 2017

QEMU on BSD hosts

This documentation is not written by a BSD expert - corrections welcome!

QEMU can be built on BSD hosts. At the moment most QEMU developers are Linux users, though, so BSD is not very well supported.

This page includes documentation of how to get the various BSD flavours running in a VM inside QEMU, so that Linux-based developers can do build tests on them. If you're running natively on BSD you can ignore the "VM setup" instructions.

FreeBSD

VM setup

Download and uncompress the official FreeBSD qcow2 image from

https://download.freebsd.org/ftp/releases/VM-IMAGES/11.0-RELEASE/amd64/Latest/

Run the image with:

qemu-system-x86_64 -m 2048 \
 -hda FreeBSD-11.0-RELEASE-amd64.qcow2 -enable-kvm \
 -netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:7722-:22 \
 -device e1000,netdev=mynet0

(TODO: check virtio works and recommend that instead.)

Enable networking and ssh by adding these lines to /etc/rc.conf:

sshd_enable="YES"
ifconfig_em0="DHCP"

Edit /etc/ssh/sshd_config to add

PermitRootLogin prohibit-password

and then reboot the VM or run

service netif restart
service sshd start

Copy your ssh public key into the VM's /root/.ssh/authorized_keys

You should now be able to ssh into the VM from outside with

ssh -p 7722 root@localhost

Required packages

Install enough packages to do builds:

 pkg update
 pkg install git
 pkg install gcc
 pkg install gmake
 pkg install python
 pkg install pkgconf
 pkg install pixman
 pkg install bison

TODO: suggest some not-required-but-recommended packages?

Building

You can configure and build QEMU as you would on Linux:

 mkdir build
 cd build
 ../configure
 gmake
 gmake check

Note that you need to use 'gmake', not plain 'make'.

(NB as of 2017-03-20 you'll also need --disable-user to work around a QEMU bug.)

OpenBSD

VM setup

Get installer, create disk:

qemu-img create -f qcow2 disk.qcow2 15G
wget https://www.mirrorservice.org/pub/OpenBSD/6.0/amd64/cd60.iso

Run installer:

qemu-system-x86_64 -m 2048 -hda disk.qcow2 -cdrom cd60.iso -enable-kvm  -netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:7922-:22 -device e1000,netdev=mynet0

Follow the straightforward install prompts (accepting defaults generally OK). You'll want to enable sshd and allow logins with prohibit-password.

Reboot when it asks, and when it's rebooted kill the QEMU VM.

Now run the VM on the installed image:

 qemu-system-x86_64 -m 2048 -drive if=virtio,file=disk.qcow2,format=qcow2 -enable-kvm  -netdev user,id=mynet0,hostfwd=tcp:127.0.0.1:7922-:22 -device e1000,netdev=mynet0

Copy your ssh public key into root's .ssh/authorized_keys

You should now be able to get in to the VM with

ssh -p 7922 root@localhost

Required packages

Install enough packages to build QEMU

pkg_add git
pkg_add gmake
pkg_add python
 (select a python 2.7, and run the ln -sf runes to make it default)
pkg_add gcc
 (you need this to get a gcc that's not the ancient default)
pkg_add g++
pkg_add glib2
pkg_add bison
pkg_add sdl

TODO: recommended-but-not-required packages?

Build

Configure and make as usual:

mkdir build
cd build
../configure -cc=x86_64-unknown-openbsd6.0-gcc-4.9.3 --cxx=x86_64-unknown-openbsd6.0-g++-4.9.3
gmake

(NB as of 2017-03-20 you'll also need --disable-user to work around a QEMU bug.)

NetBSD

TODO: I have not yet been able to get a NetBSD VM running to test with...

Create a disk image, and grab the install cd image:

qemu-img create -f qcow2 disk.qcow2 15G
wget http://cdn.netbsd.org/pub/NetBSD/NetBSD-7.1/images/NetBSD-7.1-amd64.iso

Run the installer

qemu-system-x86_64 -m 2048 -enable-kvm \
  -drive if=virtio,file=disk.qcow2,format=qcow2 \
  -netdev user,id=mynet0,hostfwd=tcp::7722-:22 \
  -device e1000,netdev=mynet0 \
  -cdrom NetBSD-7.1-amd64.iso

TODO: this hangs during boot.