BSD界隈四方山話

第121回 OpenBSD 6.2をbhyveにインストール

この記事を読むのに必要な時間:およそ 3 分

OpenBSD 6.2

OpenBSDプロジェクトは2017年10月9日(カナダ時間)⁠OpenBSDの最新版となる「OpenBSD 6.2」を公開しました。今回のバージョンの見どころはシステムを起動するごとにユニークなカーネルが起動してくるセキュリティ強化機能Kernel Address Randomized Link (KARL)が導入された点にあります。

今回はFreeBSD bhyveにOpenBSD 6.2をインストール方法をまとめます。bhyveはハイパーバイザとして活用シーンが広まっています。bhyveの活用例としても参考にしてもらえればと思います。

仮想環境のセットアップ

次の構成で仮想環境を用意することにします。インストールイメージファイルや設定ファイルなどを適宜用意しておきます。

 ホストとゲストの設定

項目内容
ホストOSFreeBSD 11.1-RELEASE/amd64
ゲストOSOpenBSD 6.2/amd64
ホストNICbge0
ゲストNICtap4 via bridge0
仮想CPU2個
仮想メモリ2GB
仮想ディスク(32BG)/dev/zvol/z/openbsd-6.2
インストーラ/d/bhyve/install62.iso
grub-bhyve設定ファイル/d/bhyve/openbsd-6.2-device.map

リスト /boot/loader.confに追加する設定

vmm_load="YES"

リスト /etc/sysctl.confに追加する設定

net.link.tap.up_on_open=1

リスト /etc/rc.confに追加する設定

cloned_interfaces="bridge0 tap0 tap1 tap2 tap3 tap4 tap5 tap6 tap7 tap8 tap9 tap10 tap11 tap12"
ifconfig_bridge0="addm bge0 addm tap0 addm tap1 addm tap2 addm tap3 addm tap4 addm tap5 addm tap6 addm tap7 addm tap8 addm tap9 addm tap10 addm tap11 addm tap12"

リスト /d/bhyve/openbsd-6.2-device.mapファイルの中身

(hd0) /dev/zvol/z/openbsd-6.2
(cd0) /d/bhyve/install62.iso

設定ファイルを用意したあとにシステムを再起動しないのであれば,次のようにコマンドを手動で実行します。

 ネットワーク環境をセットアップ

# kldload vmm
# ifconfig tap4 create
# sysctl net.link.tap.up_on_open=1
net.link.tap.up_on_open: 0 -> 1
# ifconfig bridge0 create
# ifconfig bridge0 addm bge0 addm tap4 up

仮想環境で利用する仮想ディスクを次のようにZFSで作成します。

 ゲストの仮想ディスクをセットアップ

# zfs create -V 32G -o volmode=dev z/openbsd-6.2

OpenBSDカーネルの読み込みにgrub2-bhyveが必要になるので,パッケージからインストールしておきます。

 OpenBSDカーネルの読み込みに使用するgrub2-bhyveをインストール

# pkg install grub2-bhyve

これで仮想環境のセットアップは完了です。

OpenBSD 6.2インストール

次のようにgrub2-bhyveを実行してOpenBSDカーネルを読み込みます。インストール用にはbsdではなくbsd.rdのカーネルをロードする点に注意してください。

 OpenBSDインストール用カーネルのローディング

# grub-bhyve -m openbsd-6.2-device.map -r cd0 -M 2G openbsd-6.2

                             GNU GRUB  version 2.00

   Minimal BASH-like line editing is supported. For the first word, TAB
   lists possible command completions. Anywhere else TAB lists possible
   device or file completions.


grub> ls (cd0)
Device cd0: Filesystem type iso9660 - Label `OpenBSD/amd64   6.2 Install CD' -
Last modification time 2017-10-01 11:44:39 Sunday, UUID 2017-10-03-21-44-39-00
- Total size 676324 sectors
grub> ls (cd0)/
6.2/ etc/ TRANS.TBL
grub> ls (cd0)/6.2
amd64/ TRANS.TBL
grub> ls (cd0)/6.2/amd64/
base62.tgz boot.catalog bsd bsd.mp bsd.rd cdboot cdbr comp62.tgz game62.tgz INS
TALL.amd64 man62.tgz SHA256 TRANS.TBL xbase62.tgz xfont62.tgz xserv62.tgz xshar
e62.tgz
grub> kopenbsd -h com0 (cd0)/6.2/amd64/bsd.rd
grub> boot


#

次にOpenBSDインストーラを起動します。

 OpenBSDインストーラ起動

# bhyve \
    -w \
    -H -P -A \
    -W -c 1 \
    -m 2G \
    -l com1,stdio \
    -s 0:0,hostbridge \
    -s 1:0,lpc \
    -s 2:0,virtio-net,tap4 \
    -s 3,ahci-cd,/d/bhyve/install62.iso \
    -s 4,virtio-blk,/dev/zvol/z/openbsd-6.2 \
    openbsd-6.2

インストールでとくに困ることはないでしょう。会話形式で必要な項目を入力していけばインストールが完了します。

 OpenBSDインストール例

図 OpenBSDインストール例

 OpenBSDインストール例

図 OpenBSDインストール例

 OpenBSDインストール例

図 OpenBSDインストール例

 OpenBSDインストール例

図 OpenBSDインストール例

 OpenBSDインストール例

図 OpenBSDインストール例

 OpenBSDインストール例

図 OpenBSDインストール例

インストールが完了したらrebootコマンドを実行して仮想環境を終了します。

OpenBSD on bhyveを利用

OpenBSD 6.2 on bhyveを起動するためのコマンドを次のようにエイリアスにまとめておきます。

 OpenBSD 6.2 on bhyveを起動するためのショートカット

alias bhyve_openbsd_6.2='sudo bhyvectl --destroy --vm=openbsd-6.2; printf "kopenbsd -h com0 -r sd0a (hd0,openbsd1)/bsd\nboot\n" | sudo grub-bhyve -m /d/bhyve/openbsd-6.2-device.map -M 2G openbsd-6.2; sudo bhyve -w -W -c 2 -m 2G -H -P -A -l com1,stdio -s 0:0,hostbridge -s 1:0,lpc -s 2:0,virtio-net,tap4  -s 3,virtio-blk,/dev/zvol/z/openbsd-6.2 openbsd-6.2; sudo bhyvectl --destroy --vm=openbsd-6.2'

これで次回からbhyve_openbsd_62でOpenBSD 6.2の仮想環境が起動してくるようになります。

 OpenBSD 6.2 on bhyve

図 OpenBSD 6.2 on bhyve

bhyveはプロダクトでの利用も進んでいます。仮想環境にさまざまな環境を用意しておくとなにかと便利ですので,bhyveの活用は結構おすすめです。

FreeBSD勉強会

12月7日(木)19:00~ 第68回 内容検討中(ヴァル研 セミナールーム)

内容は検討中です。参加登録はこちらから。

FreeBSD勉強会 発表者募集

FreeBSD勉強会では発表者を募集しています。FreeBSDに関して発表を行いたい場合,@daichigotoまでメッセージをお願いします。30分~1時間ほどの発表資料を作成していただき発表をお願いできればと思います。

コメント

コメントの記入