新年あけましておめでとうございます2018年01月01日 05時41分34秒

明けましておめでとう御座います。

居住地の現地時間では、まだまだ年末ではありますが、日本では既にあちこちのニュースサイトでも、謹賀が上がっています。

年末年始はとても冷えていて、摂氏氷点下五度前後の日が続いています。二重窓をしっかり閉めておいても、窓から冷気が流れてくるのが分かるので、閉まっているか確かめるぐらいの寒さ。窓が開いているのではと、錯覚するほど。

コールグラフを得るために graphviz doxygen をインストール2018年01月02日 12時48分28秒

doxygen が見栄えの良いコールグラフを生成するようだ。そのために、pkg から graphviz と doxygen をインストール。

graphviz には dot と呼ばれるプログラムが入っていて、グラフを書くのに重宝する。ただ、dot としか覚えていなかったので、どの pkg に入っていたのかを調べるのに手間取った。

暴風雪2018年01月05日 12時41分10秒

寒い日が続くが、こちらニューヨークの水曜日の深夜過ぎから雪がチラチラと舞い始めていた。日明け頃はまだ少し積もり始めた程度だったが、次第に雪の降り方が強くなっていった。風は朝から強く、外からゴーゴーうなっているのが聞こえてくる。

一日中降りしきっていたので、誰も外には出なかった。日が暮れたところに雪が降りやんだ。この頃には既にかなりの雪が積もっていた。

天気予報だと、これから更に冷え込むらしい。窓の多い部屋や壁の薄い室内だと、窓が開いていたり壁に穴が開いていたりするのかと思うぐらい壁際から冷気が流れてくる。暖房もずっと動きっぱなし。

cflow2018年01月07日 07時39分36秒

% cflow cat.c | grep ':$' | sed 's/<.*//' が良さそうだ。

FreeBSD のベースには入っておらず、GNU flow があるらしいので、恐らく ports にはあるだろう。

運転免許更新時の 6 Point ID2018年01月08日 22時15分33秒

ニュージャージー州の自動車の運転免許は四年毎の更新。ペンシルバニア州の時もそうだったと思う。もうすぐ更新の期限がくる。アメリカの運転免許の更新は、入手日から四年間。更新期間は、期限が切れる前の三ヵ月間の様だ。更新の通知の手紙は二ヵ月程前に届いていた。

身分証明と居住証明がちょっと面倒臭い。写真付きの身分証明証が必要で、種類によって点数が違ってくる。また、証明証の総合得点が六点を満たさないといけない。それに加えて、居住している事を示す手紙なども準備する必要がある。6 Point ID verification であらかじめ準備しておく必要がある。

日本の様に市役所などでの住民登録等がないため、運転免許の更新には労力がいる。

FreeBSD の bhyve の環境で新規環境を四つのコマンドで最短起動2018年01月09日 11時57分31秒

bhyve は FreeBSD のハイパーバイザ型の仮想環境。FreeBSD のサイトの FreeBSD as a Host with bhyve や他にも新規の試し方などは載っている。

実は、bhyve はディスクイメージそのままを使っているので、配布されている VM イメージがそのまま利用できる。vmm カーネルモジュールを読み込み、fetch でイメージを取って、xz -d で展開し、そのまま起動できる。

bhyve-host$ kldload vmm
bhyve-host# fetch https://download.freebsd.org/ftp/releases/VM-IMAGES/11.1-RELEASE/i386/Latest/FreeBSD-11.1-RELEASE-i386.raw.xz
FreeBSD-11.1-RELEASE-i386.raw.xz              100% of  212 MB 1826 kBps 02m00s
bhyve-host# xz -d FreeBSD-11.1-RELEASE-i386.raw.xz
bhyve-host# sh /usr/share/examples/bhyve/vmrun.sh -d FreeBSD-11.1-RELEASE-i386.raw FreeBSD-11.1
Launching virtual machine "FreeBSD-11.1" ...
Consoles: userboot

FreeBSD/amd64 User boot, Revision 1.1
(Tue Jan 16 20:53:23 EST 2018 hiro@rv515.advok.com)
Loading /boot/defaults/loader.conf
...
/boot/kernel/kernel text=0x127d5b5 data=0xe42bc+0x284034 syms=[0x4+0xe6250+0x4+0x173393]
Booting...
Copyright (c) 1992-2017 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 11.1-RELEASE #0 r321309: Fri Jul 21 04:10:47 UTC 2017
    root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC i386
FreeBSD clang version 4.0.0 (tags/RELEASE_400/final 297347) (based on LLVM 4.0.0)
VT(vga): text 80x25
CPU: AMD E-450 APU with Radeon(tm) HD Graphics (1646.25-MHz 686-class CPU)
  Origin="AuthenticAMD"  Id=0x500f20  Family=0x14  Model=0x2  Stepping=0
  Features=0x1783fbff
  Features2=0x80802201
  AMD Features=0x26500800
  AMD Features2=0x31fb
  TSC: P-state invariant
Hypervisor: Origin = "bhyve bhyve "
...



Starting background file system checks in 60 seconds.

Sat Jan 20 00:05:52 UTC 2018

FreeBSD/i386 (Amnesiac) (ttyu0)

login: root
Jan 07 16:05:58  login: ROOT LOGIN (root) ON ttyu0
FreeBSD 11.1-RELEASE (GENERIC) #0 r321309: Fri Jul 21 04:10:47 UTC 2017

Welcome to FreeBSD!

...
Edit /etc/motd to change this login announcement.
root@:~ # uname -s -r -m
FreeBSD 11.1-RELEASE i386
起動してログインも完了。

今回は、amd64 機で i386 システムを動かしてみた。ネットワークを使ったりするには tap を設定したりする必要もあるが、今回はそれこそ起動して簡単に使って感触を得るのが目的。

bhyve は特殊なインストラクションを使うので、実機で使えるかを調べる必要がある。AMD だと、Features2 に POPCNT が、Intel のだと Vt-x に EPT と UG が dmesg で確認する必要がある。安くなっていたから四年前に買ったラップトップにもついていたので、ここ数年で購入したコンピュータなら動くと思われる。

FreeBSD で仮想化ホストをする VirtualBox と bhyve の比較2018年01月10日 19時56分39秒

VirtualBox を使ってみて分かったお互いの長所と短所。

現在実験に使っている機械は、ほぼ五年前に購入した Sansung RV515 で、 CPU は AMD E-450 APU with Radeon(tm) HD Graphics (1646.53-MHz K8-class CPU) となっている。メモリは 4GB 程入っている。購入した当時の Windows 7 も入っているが、Windows を使うと、全部の動作が遅く、ゆっくり待ちながらの作業になる機械。FreeBSD では日常で使うのには問題ない。buildworld を行うと clang をコンパイルするのに数時間は要するが、STABLE を追うくらいなら問題ない。

仮想化はハードウェアに依る部分も多いので、使っている機種の様子から始めた。VirtualBox はすぐに使い始められたのが、bhybe はamd64 環境を作るのに手間が掛かった。また、FreeBSD で仮想環境のホストとして Xen も使えるが、こちらの方の CPU は手軽ではないので、試せていない。

bhyve の短所。

  1. 特定の CPU のサポートが必要。
  2. FreeBSD amd64 環境が必要。
まずは、ハードウェアを利用するので、AMD だと、Features2 に POPCNT が、Intel のだと Vt-x に EPT と UG が dmesg に出ている必要がある。ハードウェアが動作可能であれば利用可能だが、i386 では動かないので、amd64 が必要になる。今回は、これの準備に時間が掛かった。

VirtualBox の長所。

  1. pkg や ports で簡単にインストール。
  2. UI 操作が楽。
VirtaulBox は i386 でも amd64 でも動くのと、ports や pkg で一発で入るので、準備には楽だった。起動してからも、GUI なので初めて動かすのは、とても視覚的で分かりやすい。また、ネットワークなども、自動で NAT 等を動かし良きに計らってくれるので、とっつき易い。

bhyve の長所。

  1. amd64 では既に入っている。
  2. 少ないリソースで動く。
