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 ってのは手元に戻ってくるものなのですねぇ;-)。