たかちゃん。

4月 072013
 

久しぶりに「CPU コレクション」行ってみましょうかねぇ。今回のエントリはちょうど 60 回目ですね。でもって、今回登場するのは SUN Ultra SPARC III。UNIX 系のCPU です。以前に掲載した Sun Ultra SPARC II の上の CPU ですね。

まずは写真を。

Sun_Ultra_SPARC_III_1.jpg

この CPU は二つ持っています。 SMP な SPARC Station から抜き出したんだっけかな? 最近は当然のごとくマルチコアとか騒がれているのですが、SUN のサーバ及びワークステーションは当たり前のように SMP 構成だったんですね。

こちらが裏側。

Sun_Ultra_SPARC_III_2.jpg

あれあれ? Sun Ultra SPARC II の頃は LGA (Land Grid Array Package) パッケージだったのですが、 SPARC III の場合は以前と同様のピンベースの CPU に戻っていますね。何でなんでしょうかねぇ?中々面白いですね。

で、その Sun Ultra SPARC II と III を並べてみたのがこの写真。

Sun_Ultra_SPARC_III_3.jpg

II も III も二個ずつ持っている。ってのがいかにも SUN のサーバ。って感じがして良いでしょー;-)。 で、 CPU 自体もずいぶんと大きさが違いますよね。俗に「ダイサイズが大きくなった。」と言えば良いんでしょうかね。

一応、手持ちの UNIX 系と、言うか非 x86 系の最後の CPU になるのであります。

3月 252013
 

いやー。cvsup.icmpv6.org というサーバを立てていたのですが csup がいよいよ利用できなくなりましたね。 cvsupd から持ってきたソースコード、例えば ports を portmaster -D -a とかすると「もう使えないぜ。ベイビー。」とか怒られる。

それならば、と、いうことで ports などは snv で取ってくることにしましょう。基本的には以下のコマンドで svn で FreeBSD の ports ツリーを取ってくることができます。

# svn co https://svn0.us-west.FreeBSD.org/ports/head /usr/ports
# cd /usr/ports && svn update

 
FreeBSD のソースコードを取ってくるには svn というのが必要で、それはつまりは ports 的にいうと devel/subversion が必要になるのでこいつをインストールしてあげる必要があります。後で出てきますが、svn サーバを必要としない、クライアントのみで利用するのであれば devel/subversion-static のほうが、余計なのがインストールされないので良いかもしれません。

上記コマンドを実行するときには一旦 /usr/ports/ の中を綺麗にしたほうが良いかもしれんですね。 ports/distfiles/ の中に色々とゴミが残るのでどこかに一時的に移動するか、サッパリと \rm -r /usr/ports してしまったほうが良いかな? 個人的に自由にしてください;-)。

さてさて。svn コマンドを実行したときに、海外のサーバを見に行くことになるのですが、ちょっと遅いかもしれないし大変ですよねぇ。今まで cvsupd なサーバを自分で構築していたので svn なサーバも自分で構築してみましょう。 FreeBSD のための Subversion のミラーサイト (FreeBSD.org subversion mirror) を構築してみます。それが今回のお題目です。

まずは ports から devel/subversion をインストールします。こちらを make すると make config で色々聞いてきます。 devel/subversion-static のほうは特に何も聞いてきません。 FreeBSD の svn サーバを構築する場合には以下のオプションを [X] にして make install しましょう。

[X] MOD_DAV_SVN        mod_dav_svn module for Apache 2.X
[X] MOD_DONTDOTHAT     mod_dontdothat for Apache 2.X

 
すると apache22 までインストールしてくれます。うひっ。 php とか、この手の apache 絡みのヤツを ports からインストールすると強制的に apache までインストールされてしまうのは、ちょっとどーかと思う。僕は apache は自分で make する派なのでねぇ。 mod_* だけインストールしてくれれば嬉しいなぁ。

と、いうことで apache まで起動できる状態になったので svn サーバ (仮に svnweb と言います)を作成していきましょう。

まずは FreeBSD のソースコードや ports 一式を先に取ってきます。

# mkdir /home/svnweb
# cd /home/svnweb
# ftp -a ftp://ftp5.jp.freebsd.org/pub/FreeBSD/development/subversion/svnmirror-base-r238500.tar.xz
# ftp -a ftp://ftp5.jp.freebsd.org/pub/FreeBSD/development/subversion/svnmirror-ports-r301235.tar.xz
# tar xvzfp svnmirror-base-r238500.tar.xz
# tar xvzfp svnmirror-ports-r301235.tar.xz
# svnsync sync file:////home/svnweb/base
# svnsync sync file:////home/svnweb/ports

 
base のほうは FreeBSD のソースコードです。 ports は ports ですね。 r238500 とか r301235 ってのはレビジョンのようです。以下の URL が参考になるかと思います。

http://svnweb.freebsd.org/base/

ftp で取ってきたやつでさえも古いので更に sync して最新のものに揃えます。それが上記コマンドの下の二行です。 snvsync するとどこから取ってくるんでしょうなぁ? 後でキャプチャしてみよう(キャプチャした結果 svn.FreeBSD.org からでした;-)。

と、いうことで最新のソースがこれで準備できたと思います。あ。定期的に svnsync するには以下のスクリプトを書いて cron に登録すれば良いでしょうね。

#!/bin/sh
/usr/local/bin/svnsync sync file:////home/svnweb/base
/usr/local/bin/svnsync sync file:////home/svnweb/ports

 
ちなみに、base と ports だけで 20GByte くらいのディスク容量が必要になります。HDD の容量に気をつけてください。

さささ。続いてサーバのほうを設定していきましょう。基本的には httpd が動作していて port:80 にアクセスします。 SSL に対応しているのであれば https:// でアクセスできます。