ここまでは、後塵に配しているように見えるが、一度使い出すと bhyve の方が使い勝手がいい。特に大きな違いがリソースの消費量。bhyve はアイドル状態だとホスト側の CPU を 2% ぐらいしか使わない。そして、CUI で動くので、X を起動する必要がなく、メモリの浪費も押えられる。

VirtualBox の短所。

  1. 利用リソースが多い。
  2. X が必要。
  3. ファイル形式が独自。
VirtualBox はリソースの消費が激しい。クライアント側が何もしていなくても、ホスト側の CPU が 20% から 25% 持っていかれてしまった。複数起動すると何もしていなくても、ホスト側が高負荷になってしまう。また、X が必要なので、それを起動するだけでもメモリなどのリソースが余計に取られてしまう。ファイル形式が特有なので、bhyve の様に、単純に mdconfig を使えない。

そんなわけで、手慣れた FreeBSD ユーザには bhyve がお勧め。amd64 だったら、そのまま使えてリソースの消費も少ない。GUI が必須なクライアントや、御手軽に試してみたいときには VirtualBox が便利だ。

bhyve に必要なデバイス2018年01月11日 13時38分51秒

GENERIC カーネルでは既に有効になっているが、カーネルを作り直している場合には、virtio や vtnet 等のデバイスが有効になっていないとブートローダが第三ステージに移行できなかったり、ネットワークが使えなくなる。

仮想デバイスに以下の物がある。

device          virtio          # Generic VirtIO bus (required)
device          virtio_pci      # VirtIO PCI Interface
device          vtnet           # VirtIO Ethernet device
device          virtio_blk      # VirtIO Block device
device          virtio_scsi     # VirtIO SCSI device
device          virtio_balloon  # VirtIO Memory Balloon device
device          virtio_random   # VirtIO Entropy device
device          virtio_console  # VirtIO Console device
手元では、virtio と cirtio_pci と virtio_blk を有効にして起動でき、vtnet を追加して、ネットワークが使えるようになった。

免許更新してきた2018年01月12日 12時25分34秒

6 Point ID 証明を準備して、いざ運転免許の更新へ。

アメリカ全州で共通なのかは知らないが、ペンシルバニアとニュージャージーは州が運営する、運転免許センターにいかなければいけない。日本の様に警察署での更新はない。そのかわりに運転免許センターはそれなりに数があるので、そこまで不便でもない。

少し前に更新に行った妻が、十一時くらいから一時ぐらいがすいていると言うので、その時間帯に合わせて。免許センターには特に時間指定はなく、随時受付している。そのかわり、常に列がある。まず、住所の証明となる書類を見せる窓口に並ぶ。十五分ぐらい待った後に、窓口に到着。メモを書き込まれ、次の窓口を指定される。次の窓口に移動して、待つ。こちらの列は短かった。少し待った後に、写真を取ってもらい、印刷が終ったら終了。

今回は、移動時間も含めて一時間で全部終った。

前回

仮想化により OS が OS でなくなる利点2018年01月15日 13時00分35秒

システムの仮想化が持て囃されてしばらく経つ。ハードウェアの都合で、遅れ馳せながら、byhve によるハイパーバイザ型の仮想化を試して改めて、仮想化の恩恵を感じた。

OS は長らく、一つのハードウェアに一つだけ動かせる物だったが、仮想化によって、複数の OS を一つのシステム上に動かせるようになった。bhyve は 軽量で、複数の仮想環境を動かしても、負荷が少ない。

OS が他のアプリケーションと同じように、好きなだけ起動できる様になった。一つしか動かせなかった OS も他のアプリケーションと同じように複数起動できる様になった。

複数の OS を一つの機械上で動かせる利点は幾つかあるか、bhyve と FreeBSD では特に、カーネルのテストがしやすい。カーネルモジュールのテストは、kldload と kldunload で繰り返すことは以前からできた。しかし、プロセス管理やメモリ管理などのカーネルに組み込まれなければいけないものは、再起動が必須。そして、変更すると、大量のカーネルクラッシュに見舞われるのも日常茶飯事。仮想化を使って、テスト環境のファイルシステムを最小限にしぼり、カーネルクラッシュや大量の再起動に備えやすい。