カテゴリー
FreeBSD

bhyveでUbuntu仮想マシンを作る

概要

FreeBSDが標準で備える仮想化機能bhyve(LinuxのKVMに相当するもの)を使って仮想マシンを作ります。Ubuntu 20.04のデスクトップ版を例に動かしてみました。事前にBIOS画面で仮想化支援機能(VT-x/AMD-V)が有効になっていることを確認してください。

目次

  • vm-bhyveのインストール
  • VMの作成と設定の編集
  • VMの起動と画面接続

vm-bhyveのインストール

まずはbhyve、UEFIで起動するゲストのためのファームウェア、VM起動後に画面接続するためのVNCクライアントをインストールします。インストールできたら、VMデータを格納するためのZFS領域を作成します。ZFSを利用していない場合は代わりに適当な場所にディレクトリを作成します。その後、rc.confに設定を追加し、共通設定を終えたら、対象ディレクトリにテンプレートファイルをコピーします。

sudo pkg install vm-bhyve grub2-bhyve bhyve-firmware tigervnc-viewer
sudo zfs create zroot/vm
sudo sysrc vm_enable="YES"
sudo sysrc vm_dir="zfs:zroot/vm"
sudo vm init
sudo cp /usr/local/share/examples/vm-bhyve/* /zroot/vm/.templates/

パッケージとファイルの準備ができたら、ゲストが接続する仮想スイッチを作成し、ホストのネットワークインタフェース(ここではre0)を接続しておきます。インタフェース名はifconfigで確認してください。

sudo vm switch create public
sudo vm switch add public re0

これで、仮想マシンを作成する準備ができました。

VMの作成と設定の編集

ゲストにはISOイメージを使ってOSをインストールします。vm isoコマンドに利用したいISOイメージのURLを渡し、イメージを取得します。別途ISOイメージを取得してある場合は、 /etc/rc.conf に記載した vm_dir 以下に .iso ディレクトリがあるので(この記事の通りなら /zroot/vm/.iso があるはず、以下vm_dirは読み替えてください)、そこに手動で配置しても問題ありません。

sudo vm iso http://ftp.iij.ad.jp/pub/linux/ubuntu/releases/focal/ubuntu-20.04-desktop-amd64.iso

ISOイメージが取得できたら、仮想マシンを作成します。インストールするOSごとにテンプレートの設定が用意されており、-tオプションで指定します。指定可能なテンプレートは、vm_dir/.templatesを参照してください。-sオプションで仮想マシンに接続するディスク容量を指定し、仮想マシンの名前を決めてコマンドを実行します。

sudo vm create -t ubuntu -s 30G ubuntu-desktop

次のコマンドでVMとそのステータスの一覧を確認できます。

sudo vm list

VMの設定は vm_dir/ubuntu-desktop/ubuntu-desktop.conf に記載されています。お好みでCPUやメモリ容量を編集します。画面接続する場合は loader=”uefi” に設定し、 graphics=”yes” と xhci_mouse=”yes” を追加します。画面解像度は graphics_res=”<width>x<height>” で指定します。

loader="uefi"
cpu=2
graphics="yes"
graphics_res="1280x720"
xhci_mouse="yes"
memory=4G
network0_type="virtio-net"
network0_switch="public"
disk0_type="virtio-blk"
disk0_name="disk0.img"
uuid="6469dd85-c37c-11ea-b903-6c4b90efd1f4"
network0_mac="58:9c:fc:0d:7f:5e"

VMの起動と画面接続

VMの設定ができたら、次のコマンドでISOイメージを指定し、Ubuntuのインストールを開始します。

sudo vm install ubuntu-desktop ubuntu-20.04-desktop-amd64.iso

vm list するとVNCの待ち受けポートがわかるので、そこに画面接続してインストール作業を続行します。待ち受けが 0.0.0.0:5900 の場合は次のコマンドで接続します。

vncviewer localhost:5900

接続できれば、あとは好きに使いましょう。VMの起動は vm start <vm_name>、ACPIシャットダウンは vm stop <vm_name>、強制終了は vm poweroff <vm_name> が効きます。詳細は man vm を読みましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA