xhyveでFreeBSD guestを動かす

久しぶりですね。κeenです。最近はMacでもまともな仮想環境が整ってきたのでFreeBSDでも動かすかーといって試したやつを共有します。

大部分はここを参考にしてますが、ちゃんと動きます。

xhyveとは

xhyve – Lightweight Virtualization on OS X Based on bhyve | pagetable.com

FreeBSDのBHyVeをMac OS Xに移植したものです。Intel CPUの仮想化フレームワークを使うことで仮想化の実装が(比較的)が楽になるからやろうぜってプロジェクトです。 カーネルレベルでのサポートが必要になりますがyosemiteからHyervisor.frameworkが入っているのでそれが使えます。

因みに開発はそんなに活発ではないです。

動かす

xhyveの準備

FreeBSDのサポートは既にマージされているのでcloneしてきてそのまま使えます。

git clone git@github.com:mist64/xhyve.git
cd xhyve
make

FreeBSDのイメージの入手 イメージは現在10.2が出ているので

fetch http://ftp.freebsd.org/pub/FreeBSD/releases/VM-IMAGES/10.2-RELEASE/amd64/Latest/FreeBSD-10.2-RELEASE-amd64.raw.xz
unxz FreeBSD-10.2-RELEASE-amd64.raw.xz

で入手出来ます。

起動スクリプトの準備

参照ブログのままだとハードディスクが読めないのでIMG_HDDにもイメージを指定します。

名前は何でも良いのですがfreebsd.shとして保存し、chmod +x freebsd.shします。

#!/bin/sh

USERBOOT="test/userboot.so"
BOOTVOLUME="FreeBSD-10.2-RELEASE-amd64.raw"
KERNELENV=""

MEM="-m 1G"
#SMP="-c 2"
#NET="-s 2:0,virtio-net"
#IMG_CD="-s 3,ahci-cd,/somepath/somefile.iso"
IMG_HDD="-s 4,virtio-blk,$BOOTVOLUME"
PCI_DEV="-s 0:0,hostbridge -s 31,lpc"
LPC_DEV="-l com1,stdio"
#UUID="-U deadbeef-dead-dead-dead-deaddeafbeef"

build/xhyve -A $MEM $SMP $PCI_DEV $LPC_DEV $NET $IMG_CD $IMG_HDD $UUID -f fbsd,$USERBOOT,$BOOTVOLUME,"$KERNELENV"

起動

./freebsd.sh

で起動します。

その他

FreeBSDのイメージを一杯作りたい人はダウンロードしてきたやつをcpして使うと良いと思います。

Written by κeen