BSD界隈四方山話

第96回OpenBSD 6.1-RELEASEをbhyveにインストール

OpenBSD 6.1-RELEASE

OpenBSDプロジェクトは2017年4月11日(カナダ時間⁠⁠、OpenBSDの最新版となる「OpenBSD 6.1」を公開しました。今回のリリースの見どころはベースシステムのアップデートをバイナリベースで実施するためのsyspatch(8)が導入されたことです。今のところamd64版とi386版が提供されています。

OpenBSDはほぼ半年おきにリリースが実施されます。シンプルで扱いやすいディストリビューションです。今回はFreeBSD bhyveにOpenBSD 6.1-RELEASEをインストールする方法をまとめます。いろんなディストリビューションのいろんなバージョンを試せる環境を作っておくとなにかと参考になりますので、マルチプラットフォーム構築例として参考にしてもらえればと思います。

仮想環境のセットアップ

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

 ホストとゲストの設定
項目内容
ホストOSFreeBSD 11.0-RELEASE/amd64
ゲストOSOpenBSD 6.1/amd64
ホストNICbge0
ゲストNICtap3 via bridge0
仮想CPU2個
仮想メモリ2GB
仮想ディスク(32BG)/dev/zvol/z/openbsd-6.1
インストーラ/d/bhyve/install61.iso
grub-bhyve設定ファイル/d/bhyve/openbsd-6.1-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.1-device.mapファイルの中身
(hd0) /dev/zvol/z/openbsd-6.1
(cd0) /d/bhyve/install61.iso

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

 ネットワーク環境をセットアップ
# kldload vmm
# ifconfig tap3 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 tap3 up

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

 ゲストの仮想ディスクをセットアップ
# zfs create -V 32G -o volmode=dev z/openbsd-6.1

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

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

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

OpenBSD 6.1インストール

次のようにgrub2-bhyveを実行してOpenBSDカーネルを読み込みます。

 OpenBSDカーネルのローディング
# grub-bhyve -m openbsd-6.1-device.map -r cd0 -M 2G openbsd-6.1

                             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.1 Install CD' -
Last modification time 2017-03-30 04:07:00 Thursday, UUID
2017-04-01-14-07-00-00 - Total size 428856 sectors
grub> ls (cd0)/
6.1/ etc/ TRANS.TBL
grub> ls (cd0)/6.1
amd64/ TRANS.TBL
grub> ls (cd0)/6.1/amd64/
base61.tgz boot.catalog bsd bsd.mp bsd.rd cdboot cdbr comp61.tgz game61.tgz INS
TALL.amd64 man61.tgz SHA256 TRANS.TBL xbase61.tgz xfont61.tgz xserv61.tgz xshar
e61.tgz
grub> kopenbsd -h com0 (cd0)/6.1/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,tap3 \
    -s 3,ahci-cd,/d/bhyve/install61.iso \
    -s 4,virtio-blk,/dev/zvol/z/openbsd-6.1 \
    openbsd-6.1

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

 OpenBSDインストール例
図 OpenBSDインストール例
 OpenBSDインストール例
図 OpenBSDインストール例
 OpenBSDインストール例
図 OpenBSDインストール例
 OpenBSDインストール例
図 OpenBSDインストール例

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

OpenBSD on bhyveを利用

毎回grub-bhyveコマンドを実行したりbhyve(8)コマンドにたくさんオプションを指定するのは面倒なので、次のようなエイリアスを用意します。

 OpenBSD 6.1 on bhyveを起動するためのショートカット
alias bhyve_openbsd_6.1='sudo bhyvectl --destroy --vm=openbsd-6.1; printf "kopenbsd -h com0 -r sd0a (hd0,openbsd1)/bsd\nboot\n" | sudo grub-bhyve -m /d/bhyve/openbsd-6.1-device.map -M 2G openbsd-6.1; 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,tap3  -s 3,virtio-blk,/dev/zvol/z/openbsd-6.1 openbsd-6.1; sudo bhyvectl --destroy --vm=openbsd-6.1'

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

 OpenBSD 6.1 on bhyve
図 OpenBSD 6.1 on bhyve

OpenBSD 6.1の起動時にbhyve(8)にオプション-wを指定している点に注意してください。OpenBSD 6.1を起動するには今のところ-wが必要です。これを指定しないと途中でOpenBSDカーネルがパニックします。すでにこの問題は認識されているようなので、FreeBSD 11.1以降では自動で対処されるようになると思います。それまでは-wを指定するようにしてください。

勉強会

第62回 4月28日(火)19:00~ FreeBSD勉強会 エンジニアのための英会話入門 

  • なぜ英語ができないのか~講師: 後藤大地(BSDコンサルティング株式会社)
  • エンジニア向けの英語勉強法(私の場合⁠⁠~講師: 前佛雅人@zembutsu

FreeBSDの情報の多くは英語で入手できます。ほかの言語と比べると日本語は翻訳されたドキュメントが豊富にありますが、メーリングリストやフォーラム、ブログやTwitterなどを経由して最新の情報を得ようとすれば英語が必要になります。また、日本を含め世界中で開催されている*BSD関連のカンファレンスで使われているのも英語です。FreeBSDのエンジニアとやり取りしようとすれば、多くの場合は英語が使えた方が便利です。

日本は義務教育の間に英語を学びますが、いざそうしたやりとりをしようとすると尻込みしてしまう、そんな方が多いというのが現実でしょう。今回の勉強会では、そうした方に向けて、なぜ勉強したのに英語ができないのか、ちょっとでも英語ができるようにするには、まずどういったことを知ればよいのか、そういったことをご紹介しようと思います(英語ほとんどできない、という方でも大丈夫です :)

参加申し込みはこちらから。

第63回 5月23日(火)19:00~FreeBSD勉強会

現在検討中です。

FreeBSD勉強会 発表者募集

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

おすすめ記事

記事・ニュース一覧