まずは httpd.conf ですが、 devel/subversion をインストールしたのであれば特に何もせずとも動作します。うひっ。 ports/subversion インストール時に上に書いた二つのオプションを有効にしたのであれば、多分 httpd.conf に以下の設定が既に追加されているはず。

LoadModule dav_svn_module   libexec/apache22/mod_dav_svn.so
LoadModule authz_svn_module libexec/apache22/mod_authz_svn.so

 
ほー。svn のサーバって dav で動作するんだねぇ。するっていと多分 extra/httpd-dav.conf にも設定必要だね。って思うんですが、果たしてそのとおりで、 extra/httpd-dav.conf の中身を全部消して、以下の行を追加して上げます。

<Location />
    DAV svn
    SVNParentPath       /home/svnweb
    Order deny,allow
    <LimitExcept GET PROPFIND OPTIONS REPORT>
        Deny from all
    </LimitExcept>
</Location>

 
あとは httpd を起動すれば動作すると思います。あ。Include etc/apache22/extra/httpd-dav.conf の行は当然コメントアウトをはずす必要があります。

ウェブブラウザでアクセスすると http://svnweb.icmpv6.org/base/ こんな感じで見えるようになります;-)。

では実際に正しく動作するか確認してみましょう。手元にある FreeBSD から以下のコマンドを実行してみます。

# svn co http://svnweb.icmpv6.org/ports/head /usr/ports

 
既に一回、他の svnweb から /usr/ports に持ってきてしまうと svn のエラーコード E155000 で怒られます。その場合には違うディレクトリに co するか、 /usr/ports/.svn/ というディレクトリが svn の接続先情報を管理しているようなのでこのディレクトリを mv すれば良いかもしれません。

さてさて。 apache の設定に戻りますが、svnweb のためだけに httpd を起動する人は皆無だと思うので、多分 httpd-vhosts.conf で VirtualHost の設定をしているかと思います。 DAV svn の設定も簡単で VirtualHost ディレクティブの中に httpd-dav.conf で書いた設定をそのまま書いてあげると良いです。その場合は Include httpd-dav.conf の設定は必要なくなります。

と、いうことで 簡単な svn の使い方と svnweb の立て方をサラっと書いてみました。皆さんもどんどん日本に FreeBSD 用の svn のサーバを起動してみてください;-)。 ちなみにですが、以下を一応用意しました。それぞれのサーバに base/ と ports/ があります。

http://svnweb.icmpv6.org/ (IPv4/IPv6)
https://svnwebv4.icmpv6.org/ (IPv4)

いつも動作している保証はありません;-)。

3月 242013
 

VMwareESXi 5.1 の環境で FreeBSD/adm64 9.1-RELEASE がゲスト OS として動作しています。 PCI 接続の内蔵 NIC がもう無いので USB NIC を VMwareESXi が動作している物理サーバに接続したんですけども。

USB NIC ってのはすごいですね。 VMware vSphere Client から FreeBSD に USB デバイスを割り当てたら FreeBSD 側のドライバで NIC を認識しました。

以下のキャプチャは VMware vSphere Client の「仮想マシンの設定の編集」画面から USB デバイスを FreeBSD に追加して上げた状態です。

VMwareESXi_USB_NIC_add_1.JPG

この段階で FreeBSD 側は USB NIC を axe0 として認識して ue0 に割り当てました。

ugen1.2:  at usbus1
axe0:  on usbus1
miibus0:  on axe0
ukphy0:  PHY 16 on miibus0
ukphy0:  none, 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto, auto-flow
ue0:  on axe0
ue0: Ethernet address: 00:0e:c6:f0:24:zz
ue0: link state changed to DOWN

 
VMware ESXi で利用する NIC って vSwitch 経由で FreeBSD 的には em0 などに割り当てるという認識があるのですが VMwareESXi もゲスト OS である FreeBSD も起動している状態においては VMware ESXi を経由せずにサクっと FreeBSD 側で認識してしまった。ということですね。

$ ifconfig -a | grep -v "^\s"
em0: flags=8843 metric 0 mtu 1500
lo0: flags=8049 metric 0 mtu 16384
vmx3f0: flags=8843 metric 0 mtu 1500
ue0: flags=8802 metric 0 mtu 1500

 
こんな感じで、em0 と vmx3f0 は vSwitch 経由、 ue0 はダイレクトに接続されている FreeBSD ネーテブなドライバで認識されている NIC ということになります。

VMwareESXi は設定で NIC 一個を vSwitch を介さずにゲスト OS に渡す設定ができるんだっけかな?やったことが無いので解らないのですが。けど、 USB な NIC を利用するとサクっとそれができるようになります;-)。

しかし、このネタって既に一般常識? f(^^;;。

3月 142013
 

僕はiPhone5 を購入したので iPhone4 はすっかりと iPod Touch と化して Wi-Fi のみで利用していたのですが、そもそも iPhone5 を持っていたので、とある人に貸していたわけですね。どころがその貸していた人が、人から借りている iPhone4 をどっかに無くしてしまった。と、いうので大騒ぎ。
結局は出てきたのですが、今回はその顛末を書いてみたいと思います。

0. 拾った人は?
そもそも、ちょっと古い iPhone4 を拾った人がそのまま自分のモノにしてしまうほど、日本は落ちぶれてはいないだろう。とは思っていたのですが、果たしてその通りで、今回は無事に出てきました。ありがとうございました;-)。

仮にもし、僕が拾ったとしても自分のモノにはしないのではないか。と思うんですね。簡単に思うと以下の点において iOS デバイスというモノは恐ろしいモノですからねぇ。

o. 『Find iPhone』 で場所が解ってしまう
o. アプリケーションを利用した段階でその形跡が残ってしまう場合がある
o. AppStore などにアクセスしたらもう犯罪者か?

