BSD界隈四方山話

第19回 bhyveでCentOSを使ってみよう!

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

CentOS on bhyve!

FreeBSD 10.0-RELEASEから導入されたハイパーバイザbhyveを使用することで複数のゲストオペレーティングシステムをFreeBSDで実行できるようになりました。最初にターゲットになっていたのはFreeBSDゲストオペレーティングシステムでしたが,現在ではLinuxやOpenBSD,NetBSDをゲストオペレーティングシステムとして利用できます。

LinuxディストリビューションではRed Hat Enterprise Linux,CentOS,Debian,Fedora,OpenSUSE,Ubuntuなどが使えますが,今回はCentOS 6.7をインストールする方法を紹介します。

bhyveが動作する環境をセットアップ

bhyveが動作する環境をセットアップします。カーネルモジュールとネットワークの設定に関しては前回の第18回 使ってみようハイパーバイザbhyveで説明しましたので,詳しくはそちらをご覧ください。まず,次のようにハイパーバイザとネットワークを用意します。

図1 bhyveを使用するための環境をセットアップ

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

ネットワークインターフェースにはtap1を使っています。前回,FreeBSDゲストオペレーティングシステムにtap0を割り当てたので,今回はtap1にしてあります。

FreeBSD以外のオペレーティングシステムをゲストオペレーティングシステムとして利用するにはgrub2-bhyveが必要ですので,pkg(8)経由などでインストールしておきます。

図2 Linuxゲストを起動するためにgrub2-bhyveをインストール

# pkg install grub2-bhyve
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100%    944 B   0.9kB/s    00:01
Fetching packagesite.txz: 100%    5 MiB   1.1MB/s    00:05
Processing entries: 100%
FreeBSD repository update completed. 24279 packages processed.
The following 1 package(s) will be affected (of 0 checked):

New packages to be INSTALLED:
        grub2-bhyve: 0.30_1

The process will require 1 MiB more space.
408 KiB to be downloaded.

Proceed with this action? [y/N]: y
Fetching grub2-bhyve-0.30_1.txz: 100%  408 KiB 417.6kB/s    00:01
Checking integrity... done (0 conflicting)
[1/1] Installing grub2-bhyve-0.30_1...
[1/1] Extracting grub2-bhyve-0.30_1: 100%
# 

システムを再起動して自動的にこれら設定が反映されるようにするには,/etc/rc.confおよび/etc/sysctl.confに次の設定を追加します。

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

cloned_interfaces="bridge0 tap0 tap1"
ifconfig_bridge0="addm em0 addm tap0 addm tap1"

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

net.link.tap.up_on_open=1

これでホスト側の設定は完了です。

CentOSをインストール

CentOS 6.7のインストールイメージをダウンロードします。

図3 CentOS 6.7のインストールイメージをダウンロード

# fetch http://ftp.iij.ad.jp/pub/linux/centos/6/isos/x86_64/CentOS-6.7-x86_64-minimal.iso
CentOS-6.7-x86_64-minimal.iso                 100% of  395 MB 2748 kBps 02m27s
#

インストール用にディスクイメージファイルを作成します。

図4 ゲスト用のディスクイメージファイルを作成

# truncate -s 32G centos-6.img

grub2-bhyveが使用する次のような設定ファイルを作成します。hd0およびcd0としてどのファイルを使用するのかを説明したマッピングファイルです。

図5 grub2-bhyveが使用する設定ファイルを用意

# cat centos-6-device.map
(hd0) ./centos-6.img
(cd0) ./CentOS-6.7-x86_64-minimal.iso
#

FreeBSD以外のオペレーティングシステムをbhyveで使用する場合には2段階のブートステップを踏みます。まずgrub2-bhyveを使ってカーネルを読み込みます。次にゲストオペレーティングシステムを起動します。

まず,インストーラを起動したいので次のようにgrub2-bhyveからLinuxカーネルを読み込みます。

図6 Linuxカーネルの読み込み

# grub-bhyve -m centos-6-device.map -r cd0 -M 2G centos-6

                                   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) (cd0,msdos1) (host)
grub> ls (cd0)
Device cd0: Filesystem type iso9660 - Label \`CentOS_6.7_Final' - Last modification time
2015-08-04 21:59:24 Tuesday, UUID 2015-08-04-21-59-24-00 - Total size 808960 sectors
grub> ls (cd0)/isolinux
boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest splash.jpg TRANS.TB
L vesamenu.c32 vmlinuz
grub> linux (cd0)/isolinux/vmlinuz
grub> initrd (cd0)/isolinux/initrd.img
grub> boot
# 

次にbhyve(8)でインストーラを実行します。

図7 ゲストの起動

# bhyve -A \                    APCIテーブルを生成
        -H \                    HLTインストラクション検出時に仮想CPUスレッドを生成
        -P \                    PAUSEインストラクション検出時にゲスト仮想CPUを強制終了
        -s 0:0,hostbridge \     ホストブリッジ
        -s 1:0,lpc \            LPC PCI-ISAブリッジ(COM1/COM2 16550シリアルポート付き)
        -s 2:0,virtio-net,tap1 \                Virtioネットワークインターフェース
        -s 3:0,virtio-blk,./centos-6.img \      Virtioブロックストレージインターフェース
        -s 4:0,ahci-cd,./CentOS-6.7-x86_64-minimal.iso \        ATAPI CD/DVD接続済AHCIコントローラ
        -l com1,stdio \         COM1設定
        -c 2 \                  仮想CPU
        -m 2G \                 ゲストに割り当てるメモリサイズ
        centos-6                ゲスト名

図8 CentOS 6.7のインストール

図8 CentOS 6.7のインストール

インストール自体は通常のCentOS 6系のインストールと同じなので特に迷うことはないでしょう。

インストールが完了したら次のように一旦ゲストオペレーティングシステムを終了しておきます。

図9 一旦ゲストを終了

# bhyvectl --destroy --vm=centos-6

コメント

コメントの記入