Linux Kernel 2.6.38ビルド時のエラー。¶
kernel 2.6.38をビルドしようとすると、.arch/x86/kernel/entry_64.oのアセンブル時に
arch/x86/kernel/entry_64.S: Assembler messages:
arch/x86/kernel/entry_64.S:1544: Error: .size expression does not
evaluate to a constant
というエラーが発生してビルドできない。どうやらXen絡みのパラメータが原因でこけるみたい 1 。
Xen絡みのパラメータを全て向こうにしたらビルドできた。
- 1
普段はKVMを使っている環境
こまちゃん監視サーバ構築。¶
東日本で大地震があった日、僕の誕生日でヨメと有休を取って、ヨメへのサービス兼ねてディズニーシーに行っていた。お昼食べて、マーメイドラグーンシアターを見始めた直後、揺れ始めた。当初、こんな仕掛けあったっけ?と思ったのだが、揺れが大きすぎるので地震だと気づいた時にはミュージカルは中止になり、落ち着いたキャストの皆さんからその場で身を低くするよう指示があった。ちょっとパニックになりかけていたヨメをなだめて落ち着かせて身を守って揺れが収まってから、キャストの誘導に従って屋外に避難。屋外に避難してからは、移動せずにその場で待機するように指示され、結局その日は帰宅出来なかった。その後は、安全確認が終わったレストランに避難できるまでは寒かったものの、キャストの皆さんの素晴らしい行動と笑顔で特に不安もなく、レストランに避難してからはスタッフだけでなく回りの観光客が互いに気遣いしあっていたこともあり、余震に不安になりつつも被災状況下にありながらかなり恵まれていたのだと思う。
その辺は、この辺のtweet参照。
で、帰宅するまでヨメとずっと心配していたのは、こまちゃんの様子。あれだけ揺れたのだから、うちでも何か落ちて怪我していないだろうか、あるいは食べ物落ちて口にしてはいけないものを食べてはいけないだろうか、と気が気ではなかった。こんな不安なのは二度とゴメンだ。なので、明日から出勤に備えて、こまちゃんが一番よく活動しているリビング&ダイニングのあたりを監視するようにしてみた。
ハードウェア¶
監視用に使ったハードウェアのは次の二つ。
OpenBlockS600
ロジクールのWebCam
コンパクトフラッシュ
OSとパッケージ¶
OpenBlockS600にはあらかじめCFにDebian GNU/Linux Squeezeをインストールしておいた。
インストールしたdebパッケージは、次の3つ。
motion
googlecl
python-gdata
python-gdataはgoogleclをインストールすれば依存関係で自動的にインストールされる。
$ sudo apt-get install motion googlecl
motionの設定¶
motionは動いているものを検知すると写真をとることができるソフトウェア。ペットの監視や自宅監視を行うには最適だろう。
/etc/default/motion, /etc/motion/motion.confを次のように変更する。前者はデーモンとして動かすため、後者はmotion自体の設定変更。
diff --git a/default/motion b/default/motion
index 08ecd83..837a004 100644
--- a/default/motion
+++ b/default/motion
@@ -1,3 +1,3 @@
# set to 'yes' to enable the motion daemon
-start_motion_daemon=no
+start_motion_daemon=yes
diff --git a/motion/motion.conf b/motion/motion.conf
index ffb4d21..569870b 100644
--- a/motion/motion.conf
+++ b/motion/motion.conf
@@ -8,7 +8,7 @@
############################################################
# Start in daemon (background) mode and release terminal (default: off)
-daemon off
+daemon on
# File to store the process ID, also called pid file. (default: not defined)
process_id_file /var/run/motion/motion.pid
@@ -18,7 +18,7 @@ process_id_file /var/run/motion/motion.pid
############################################################
# Start in Setup-Mode, daemon disabled. (default: off)
-setup_mode off
+setup_mode on
###########################################################
# Capture device options
@@ -292,7 +292,7 @@ ffmpeg_deinterlace off
############################################################
# Make automated snapshot every N seconds (default: 0 = disabled)
-snapshot_interval 0
+snapshot_interval 1800
############################################################
@@ -321,7 +321,7 @@ text_right %Y-%m-%d\n%T-%q
# Draw a user defined text on the images using same options as C function strft
ime(3)
# Default: Not defined = no text
# Text is placed in lower left corner
-; text_left CAMERA %t
+text_left CAMERA %t
# Draw the number of changed pixed on the images (default: off)
# Will normally be set to off except when you setup and adjust the motion setti
ngs
@@ -356,7 +356,7 @@ text_double off
# Target base directory for pictures and films
# Recommended to use absolute path. (Default: current working directory)
-target_dir /tmp/motion
+target_dir /var/local/motion
# File path for snapshots (jpeg or ppm) relative to target_dir
# Default: %v-%Y%m%d%H%M%S-snapshot
設定したら、/etc/init.d/motion startコマンドで起動させる。ディスプレイの前で動いてちゃんと写真が取れていればOKだ。
goocleclでpicasaにアップロードする。¶
取得した画像ファイルを自宅鯖のWeb鯖で公開する、というのでも良いのだが、地震などの時は自宅鯖あるいは自宅ネットワークが止まってしまう可能性は大だ。であれば、どこからでも確実につながるであろう、そしてヨメにも簡単に使えるところに写真をアップした方が良いだろう、ということでpicasaを使うことにした。
先ほど設定した、/var/local/motionディレクトリ以下のファイルを全てアップロードしたい。ただ、一度アップロードしたファイルで、同じファイル名でも上書きされるのではなく、重複して登録されてしまう。これはめんどい。ということで、正常にアップロードしたファイルは重複アップロードを防ぐために削除するようにした。 1
#!/bin/sh
LOG=~/log/picasa-upload.log
cd /var/local/motion
google -u user picasa post --title='hoge' [0-9]*-??????????????-??.jpg [0-9]*-??????????????-snapshot.jpg > $LOG 2>&1
for i in $(awk '/Loading file/ {print $3}' $LOG)
do
test -f $i && rm -f $i
done
このままでは削除出来ないので、rootのcrontabでwrite権限を設定した。
1-59/15 * * * * chmod g+w /var/local/motion/*.jpg
それで先ほどのスクリプトをcronで回す。
3-59/15 * * * * ~/postpicture.sh
停電に備える。¶
このままでは2回の停電の時にCF上のファイルシステムが壊れるかもしれない。なので、こんなのも設定しておいた。
13 9 * * * /etc/init.d/motion stop
15 9 * * * shutdown -h now
13 18 * * * /etc/init.d/motion stop
15 18 * * * shutdown -h now
motionをshutdownではなく、事前に停止させているのは、shutdownコマンドではmotionデーモンがうまく死んでくれないので、先に落としてからshutdownをかけている、というわけである。とりあえず、これで一安心かな。
設置場所¶
こんな感じで設置してみた。
カーテンレールで吊るしているのがミソ。
こんな感じでこまちゃんを撮影できている。
こまちゃんが動くとコマ送りで撮れているので、なかなか楽しい。
- 1
ファイル名の先頭が二桁までしか対応していなかったので修正。
CACertとパスポートにまつわるバッドノウハウ。¶
オレオレ証明書ではなく、CACertでサーバ証明書を発行して利用する、というだけの場合には特に問題ないのだが、ポイントを貯め、assurerを目指すという場合に問題になってくる。特に日本語が分からない(要は海外の)assurerにassureしてもらうときに要注意なので、
これからCACertのアカウントを作ろうと考えている人
CACertのアカウントは既に作成済み&氏名をローマ字表記で入力していて、これからパスポートを作る人
は気をつけてほしい。
何を気をつけるのか?¶
それは、CACertのアカウント名の表記がローマ字の場合、パスポートの氏名のローマ字表記に一致している必要がある、ということ。これを気をつけないと、一昨日のOSCでのCACert認証会でのワシのように、非常に困ったことになる。
ワシの場合は、上の対象としては後者でCACertは以前から利用していて、アカウント名はローマ字で入力済みだった。そして、約2年半弱前に新婚旅行で初海外旅行に行く前にはじめてパスポートを作成した。それが一致していなかった。
アカウント名は”Kouhei Maeda”。
パスポートの表記は”Kohei Maeda”。
パスポートを作成するときに交通会館のパスポートセンターで
「ヘボン式にしますか?それとも非ヘボン式にしますか?一度登録すると変更できません」と言われ、その時は特に考えずにヘボン式、つまり”こうへい”の長音の”U”は書かない方法にしたのだった。これが原因でCACertでパスポートの表記と一致いないので、assureしてもらうのに手間取り、さらにCACertの表記もCACertの調停に申請してもらって変更してもらうことになってしまった。
でもやっぱりパスポートはヘボン式が基本ぽい。¶
http://www.seikatubunka.metro.tokyo.jp/hebon/index.html
外国人との婚姻、両親のいずれかが外国人、又は外国との二重国籍等により、戸籍上の氏名が外国式にカタカナで記載されている場合、又は戸籍上の氏名が漢字で記載されていてもヨミカタが外国式の場合には、旅券の氏名をヘボン式ローマ字ではなく、外国式の綴りで表記することができます。
(snip)
上記以外で、ヘボン式によらないローマ字氏名表記(長音H・O・Uの挿入やRに代えてLの使用等)を希望する場合には、あらかじめ電話案内センター又は各旅券窓口にご相談ください。
ヘボン式によらないローマ字氏名表記の申出には、「非ヘボン式ローマ字氏名表記等申出書」に希望する綴りを記入し、その綴りが実際に使用されていることを示す書類等(出生証明書、婚姻証明書又は配偶者や父母の外国旅券等)とともに提出してください。
交通会館で作成したときは上記のような説明はなかったのだが、希望者にはこういう説明をちゃんとするのだろうか。
何にせよ、パスポートを基本にするべし。¶
このスペルが一致しない問題、実はCACertだけでなく、GPGキーサインでも、海外の方の行うときには常に指摘される。つまり、パスポートと表記が違うじゃないかと。ただ、GPGキーサインの場合はfingerprintを印刷した名刺に、ローマ字での氏名と、漢字、ひらがなと3種類の表記をしている。パスポートにはローマ字表記に加え、書名もあるので、あとは口頭で説明すればそれで問題にはならないのだが、やはり本来しなくても良い説明ならしないに越したことはない。CACertの場合は、GPGキーサインよりもさらに厳格である必要がある。なんせ、あれは契約書で、assurerにとっては認証するのに責任も大きいからだ。
CACertとGPGキーサインにはパスポートを用意しよう。¶
これは別に今までの流れとは関係ないが、キーサインを行う際、パスポートが無くて話にならん、というのも多いので、OSCのようなイベントやCACertのassurerや、GPGキーサインを行う人が参加している勉強会に参加する場合は、あらかじめパスポートはちゃんと用意すると幸せになれるだろう。
僕と契約して、assurerになってよ。¶
ちゃんと目的意識持った上で、assurerにCACertの認証をしてもらい、ポイントを発行してもらうのはとても素晴らしいことだ。だけど、よく分からないけれど、なんか面白うそうだからと認証してもらって、100ポイント貯まって試験も合格してしまうと、QBさんの勧誘相手のようにちゃんと理解しないまま大変なことになる可能性はある。 2010年12月の東京エリアDebian勉強会の資料 をよく読んで、CCA( CACert Community Aggrement )も理解しておこう。 1
- 1
認証してもらうときに、CCAに同意することを確認されるし。
MacBook Pro 2011 EarlyをDebian化した。¶
testing(wheezy)のd-iを使ってインストールしようとしたところ、ベースシステムが見つからんということでインストールできず。
仕方ないので、Squeezeをインストールしようとしたところ、今度はネットワークデバイスを認識出来ないときた。EthernetカードはBrodocom NexXtreme BCM57765なのだが、 これはkernel 2.6.34からでないとサポートされていない ようだ。それでもベースシステムのインストールはできるので、とりあえず、Squeezeを最小構成でインストールした。インストール後再起動すると、MacBook 5,2の時のようなCPU coreを1個に見せないと起動できない、ということはなく、ちゃんとcore i7の8個分ちゃんと認識できて、メモリも8GBとなっていることを確認できた。
なので、今度はtestingのd-iを使い、レスキューモードで立ち上げて、/etc/apt/sources.listにsqueezeのAPTラインを追記して、パッケージのアップデートをして、fakerootとkernel-packages、libncurses5-dev、devscripts、ccacheをインストール。wgetでLinux Kernel 2.6.37.2のtarballをダウンロードしたのち再起動し、次のコマンドで8並列でカーネルビルド。
$ CONCURRENCY_LEVEL=8 MAKFLAGS="CC=ccache\ gcc" make-kpkg --rootcmd fakeroot --config menuconfig \
> --initrd --revision=$(date +%Y%m%d.%H%M) kernel-image kernel_headers modules_image
約20分。Core 2 Duoの1コアの時は2時間近くかかっていたのを考えるとめっちゃ速い!
NICも無事認識できたので、Wheezy/Sidにアップグレード。マルチコアの恩恵はカーネルビルドで十分受けたが、パッケージのアップグレードではSSDの恩恵を。パッケージのダウンロードおよび展開がめっちゃ速い!Squeeze→Wheezy→Sidへのアップグレードもものの5分ほどで終わった。素晴らしい。
testingのd-iのバグだろう。¶
testingをインストールしようとして出来なかったので、当初パーティションテーブルを作り直して、Mac OS Xを消してDebianだけをインストールしようとしたのが原因かと思っていた。が違っていた。おそらくd-iのバグだろう。d-iのバグもBTSで受けてつけているんだろうか…。
MacBook Proキタ!¶
メモリ8GB、SSD128GB、ハイレゾ&アンチグレア液晶、英語キーボードに換えたMacBook Pro 15インチ(Early 2011)がやってきたー!一緒に、アスマルで注文した50枚入りマスク10箱もやってきた!
こまちゃんとMacBook Proの段ボール、マスクの段ボールの図。
段ボールあけて陳列。
ご開帳。
同梱物一覧。
開くとこんな感じ。アンチグレアなので反射しませんな。
MacBook 5,2と並べて。デカイっていいねぇ。
とりあえず、直近の予定としては、もちろんDebian化ですよ。