などなど。恐ろしいワナが待っているだろうとは容易に想像がつくので有りますが。
ちなみに、落とした iPhone4 には住所や電話番号などの個人情報や Apple ID などは全く入っていない、ただ単に Wi-Fi で「ウェブとメール、時々ゲーム」な機器として利用されている状態です。あ。メールのアカウント情報は入っていますね。

で、次の項番からは無くしてしまった iPhone4 の探査を実際に試してみました。

1. Find iPhone を使ってみる
iCloud の『iPhone を捜す』や、iOS アプリの Find iPhone アプリなどでロストした Apple のデバイスが検索できます。「無くした。」と、いうので Find iPhone を利用して場所を特定しようと早速起動します。

IMG_4362_lost_iPhone4_2.jpg

現在は iPhone5 のみに利用できる SIM カードが入っていて iPhone3G と iPhone4 には SIM カードは入っているけど、契約切れ状態です。

SIM が利用できない状態で Wi-Fi 接続した場合に Find iPhone で検索できるのか手元にある iPhone3G で確認してみましたが、どうも無理っぽいですね。電源が入って Wi-Fi 接続した iPhone の場所は特定できませんでした。
iPhone4 も SIM が利用できない状態ですが、無線 LAN に接続した段階で、しばらくしてから認識されで、アラートがピコピコ鳴っていました。
ちなみに iPhone4 の検証は手元に戻ってきて、自宅の Wi-Fi に接続してしばらくしたらピコピコ言い出したんですけどもね;-)。

iPhone3G の場合は無線 LAN 接続時の Find iPhone は無理でしたが、 iPhone4 では無事に認識してくれました。これは iOS のバージョンの問題かな?

2. 各種ログから特定
個人情報が一番入っているのはメールかなぁ? とか思うような気がしますが、もし拾った人が Wi-Fi に接続してメールアプリを起動した段階で IMAP サーバにアクセス元の IP アドレスが残ります。と、いうことは拾った人が自宅の Wi-Fi に接続してメールアプリを起動した段階で持っている人を特定できます。

他のネットワークに接続したとしても IP アドレスを警察に提示したら捜査してくれるかな?とか思うんですけどもね。

で、結局、今回は IMAP サーバにアクセスログが残ることはありませんでした。と、いうことはこの段階で以下の二点、もしくは三点に絞られます。

1). 拾った人が Wi-Fi に接続することなく初期化処理を行なってしまった。
2). 拾われて交番に届けられて、そのままバッテリ切れになってしまった。
3). 実は無くしたのではなく、どこか部屋とかカバンの中に置き忘れただけ。

まぁ、どっちにしても定期的にログを見られる IMAP サーバを持っていて、そのサーバにアクセスするアカウントがメールアプリに登録してあると良い感じですね。

3. SoftBank すごいよ
某警察署に届けられているので速やかに取りに行くように。と、SoftBank から一通の手紙が届きました。それも福岡から。

一枚の紙に製造番号とか持ち主(回線契約者)の情報が記載してあって、特定できるようです。 iPhone4 から iPhone5 に機種変更したんだけど、ちゃんと iPhone4 を購入した人が特定できるんですね。

IMG_4357_lost_iPhone4_2.jpg

そもそも、警察に届けられたのにどうして SoftBank から「あなたが落とした iPhone4 はここにあります。」と、連絡が来るのか? 通信キャリアと警察はタッグを組んで、拾得物である携帯電話は極力持ち主に返してあげよう。というストーリーというか作業手順というかスキームができている。と、いうことなのかな?

今回初めて(本当に落としたのは僕じゃないけど)携帯を無くしたので、その辺りのことは解らないのですが、ここで SoftBank が登場して来るとは思ってなかったのでちょっと面食らいました。他のキャリアもそーなのかな?

4. 自分のものだと特定する情報
さて、落とした SIM 無し(SIM が機能していない) iPhone4 を警察署とか駅の遺失物預かり所に取りに行くとき、どうやって自分のものとして特定するのか? についてですが、iPhone のシリアル番号は iTunes で解ります。
SIM の情報が無い(解らない)場合には iTunes を起動して「環境設定」から[デバイス]タブときて、「デバイスのバックアップ:」で前回同期した機器一覧を表示すると、そこに iPhone4 が表示されていて無くしたデバイス名にマウスオーパしてしばし待つとシリアル番号が表示されます。最悪の場合は、そのシリアル番号を控えておいて、警察署もしくは遺失物預り所に行って、 落とした iPhone を起動してもらってシリアル番号を確認してもらえば自分のだと特定できると思います。

と、いうことで、今回落とした iPhoen4 は無事に出てきました。拾って届けて下さった方、ありがとうございました。やっぱり、 iPhone ってのは手元に戻ってくるものなのですねぇ;-)。

2月 022013
 

VMware ESXi が色々動作して来たのでそれではいよいよ FreeBSD をインストールしましょう。

OS インストール用の iso イメージは以前書いた通り「データストア ブラウザ」を利用して VMware ESXi にアップロードします。

「新規仮想マシンの作成」 からゲスト OS をを作成します。
僕の場合、40GByte の HDD を持つ FreeBSD-default という仮想マシンを作成しました。まず先にここに FreeBSD/amd64 9.1-RELEASE をインストールして環境を整えて必要な ports をインストールしてからタネにしました。

あとは「データストア ブラウザ」からファイルをコピーして新たな FreeBSD をボコボコ量産していきました;-)。

以下はキャプチャですが、左側のフレームでフォルダを作成し、 FreeBSD-default ディレクトリ中の log ファイル以外のデータを新規に作成したディレクトリにコピーしてあげます。



クリックすると大きくなります。

vmdk などのファイル名は仕様により変更できないので、タネのファイル名はいかにも “共通” っぽいファイル名のほうが良いと思います。

