ライン

ポイント:結果、環境不足で動きませんでした…

ライン

 はじめに

仮想化

 VMwareとかHyper-Vなどの仮想化技術の他に、LinuxのKVMなども試しました。
FreeBSDには以前より Jailという仮想化があり安定していましたが、これとは別にビーハイブと呼ばれる仮想化があります。
かつてお試しは試みたことはありますが、安定していなくて使いませんでした。

 今回、FreeBSD 11.0-RELEASEの物理環境を用意できたので、久々に試してみることにしました。
ML110G5マシンで Celeron/E3300の2コアCPU、メモリー4GB、ディスクが80G+160Gというレガシーなものですが、
試す程度なら動くかと思っています。
(通常このPCは、ディスク消去などに使っているマシンなので、ほぼスペック要求がないのです)

 試行錯誤

 ちょっと情報を整理しないまま開始してしまうので、顛末記になるかも。
まずはWikiに書かれた例で入れて消してみます。
ここでは前提として、/optに160GBのディスクを追加してありまして、そこにイメージを配置するという動きで確認します。

#cd /opt
#bhyve -c 2 -m 256 -A -H -P \
? -s 0:0,hostbridge \
? -s 1:0,virtio-net,tap0 \
? -s 2:0,ahci-hd,./vm0.img \
? -s 31,lpc -l com1,stdio \
? vm0
vm_create: No such file or directory

これは、vmm.koをロードしていない際に出るものだと、Google先生がいっているので、この辺りの情報より開始。

#kldstat -v|grep vmm
#

確かに。

 まずは動くのか確認しよう。

#kldload vmm.ko
#kldstat -v | grep vmm
 4    1 0xffffffff82228000 331f00   vmm.ko (/boot/kernel/vmm.ko)

 動くことを確認。
/boot/loader.confに以下のように加えて、起動して問題ないかを確認。

オンプレマシンなんて久々なので、再起動に時間がかかるのが不思議な感じです。
G5マシンなので、iLOも利用できないので、コンソールを眺めるしかないです。

# 20170505
vmm_load="YES"

 再起動しました。

#kldstat
Id Refs Address            Size     Name
 1   10 0xffffffff80200000 1fa7c38  kernel
 2    1 0xffffffff821a9000 3571f0   vmm.ko
 3    1 0xffffffff82621000 2a05     uhid.ko
 4    1 0xffffffff82624000 3710     ums.ko

 見えました。

#bhyve -c 2 -m 256 -A -H -P \
? -s 0:0,hostbridge \
? -s 1:0,virtio-net,tap0 \
? -s 2:0,ahci-hd,./vm0.img \
? -s 31,lpc -l com1,stdio \
? vm0
vm_create: Device not configured

 あれ?これは予想外。大丈夫と思っていたけど。
Linux KVMを動作させたことがあるPCだし。

#dmesg|grep Features
  Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
  Features2=0xc00e3bd<SSE3,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,CX16,xTPR,PDCM,XSAVE,OSXSAVE>
  AMD Features=0x20100800<SYSCALL,NX,LM>
  AMD Features2=0x1<LAHF>

 んー。良さげだけど。
いや、通りに。

#truncate -s 16G vm0.img
#ifconfig -a
bge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=c019b<RXCSUM,TXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,TSO4,VLAN_HWTSO,LINKSTATE>
        ether -
        inet 192.168.-.- netmask 0xffffff00 broadcast 192.168.-.255
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect (1000baseT <full-duplex>)
        status: active
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
        options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6>
        inet6 ::1 prefixlen 128
        inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
        inet 127.0.0.1 netmask 0xff000000
        nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
        groups: lo
#ifconfig tap0
tap0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        options=80000<LINKSTATE>
        ether 00:bd:ef:6f:05:00
        nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
        media: Ethernet autoselect
        status: no carrier
        groups: tap
