FreeBSD on xhyve でディスクをマウントすることができた

前に xhyve で FreeBSD を動かしたときにディスクのマウントに失敗すると書いた。

blog.holidayworking.org

原因と解決方法が分かったので補足しておく。

続きを読む

Hyper 0.2 のリリース

ハイパーバイザー・ベースの Docker エンジンである Hyper の最新バージョンとなる 0.2 がリリースされていた。

  • Support Xen Hypervisor (Xen 4.5/hvm)
    • fully support run, stop, replace and persistent mode as the kvm version
  • overlayfs storage engine support.

v0.2 (2015-06-26) | About Hyper

hyper がサポートしているハイパーバイザーは KVM (QEMU) のみであったが、このリリースからは Xen のサポートも追加されることになった。

リリースノートに書かれていないが、試したところポートフォワーディングがサポートされるようになっていた。

続きを読む

意見(評価表現)抽出ツール を Docker で動かせるようにした

NICT が公開している意見(評価表現)抽出ツール を Docker で動かせるようにした。

github.com

Docker イメージのビルド

$ git@github.com:holidayworking/docker-extractopinion.git
$ cd docker-extractopinion
$ docker build -t holidayworking/extractopinion .

意見(評価表現)抽出ツールの実行

オプションなしで Docker コンテナを起動すると、意見(評価表現)抽出ツールに含まれているサンプルファイルを引数として extract.sh が実行されるようになっている。

$ docker run holidayworking/extractopinion
変換処理を開始します...
変換処理が終了しました...
/opt/extractopinion-1.2/sample.txt.euc  1       [著者]  メリット+       ビタミンが豊富だ。
/opt/extractopinion-1.2/sample.txt.euc  2
/opt/extractopinion-1.2/sample.txt.euc  3       [著者]  批評-   良くない。
/opt/extractopinion-1.2/sample.txt.euc  4       [著者]  当為    学校に行くべきだ。
/opt/extractopinion-1.2/sample.txt.euc  5       [著者]  メリット+       地域経済の活性化が図られるので、
/opt/extractopinion-1.2/sample.txt.euc  5       [著者]  メリット+       商機が拡大すると考えられる。

任意のファイルに対して extract.sh を実行したい場合は、下記のように Docker コンテナを実行する。

$ cat sample.txt
ほうれん草はビタミンが豊富だ。
京都は日本にある。
商品Aは良くない。
太郎は学校に行くべきだ。
道州制は国の一律の規制が解かれ地域経済の活性化が図られるので、商機が拡大すると考えられる。
意見(評価表現)抽出ツール を Docker で動かせるようにした。
$ docker run -it -v `pwd`:/data holidayworking/extractopinion /opt/extractopinion-1.2/extract.sh /data/sample.txt
変換処理を開始します...
変換処理が終了しました...
/data/sample.txt.euc    1       [著者]  メリット+       ビタミンが豊富だ。
/data/sample.txt.euc    2
/data/sample.txt.euc    3       [著者]  批評-   良くない。
/data/sample.txt.euc    4       [著者]  当為    学校に行くべきだ。
/data/sample.txt.euc    5       [著者]  メリット+       地域経済の活性化が図られるので、
/data/sample.txt.euc    5       [著者]  メリット+       商機が拡大すると考えられる。
/data/sample.txt.euc    6

xhyve で FreeBSD を動かしてみた

xhyve で FreeBSD をサポートさせるプルリクを見つけたので、xhyve で FreeBSD を動かしてみた。

github.com

xhyve のビルド

プルリクのトピックブランチを取得して xhyve をビルドした。

$ git clone git@github.com:mist64/xhyve.git
$ cd xhyve
$ git checkout -b xez-freebsd master
$ git pull git@github.com:xez/xhyve.git freebsd
$ make

これで FreeBSD に対応した xhyve のバイナリーが生成される。

FreeBSD の起動

起動用スクリプトの作成

下記の内容で起動用スクリプト xhyverun-freebsd.sh を作成した。

#!/bin/sh

USERBOOT="test/userboot.so"
BOOTVOLUME="FreeBSD-10.1-RELEASE-amd64.raw"
KERNELENV=""

MEM="-m 1G"
#SMP="-c 2"
#NET="-s 2:0,virtio-net"
#IMG_CD="-s 3,ahci-cd,/somepath/somefile.iso"
#IMG_HDD="-s 4,virtio-blk,/somepath/somefile.img"
PCI_DEV="-s 0:0,hostbridge -s 31,lpc"
LPC_DEV="-l com1,stdio"
#UUID="-U deadbeef-dead-dead-dead-deaddeafbeef"

build/xhyve -A $MEM $SMP $PCI_DEV $LPC_DEV $NET $IMG_CD $IMG_HDD $UUID -f fbsd,$USERBOOT,$BOOTVOLUME,"$KERNELENV"

BOOTVOLUME で指定している FreeBSD-10.1-RELEASE-amd64.rawここからダウンロードしてきたものである。

起動

$ sudo ./xhyverun-freebsd.sh 

FreeBSD のブートメニューが表示される。 f:id:holidayworking:20150627183706p:plain ただし、ディスクをマウントすることができず、ブート中にエラーが発生してしまった。 f:id:holidayworking:20150627184726p:plain FreeBSD にディスクを認識されていないため、マウントに失敗するようである。

Docker Machine で RancherOS を起動してみる

Docker Machine で RancherOS が起動できるようになっていたので、早速試してみることにした。

blog.docker.com

virtualbox-boot2docker-url オプションに RancherOS の ISO イメージの URL を指定して、マシンを作成するようにする。virtualbox-boot2docker-url オプションを指定しない場合は boot2docker でマシンが作成されるようになっている。

$ docker-machine create -driver virtualbox --virtualbox-boot2docker-url https://releases.rancher.com/os/v0.3.1/machine-rancheros.iso RancherOS
Downloading boot2docker.iso from https://releases.rancher.com/os/v0.3.1/machine-rancheros.iso...
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env RancherOS

作成したマシンへのログインして、本当に RancherOS が起動されているかを確かめてみた。

$ docker-machine ssh RancherOS
[docker@RancherOS ~]$ cat /etc/lsb-release 
DISTRIB_ID=RancherOS
DISTRIB_RELEASE=v0.3.1
DISTRIB_DESCRIPTION="RancherOS v0.3.1"
[docker@RancherOS ~]$ ps axuww | head -n 2
PID   USER     COMMAND
    1 root     {system-docker} docker -d --log-driver syslog -s overlay -b docker-sys --fixed-cidr 172.18.42.1/16 --restart=false -g /var/lib/system-docker -G root -H unix:///var/run/system-docker.sock