新しいディレクトにコピーが完了したら vmx 拡張子のファイルを選択し右クリックで「インベントリへ追加」を選択します。そーすると VMware vSphere Client のインベントリに新しい仮想マシンが登録されます。一番最初の起動時のみコピーしたのか? 移動したのか? と聞かれるので「コピーした。」を選択し、起動すれば良いですね。

起動前に「仮想マシンの設定の編集」画面を開いて色々設定すると良いかもしれません。僕は「イーサネットアダプタ」を追加しています。特にアダプタタイプに “VMXNET 3” を指定したものを一個追加しています。そして、全ての仮想マシンに “VMXNET 3” 用の仮想スイッチを追加し、裏 LAN 用に利用しています。



クリックすると大きくなります。

FreeBSD のインストールが完了したら VMware Tools をインストールしましょう。 freebsd.iso というのがちゃんと用意されているので「CD/DVD ドライブ 1」にそれをマウントします。 VMware ESXi 的には /usr/lib/vmware/isoimages/ の中に色々な OS 用の VMware Tools が用意されています。

まぁ、このディレクトリから freebsd.iso を持ってきて mdconfig を利用して mount して vmware-freebsd-tools.tar.gz を抜き出しても全然問題は無いです;-)。

tar.gz ファイルを展開すると vmware-tools-distrib/ の中に vmware-install.pl というスクリプトがあるのでこれを実行するとインストールが完了します。

# mdconfig -a -t vnode -f freebsd.iso -u 0
# mount_cd9660 /dev/md0 /mnt/
# cd /mnt/
# cp vmware-freebsd-tools.tar.gz /tmp/
# cd /tmp/
# tar xvzfp vmware-freebsd-tools.tar.gz
# cd vmware-tools-distrib/
# ls
FILES           doc/            lib/
INSTALL@        etc/            vmware-install.pl@
bin/            installer/
# ./vmware-install.pl
A previous installation of VMware Tools has been detected.
:

 
僕は FreeBSD/amd64 9.1-RELEASE をインストールしていますが、VMware tools をインストールするには ports から misc/compat6x をインストールする必要があります。あと、 perl も必須になるので lang/perl* の好きなバージョンをインストールしてください。僕の場合は perl-5.16.2 をインストールしました。

VMware Tools のインストールが完了するとメモリ周りが速くなったりするそうです。あと、イーサネットアダプタに “VMXNET 3” を追加したので vmx3f0 というインターフェースが生えてきます。こいつは media: Ethernet 10Gbase-T でリンクアップします;-)。

実際に仮想マシン同士で em0 と vmx3f0 でデータ転送の比較をしてみたのですが em0 は大体 430Mbps 、 vmx3f0 は 440Mbps 程度の転送速度でした。 10Gbps は出ないですねf(^^;;。

VMware Tools をインストールしたら kldstat とか叩いてみると良いかもしれないです。色々 VMware のカーネルモジュールがロードされるようになります。

これで VMware ESXi 対応の FreeBSD の環境が整いました。 jail も良いんだけど OS 単体の FreeBSD がボコボコ作れる状態になりました。思う存分 FreeBSD で遊べそうです;-)。

1月 282013
 

VMware ESXi に対するアクセスは Windows アプリで、 VMware vSphere Client は ESXi のバージョンに引っ張られてそのバージョンに対応したものをインストールしなければならない。と、いうのは以前に書いた通りです。

そもそも、普段から Windows OS を常用しとない人にとって VMware vSphere Client を利用するは非常に億劫です。どーせなら VMware ESXi に ssh ログインしてそこから色々やりたいですね。せっかくだからそーしてしまいましょう。

と、いうことで

1. VMware ESXi に ssh ログイン
VMware vSphere Client からサーバの設定で ssh を有効にします。「構成」タブの左側のメニューの「ソフトウェア」の中の [セキュリティプロファイル] を指定すると右側に表示されるのでプロパティから SSHを 指定し「実行中」にします。
すると root で VMware ESXi に ssh できるようになります。せっかくなのでユーザ登録時に一般ユーザアカウントも作成してしまいましょう。「ローカルユーザ及びグループ」でとりあえずアカウントを作成します。でもってすかさず ssh っ!!

ssh ログインできるようになりましたか?

せっかくなのでホームディレクトリを作成してしまえっ!! ってんで /etc/passwd にホームディレクトリを書き込んであげると次回以降、自分のホームディレクトリにログインできるようになります。ただ、ディレクトリ内の権限は root 権限で作成されるのでイマイチ意味が無いような気がしますが。けど、そこに色々なファイルが置けるのでそれはそれで良いかー;-)。

/etc/group の root グループに一般ユーザのユーザ名を登録してもユーザ権限で動作してくれないようですね。ま。いっか。でもせっかくなので公開鍵/秘密鍵のペアでログインできるようにしましょう。 sshd の設定ファイルは /etc/ssh/sshd_config なのでそのファイルを見ると以下の行が見えます。

AuthorizedKeysFile /etc/ssh/keys-%u/authorized_keys

 
なるほどね。公開鍵は /etc/ssh/keys-takachan/authorized_keys として置けば良いわけね。これでパスフレーズで ssh ログインできるようになります。

2. syslog の転送
VMware ESXi が出力する syslog って美しくないんだけど、まぁ syslog サーバに転送する分には特に問題ないので転送してしまいましょう。

まず、 syslog を受信するのは FreeBSD と想定した場合に /etc/rc.conf の設定は以下のようにして syslogd を再起動します。

syslogd_enable="YES"
#syslogd_flags="-a 192.168.1.0/24:*"
syslogd_flags="-a *:*"

 
コメントアウトしている行は 192.168.1.0/24 のホストからのみ syslog を受信する。って設定です。 *:* ってのは全てからの syslog を受信する。って設定です。こーすると IPv4/IPv6 の syslog が受信できるようになります。 IPv4 と IPv6 のネットワークを同時に指定する方法が解らなかったので・・。