#sysctl net.link.tap.up_on_open=1
net.link.tap.up_on_open: 0 -> 1
#ifconfig bridge0 create
#ifconfig bridge0
bridge0: flags=8802<BROADCAST,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether -
        nd6 options=9<PERFORMNUD,IFDISABLED>
        groups: bridge
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 0 ifcost 0 port 0
#ifconfig bridge0 addm bge0 addm tap0
#ifconfig bridge0
bridge0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
        ether -
        nd6 options=9<PERFORMNUD,IFDISABLED>
        groups: bridge
        id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
        maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
        root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
        member: tap0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 3 priority 128 path cost 2000000
        member: bge0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
                ifmaxaddr 0 port 1 priority 128 path cost 20000

 ちゃんとしてみた。

vm_create: Device not configured

ダメだな。
この方法はあきらめることにしましたよ。上記メッセージで検索してもなんか届かないし。
vm-bhyve入れて進める方法にします。

 sysutils/vm-bhyve

 どっちにしても試行錯誤の続きではあるけど。

#pkg install vm-bhyve
...
New packages to be INSTALLED:
        vm-bhyve: 1.1.5

Number of packages to be installed: 1

45 KiB to be downloaded.

Proceed with this action? [y/N]:y
...
essage from vm-bhyve-1.1.5:
To enable vm-bhyve, please add the following lines to /etc/rc.conf,
depending on whether you are using ZFS storage or not. Please note
that the directory or dataset specified should already exist.

    vm_enable="YES"
    vm_dir="zfs:pool/dataset"

OR

    vm_enable="YES"
    vm_dir="/directory/path"

Then run 'vm init'.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

If upgrading from 1.0 or earlier, please note that the 'guest'
configuration option is no longer used.

Guests that are not using UEFI boot will need either loader="grub"
or loader="bhyveload" in their configuration in order to make sure
the correct loader is used.

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

/etc/rc.confに以下を入れて、

# vm bhype
vm_enable="YES"
vm_dir="/opt/vm"

では、お試し。

#vm init
/usr/local/sbin/vm: ERROR: it doesn't look like your cpu supports bhyve (missing POPCNT)

ありゃま、CPUがサポートされてないと来たか。
確かに他のマシンだと、Features2にPOPCNTってあるな。E3300じゃなく、G3900とかなら良かったわけだね。
選択したマシンのミスだなぁ…。

これは環境の準備やり直して再トライってことになりそうです。
過去は、VMware上の仮想の中でもBHyVeは動作するというごときの話を見たので、
これで試すかなぁ…と思います。
このページは、そういうことで一度閉じちゃって再度トライということにするつもりです。

 メモ(参考)

 FreeBSD 11.0の環境で準備していたのですが、HDDの2本目を追加した際の手順をメモ。

#gpart show ada1
gpart: No such geom: ada1.
#gpart create -s GPT ada1
ada1 created
#gpart show ada1
=>       40  312581728  ada1  GPT  (149G)
         40  312581728        - free -  (149G)
#gpart add -t freebsd-ufs ada1
ada1p1 added
#gpart show ada1
=>       40  312581728  ada1  GPT  (149G)
         40  312581728     1  freebsd-ufs  (149G)
#newfs -U /dev/ada1p1
/dev/ada1p1: 152627.8MB (312581728 sectors) block size 32768, fragment size 4096
        using 244 cylinder groups of 626.09MB, 20035 blks, 80256 inodes.
        with soft updates
super-block backups (for fsck_ffs -b #) at:
 192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 11540352, 12822592, 14104832,
 ...
 305173312, 306455552, 307737792, 309020032, 310302272, 311584512

今回は、/optにマウントするので、

#mkdir /opt
#vi /etc/fstab

以下を追加。

#
/dev/ada1p1     /opt            ufs     rw      2       2
#

これを加えて再起動を試すか。mount -aなどで正常になることを確認するとか。

#gpart show ada1
=>       40  312581728  ada1  GPT  (149G)
         40  312581728     1  freebsd-ufs  (149G)
#mount|grep ada1p1
/dev/ada1p1 on /opt (ufs, local, soft-updates)

こんな感じ。

【改訂履歴】作成:2017/05/05 更新:-/-/-

【参考リンク】

bhyve - FreeBSD Wiki

Copyright © 1996,1997-2006,2007- by F.Kimura,