Linux(CentOS) の syslog の受信は /etc/sysconfig/syslog の SYSLOGD_OPTIONS に -r を付けて再起動。ってのは皆さん知ってますよね? 😉

で、続いて VMware ESXi の syslog の転送方法ですが、 /etc/vmsyslog.conf をごっそりと手で直してましいましょう;-)。

[DEFAULT]
size = 1024
logdir_unique = false
loghost = udp://192.168.1.128
rotate = 8
logdir = 
[vmsyslog] loghost = udp://192.168.1.128 rotate = 8 size = 1024

 
[DEFAULT] と [vmsyslog] に loghost = udp://192.168.1.128 を追加します。で、再起動します。簡単ですねぇ。って・・。こんなことばっかり書いていると怒られそうなのでちゃんとコマンド打ってみましょうかf(^^;;。

VMware ESXi 5.1 では esxcli というコマンドを利用します。

# esxcli system syslog config get
Local Log Output: 
Local Logging Default Rotation Size: 1024
Local Logging Default Rotations: 8
Log To Unique Subdirectory: false
#
# esxcli system syslog config set --loghost="udp://192.168.1.128"
#
# esxcli system syslog reload
#

 
config get オプションで表示。 config set オプションに付属のパラメータで追加です。まぁ、設定ファイルを手で直してしまったほうが早いかf(^^;;。リブートしても良いですが、 syslog reload オプションで syslogd を再起動します。

で、VMware ESXi のファイアーウォールを確認し syslog が false であれば true にしてあげます。

# esxcli network firewall ruleset list | grep syslog
syslog                 false
#
# esxcli network firewall ruleset set --ruleset-id=syslog --enabled=true
# esxcli network firewall ruleset list | grep syslog
syslog                 true
#

 
あとは logger test とか打って、syslog サーバに転送されたか確認します。

3. 仮想マシンのコントロール
これは説明なしです。以下のコマンドで色々できます。一覧表です。

1). 仮想マシンの一覧表示

# vim-cmd vmsvc/getallvms

 
一覧を表示しますが、一番左に表示されている数値が VMID になります。以降のコマンド投入時には VMID を利用します。

2). 仮想マシンの起動

# vim-cmd vmsvc/power.on VMID

 
3). 仮想マシンの停止

# vim-cmd vmsvc/power.off VMID

 
「仮想マシンの停止」は多分、 shutdown 打ってくれないです。バチっと電源断だと思います。なので起動時には多分 fsck が走ると思います。けどもまぁ、しょーがないよねぇ・・。

4). 仮想マシンの再起動

# vim-cmd vmsvc/power.reboot VMID

 
こっちは ACPI シャットダウンが走るのかなぁ? だとすると FreeBSD の場合は ACPI S5 ステートが走るので shutdown はしてくれると思いますが、確認はしていません。

5).仮想マシンのサスペンド

# vim-cmd vmsvc/power.suspend VMID

 

4.CIM のことほんの少し
まぁ、こんな感じで。と、いうことで今回もこってり? と VMware ESXi を書いてみました。
snmpd は前回書いたし、あとは CIM かなぁ。 ports の net-mgmt/sblim-wbemcli をインストールして以下のコマンド叩けば良いです。

$ wbemcli ecn -nl -noverify 'https://root@192.168.1.250:5989/root/cimv2'

 
ドドドと一覧表示してくれるのであとは個別の値を取得すればより詳細情報が取得できます。

ここでパスワード入力が回避できるように ssh のパスフレーズ化を試みたのだけど、考えてみたら ssh ではなく https でのアクセスだったので全く意味無かった。と、いうか・・f(^^;;。

と、いうことでいい加減次回は ゲスト OS としての FreeBSD のことについて書いて行きましょう;-)。

1月 232013
 

ちょっと前の FreeBSD-users-jp な ML で USB マウスが動かなくなる。と、いうスレッドがありました。PS/2 マウスと USB マウスの二つがあった場合、そのうちの一個が動かなくなる。と、いうのものでした。

僕の場合、USB マウスではなく、 PS/2 マウスとタッチバッドの組み合わせなのですが、マウスのほうが動かなくなって悩んでいたのであります。

僕が持っているのは ThinkPad X100e で、こいつは Windows OS で言うところの UltraNav です。キーボードの真ん中に赤ポッチがあるのが、 FreeBSD 的に言うと /dev/sysmouse でこいつは ports 的 には x11-drivers/xf86-input-mouse で認識して動作します。タッチパッド側は /dev/psm0 で x11-drivers/xf86-input-synaptics で認識してタッチパッドとして利用できます。右側を上下になぞるとちゃんとスクロールもしてくれるように設定しています。

が、この状態において、僕の環境では赤ポッチとそれに付属するポタン類が一切動作しない状態で、上記スレッドを参考に色々試したのですが、やはり動作しないので放置していたのでありました。

今回、環境を 9.1-RELEASE にしたのでもう一度試してみたのですが、やはり動作しません。悲しい・・。

以下は僕が利用している 赤ポッチマウスとタッチバッドマウスの xorg.conf の設定です。一応 hal に関係する設定も書いておきます。

Section "ServerFlags"
Option    "AllowEmptyInput" "off"
Option    "AutoAddDevices"  "off"
#       Option    "AllowEmptyInput" "on"
#       Option    "AutoAddDevices"  "on"
EndSection
Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" Option "ZAxisMapping" "4 5 6 7" EndSection
Section "InputDevice" Identifier "Touchpad0" Driver "synaptics" Option "Protocol" "psm" Option "Device" "/dev/psm0" Option "SHMConfig" "on"
Option "TapButton1" "1"
Option "VertTwoFingerScroll" "1" Option "HorizTwoFingerScroll" "1" Option "VertScrollDelta" "200" Option "HorizScrollDelta" "200" Option "MinSpeed" "0.1" Option "MaxSpeed" "0.2" EndSection

 
この設定を書いても赤ポッチ側が動作しません。ps で hal と moused のプロセスを確認すると以下のようになっています。

$ ps -ax | grep mouse
1120 ??  Is     0:04.49 /usr/sbin/moused -p /dev/sysmouse -t auto
1332 ??  I      0:00.01 hald-addon-mouse-sysmouse: /dev/psm0 (hald-addon-mouse

 
moused は /dev/sysmouse 側をコントロールしています。 hald のほうは /dev/psm0 をコントールしています。 xorg.conf の設定では /dev/sysmouse は赤ポッチマウス、 /dev/psm0 はタッチパッドマウスです。まぁ、タッチパッドが無事に動作しているのでいーやー。とか思っていた時期が長いんですけどもね。

で、色々設定を見なおした結果、両方とも動作することが確認できました。上記 xorg.conf は何も問題がありませんでした。問題があったのは /etc/rc.conf で設定する moused の設定だったのであります。

以下のように設定すると 両方のマウスが無事に動作することが解りました。

moused_nondefault_enable="NO"
moused_enable="YES"
#moused_port="/dev/sysmouse"
moused_port="/dev/psm0"

 
今までは hald が /dev/psm0 をいじっているなら moused は /dev/sysmouse だろ。とか、勝手に思っていたのですが、moused のほうも /dev/psm0 に変更したらあぁら不思議。両方のマウスが動き出した。ということなんですね。 ps で確認すると以下のような感じ。

 $ ps -ax | grep mouse
33230 ??  Is     0:04.49 /usr/sbin/moused -p /dev/psm0 -t auto
33232 ??  I      0:00.01 hald-addon-mouse-sysmouse: /dev/psm0 (hald-addon-mouse

 
なんか、非常に違和感あるんですが、これで無事に二つのマウスが動作しております。考えてみると xf86-input-mouse がバージョンアップして以来赤ポッチマウスが動作していなかったので、随分と久しぶりに両方動きだした。ということになります。

いやー。良かったです。 xorg.conf が正しい設定であるならば rc.conf の moused の設定を変えてみてはいかがでしょうか。なお、今回は /usr/local/etc/hal/fdi/policy/ にはマウスの設定は入れていません。 xorg.conf の設定がそのまま X11 で有効になっていると思います。

ちなみにタッチパッドのほうは xf86-input-synaptics で動作しているので UltraNav みたいな動作が一応できます。 Synaptics を試してみたい方は参考にしてみてください。あ。細かい説明は一切ナシですけどもね;-)。

1月 072013
 

VMWare ESXi 5.1 を導入中です。今回は環境設定。ってんでしょうかねぇ。

それにしても外部ストレージが作成できたんだけど ISO イメージとかどうやって VMWare ESXi にアップロードするのー? ファイルマネージャとかないの? とか思って色々探したのですが、いやー、わかりにくいところにありますね。

プロビジョニングの VMkernel の [構成] タブの画面で右側のメニューの「ハードウェア」の「ストレージ」を選択します。すると「データストア」に表示されているストレージを選択して左クリックするとプルダウンメニューが現れます。ここから「データストアの参照」を選択すると「データストア ブラウザ」というファイルマネージャのようなものが起動します。

以下はキャプチャです。



クリックすると大きくなります。

画面下側のがデータストレージ内を見渡すことができる「データストア ブラウザ」です。これが表示されると isos とかいうディレクトリを作成できて、そこに ISO イメージなどをアップロードできます。また、作成した ゲスト OS をコピーしたりできるようになります。僕は FreeBSD-default というのを作成し、それをガシガシコピーして三つの FreeBSD をインストールしました。

次に VMkernel (あ。”VMkernel” とは VMWareESXi のハイパーバイザーのことです) の設定を 2,3 行います。上記と同じく [構成] タブの今度は「ソフトウェア」メニューの「セキュリティ プロファイル」を選択します。「サービス」のプロパティで色々起動します。まぁ、 sshd は起動しておいたほうが良いでしょうなぁ;-)。



クリックすると大きくなります。

ssh は起動するんだけど、snmpd がエラーになって起動しない。しょーがないので手動で起動できるようにしましょう。ってか、ハイパーバイザー(VMkernel のことね)に ssh でログインしたら色々中見られるし、大体のことは解ります;-)。snmpd を起動するためには /etc/init.d/snmpd で良いみたいですね。すると snmpd.conf ってのはどこにあるのだ? とか思ったら cat /etc/init.d/snmpd すると解ります。 /etc/vmware/snmp.xml というファイルのようです。このファイルを vi で編集して起動スクリプトのオプションを start として実行してあげれば起動します。

/etc/vmware/snmp.xml ファイルの変更箇所ですが、 以下の二点ですかね。

・<enable> タグに挟まれた文字列を true にします。
・<communities/> タグ を <communities>Public</communities> に変更します。

まぁ、二個目のヤツは communitiey 名なので自分の好きなのにすると良いかと思いますが。

以下は僕の設定です。

<?xml version="1.0"?>
<config>
    <snmpSettings>
        <enable>true</enable>
        <port>161</port>
        <EnvEventSource>indications</EnvEventSource>
        <loglevel>info</loglevel>
        <communities>Public</communities>
        <targets/>
        <engineid>00000063000000a1c0a8011c</engineid>
    </snmpSettings>
</config>

 
当該の snmp.xml ファイルは実は改行コードがないみたいですね。 init.d/snmpd を確認してみると多分一行で書いてある必要があると思います。

これで強引に snmpd も動作するようになりました。後は外部から snmpwalk 叩いて mib を見れば良いと思います。

さてと。次回はいよいよ FreeBSD のインストールだぜー;-)。

1月 062013
 

新年明けましておめでとうございます。今年も宜しくお願いします。今年の第一回目です。

それにしてもほぼ一年前ですね。自宅のサーバを新調したのは。PRIMERGY MX130 S2 ですが CPU は 6Core 、 メモリは 16GB あったので FreeBSD をインストールして Jail を四個、 VirtualBox で FreeBSD 一個に Windows OS を走らせていたのですが、そろそろ VMWare ESXi にでもするかねぇ。と、思い立ち 2T の HDD を買ってきてマシン自体を仮想化することにしました。

いやね。Jail も良いんだけど、親 FreeBSD のバージョンや ports のバージョンを上げると Jail 子がそれに引っ張られて動作しなくなったりするのがイヤになってきて・・。レガシーな環境は Jail 向きではないな。と、痛感しているのと、 FreeBSD 上で VirtualBox 動かすなら VMware ESXi でも良いかー。となり。

今回新しく VMWare ESXi というカテゴリを作成したので今後、このネタがあるごとにこのエントリに追加して行きたいと思います。今回はその第一回目です。

正月休みの最初の日に 2TB の HDD と PQI の 4GB の USB メモリを買ってきました。僕の家にはデスクトップ用の PRIMERGY MX130 S2 と、サーバ用の PRIMERGY MX130 S2 の二台があるので、とりあえずデスクトップ用の HDD を引っこ抜いて 2TB の HDD を装着。でもって USB メモリを接続し 4GB の USB メモリに VMWare ESXi 5.1 をインストールしました。

VMWare ESXi 5.1 のインストールは簡単でサクっと USB メモリにインストールできます。BIOS でブートする順番を変更し USB メモリがブートするように設定すればいとも簡単に VMKernel が起動します。あとはネットワークの設定を行えばとりあえず準備完了。

続いて VMKernel にアクセスするための Windows アプリを他のマシンにインストールします。VMWare vSphere Client 5.1 をインストールします。

ちなみに、 VMWare ESXi 5.0 に VMWare vSphere Client 5.1 でアクセスすると VMWare vSphere Client 5.0 のクライアントを勝手にダウンロードして置き換えようとします。ESXi と Client は同一のバージョンである必要があります。
ってことは、 複数台の VMWare ESXi が動作していたとして 5.0 と 5.1 が混在する環境ではクライアントアプリ用に二台の Windows が必要になるという、恐ろしい状態になります。

「はまり道そのいち」ですかね。VMWare ESXi を複数台用意する場合には全て同じバージョンを利用することをお勧めします。

続いて「はまり道そのに」です。
VMWare vSphere Client 5.1 からいよいよ VMKernel にアクセスし、HDD の追加をします。 ESXi 自体は 4GB の USB からブートしているので新規の 2TB の HDD はまるまるデータストレージとして利用します。
なんか、ダウンロードした VMWare vSphere Client 5.1 はビルド番号によっては日本語環境ではストレージ追加時に「vSphere Clientで内部エラーが発生しました。詳細:入力文字列の形式が正しくありません。」と言われて追加できません。僕がダウンロードしたクライアントは VMware-viclient-all-5.1.0-786111.exe になるんですけども。 このビルド番号のバージョンでは日本語環境ではストレージが追加できません。

DOS のプロンプトからクライアントアプリケーションを起動してオプションに -locale en_US を付加して起動します。英語表示にすると無事に HDD を ESXi のストレージとして認識できるようになります。

ストレージが付いたところで第一回目はここまでにしておきましょうか。次回は 2TB のストレージに FreeBSD をインストールすることにしましょう;-)。

12月 292012
 

前回の「SkyDrive を FreeBSD に mount して使う。」のエントリでは SMEStorage 経由で SMEStorage 提供の smestorage コマンド (perl スクリプト) を利用して KDE4 のファイルマネージャである dolphin から SkyDrive を FreeBSD から見る。ということろまででした。

今回はその続編になります。それにしても fusefs ってのはなんか面白いというか不思議なファイルシステムですねぇ。イマイチ解りませんが・・f(^^;;。 /usr/ports/sysutils/ の下には fusefs-* というのがたくさんあるんですね。

で、今回は、まぁ、海外のとある会社の製品というかサービスについて書くことになってしまうのですが SMEStorage を GUI で利用します。でもって、その上で SkyDrive を利用してみます。

まず、ソースコードですが、前回ダウンロードしてきた rpm を展開すると usr/share/sme_install_pack/ というディレクトリの中にドドドと入っていたのでこれを make して利用してみます。通常であれば、ベンダとかサードパーティから提供されるコマンドやアプリケーションはバイナリ形式のものが多いのですが SMEStorage はソースコードを提供してくれています。嬉しいですね。早速試してみましょう。

今回は /usr/local/SME/ と、いうディレクトレにインストールすることにしてみます。ソースコードは /usr/local/src/SME/ に展開してコンパイルしています。

# mkdir /usr/local/SME/
# cp -pr usr/share/applications /usr/local/SME/
# cp -pr usr/share/pixmaps /usr/local/SME/
# cp -pr usr/share/smestorageclient  /usr/local/SME/
# cp usr/local/bin/smestorage /usr/local/bin/
#
$ mkdir /usr/local/src/SME
$ cp usr/share/sme_install_pack/* /usr/local/src/SME/
$ cd /usr/local/src/SME
$ unzip SMEExplorer.zip
$ unzip SMEStorageClient.zip
$ unzip SMESyncCenter.zip
$ rm *.zip

 
Fuse-0.09.zip と XML-Simple-2.18.zip は ports からインストールされていると思うので今回は必要ありません。
上記 unzip したファイルは QT ベースのソースコードになります。KDE4 がインストールされていて QT4 がフルセットインストールされている環境であれば簡単にコンパイルが通ります。 QT4 がインストールされていない人はもしかしたらコンパイルのために QT4 一式をインストールする必要があるかもしれません。

QT4 がインストールされているものとして、次のステップに行きます;-)。ソースコードは Linux のためにコードにコマンドパスなどがベタ書きしてあるのでそれを変更してコンパイルします。

$ cd /usr/local/src/SME/
$ foreach i ( */*.h )
foreach? sed s#usr/share#usr/local/SME# $i > FILE
foreach? /bin/mv FILE $i
foreach? end
$ foreach i ( */*.cpp )
foreach? sed s#usr/share#usr/local/SME# $i > FILE
foreach? /bin/mv FILE $i
foreach? end

 
上記は tcsh で foreach を利用して Linux 用のパスである usr/share を今回インストールする usr/local/SME に書き換えています。 tcsh でない人は別のコマンドを利用して一括変換してください。

続いてコンパイルします。ソースコードは QT4 ベースなので make には qmake-qt4 を利用します。

$ cd /usr/local/src/SME/SMEExplorer/
$ qmake-qt4 ; make
# cp smestorageexplorer /usr/local/bin/
$ cd ../SMEStorageClient
$ qmake-qt4 ; make
# cp SMEStorageClient /usr/local/bin/
$ cd ../SMESyncCenter
$ qmake-qt4 ; make
# cp SMESyncCenter /usr/local/bin/

 
QT4 ベースのアプリはコンパイルが楽チンですね。 qmake は そのディレクトリの .pro ファイルを参照して Makefile を生成します。あとは make すると c++ がコンパイルをガシガシしてくれて、ハイ完成。って状態にしてくれます。

これで、前回のエントリでインストールした smestorage と今回新たに三つのアプリケーションのインストールが完了しました。以下に今回インストールしたアプリケーションの説明をちょっと書いてみます。

・smestorageexplorer
これだけ小文字なのですが、ウェブブラウザでアクセスする SMEStorage のサイトをファイルマネージャみたいなヤツで閲覧するアプリケーションです。非常に良くできていて SkyDrive も閲覧可能です。

smestorageexplorer_1.png

・SMEStorageClient
fusefs を利用してクラウド上にある SMEStorage を自分の FreeBSD に mount_fusefs するアプリケーションです。マウント専用の GUI です。

SMEStorageClient_1.png

・SMESyncCenter
SMEStorageClient でローカルに mount_fusefs したクラウド上の情報をローカルのディスクと sync するアプリです。簡単に言うと Windows 版の SkyDrive アプリケーションと似ているでしょうか。

SMESyncCenter_1.png

さてさて。これらコマンドの使い方ですが、smestorageexplorer は単体で利用できます。このコマンドは fusefs を利用しないのでサクっと動作します。まぁ、ウェブブラウザで SkyDrive にアクセスするか、専用アプリで SMEStorage 経由で SkyDrive にアクセスするかの違いだと思います。

問題は SMEStorageClient と SMESyncCenter を組み合わせて利用する場合です。まず、 SMEStorageClient アプリケーションで SMEStorage を mount_fusefs します。今回のキャプチャの例では smestorage.com にログインして fusefs を利用して /data/SME/ にマウントします。が、これが中々うまくマウントできないんですよねぇ。以下のメッセージが出力します。

mount_fusefs: /dev/fuse0 on /data/SME: Operation not permitted
fuse: failed to mount file system: No error: 0
could not mount fuse filesystem!

 
なんでやねん? とか思うのですが、そもそも、それ以前に儀式が必要です。

# /usr/local/etc/rc.d/fusefs onestart
# sysctl vfs.usermount=1

 
/usr/local/etc/rc.d/fusefs を start するときは kldload fuse.ko してくれます。 stop するときは kldunload fuse.ko と fusefs をマウントしている場合にはそれをアンマウントしてくれます。
vfs.usermount=1 のほうはユーザランドでマウントが利用できるようになる systcl mib です。
あと、/data/SME/ ディレクトリは SMEStorageClient を実行するオーナでないとダメです。 chown で調整してあげましょう。

が、こいつらを設定してもダメなんですよねぇ・・。orz しょーがないのでコマンドラインで以下のコマンドを叩きました。あ。以下のコマンドを叩くときは上記のコマンド二つは実行済みの状態です。

$ mount_fusefs auto /data/SME allow_other
mount_fusefs: failed to exec fuse daemon: No such file or directory

 
なんかデーモンが “No such file or directory” とか言ってますが(fuse 用のデーモンは特に動作していない)上記のコマンドを叩いたあとに mount コマンドで確認してみると無事にマウントできていたりします。

この段階で SMEStorageClient を起動して [Mount] ボタンを押すと「既にマウントしているよ。」と言われます。そして、そのあと [File] メニューの [Sync Center] を押すと SMESyncCenter が起動します。「Sync するか?」と聞いてくるので [OK] を選択すると、バババと同期してくれます。おぉっ!!

あとは、自分の好きなように利用するのが良いかと思われます;-)。

と、いうことで二回に分けて書いた今回の、主に SMEStorage のお話ですが fusefs のことがまぁ、そこそこ書けたのではないかなぁ。などと一人思っていますが、それにしても奥が深いのであろうと思われます。

あ、ちなみに、 SMEStorage のソースコード一式は多分、ports の解る人が ports を作成すれば簡単に ports 化できるのではないかと思われます。関連性でどこまで QT4 が必要になるかは(僕の環境では一式入っているため)解りませんけどね;-)。

と、いうことで今年のエントリは多分これが最後になるかと思われます。皆さん良いお年をー;-)。