2012/05/28

PogoplugをOpenPogo化してOSX LionのTime Machineバックアップ先にして使ってます

Pogoplug(POGO-P25)を自宅で便利に使っていたんですが、ファイルコピーがとにかく遅い。あと、せっかくハードディスクをネットワークにつなげられてるんだから、Time Machineのバックアップ先にもしたい。

そこで、PogoplugをOpenPogo化してカスタマイズ。Netatalkで高速なNASにしたり、Time Machineのバックアップ先にしたり、2台のハードディスクをつないで二重化したりして、もう3ヶ月ほど連続で動かしていますが非常に安定しています。Pogoplugのもともとの機能は全てそのまま生かしたまま、Linuxボックスとして自由にカスタマイズできる、というのは超絶便利です。

というわけで、備忘録として、参考にしたサイトのリストをまとめておきます。

2012/03/11

裸族の二世帯住宅を OSX Lion で初期化する方法

fdiskを使ってマスターブートレコードを初期化することもできたので追記。pdiskを使った場合はAppleパーティションマップでのパーティション管理になるんだけど、この場合、linuxマシンで認識できないことがあった。マスターブートレコードにしておけばその心配がないっぽい。
[2012/3/12 追記]

裸族の二世帯住宅とは、センチュリーからかつて販売されていたRAIDできるHDDケース。使いやすいケースなんだけど、RAID0やRAID1で設定している場合にディスクユーティリティで初期化できない、というOSXユーザにとっては厄介な問題がある。ここなどによると、OSX 10.5以降のディスクユーティリティで起きるらしい。

というわけで、裸族の二世帯住宅を OSX Lion (10.7.x) で初期化(パーティションの切り直し&フォーマット)する方法を備忘録。
※お決まりですが、、、
あくまで自分用の備忘録です。もし参考にやってみようという方がいたら自己責任でどうぞ〜



[方法A] マスターブートレコード方式 (fdisk を使用)

(1) ターミナルから fdisk でマスターブートレコードを初期化

※例えば、HDDケースが /dev/disk1 として認識されている場合
$ fdisk -i /dev/disk1
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory

-----------------------------------------------------
------ ATTENTION - UPDATING MASTER BOOT RECORD ------
-----------------------------------------------------

Do you wish to write new MBR and partition table? [n] y[enter]

(2) 続いて fdisk でパーティションを定義

※単一のパーティションで良ければ auto [style] が便利
$ fdisk -e /dev/disk1
fdisk: could not open MBR file /usr/standalone/i386/boot0: No such file or directory
Enter 'help' for information
fdisk: 1> auto hfs[enter]
fdisk:*1> p[enter]
Disk: /dev/disk1 geometry: 121601/255/63 [1953525169 sectors]
Offset: 0 Signature: 0xAA55
Starting Ending
#: id cyl hd sec - cyl hd sec [ start - size]
------------------------------------------------------------------------
*1: AF 0 1 1 - 1023 254 63 [ 63 - 1953525106] HFS+
2: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
3: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
4: 00 0 0 0 - 0 0 0 [ 0 - 0] unused
fdisk:*1> w[enter]
Writing MBR at offset 0.
fdisk: 1> q[enter]

(3) ディスクユーティリティか newfs_hfs で /dev/disk1s1 を初期化



[方法B] Appleパーティションマップ方式(pdisk を使用)

(1) ターミナルから pdisk でパーティションマップを初期化

※例えば、HDDケースが /dev/disk2 として認識されている場合
$ pdisk /dev/disk2
Edit /dev/disk2 -
Command (? for help): i[enter]
map already exists
do you want to reinit? [n/y]: y[enter]
A physical block is 512 bytes: 2048[enter]
A logical block is 512 bytes: [enter]
size of 'device' is 1953525168 blocks (512 byte blocks): [enter]
new size of 'device' is 1953525168 blocks (512 byte blocks)
Command (? for help): p[enter]

Partition map (with 512 byte blocks) on '/dev/disk2'
#: type name length base ( size )
1: Apple_partition_map Apple 63 @ 1
2: Apple_Free Extra 1953525104 @ 64 (931.5G)

Device block size=2048, Number of Blocks=488381292 (931.5G)
DeviceType=0x0, DeviceId=0x0

Command (? for help): c[enter]
First block: 64[enter]
Length in blocks: 1953525104[enter]
Name of partition: Extra[enter]
Command (? for help): p[enter]

Partition map (with 512 byte blocks) on '/dev/disk2'
#: type name length base ( size )
1: Apple_partition_map Apple 63 @ 1
2: Apple_HFS Extra 1953525104 @ 64 (931.5G)

Device block size=2048, Number of Blocks=488381292 (931.5G)
DeviceType=0x0, DeviceId=0x0

Command (? for help): w[enter]
Writing the map destroys what was there before. Is that okay? [n/y]: y[enter]
The partition table has been altered!

Command (? for help): q[enter]

(2) ディスクユーティリティか newfs_hfs で /dev/disk2s2 を初期化

2011/08/18

GR DIGITAL II で赤外線写真を試す


ケンコー・トキナーの PRO1D R72 (赤外線透過フィルター) を使った風景写真が面白い。撮影や加工のコツがまだまだ掴めないけど、適当にやってもそれなりに不思議な感じに仕上がる。

2011/08/16

OpenCVで顔検出してリアルタイムモザイク

もはや定番となってますが、顔検出のサンプルコード "samples/c/facedetect.cpp" をベースに、検出された顔の領域にモザイクをかけるようにしてみた。コードはgist:1148913へ。

本格的な画像処理や画像認識の機能をお手軽に試せてしまうの楽しい。
すごいぞ、OpenCV!;-)

モザイクかけるだけで何やら怪しい雰囲気になるなw

2011/08/15

OSX Lion (MacBook Air - Mid 2011) 上の Xcode4.1 で OpenCV2.2 を使えるようにする

MacBook Air (Mid 2011) で OpenCV を使ったコードを動かすまでのメモ。
手順は以下のとおり。

[1] Xcode をインストール

AppStore で検索&クリック。あとは待つだけ。

[2] MacPorts をインストール

公式サイトから Lion 用のイメージをダウンロードしてきてインストール。
インストールが終わったら、一応アップデートしておく。
$ sudo port selfupdate

[3] OpenCV をインストール

MacPorts を使ってしまえばコマンド一発。時間はかなりかかる。
$ sudo port install opencv

[4] Xcode のプロジェクト設定

ポイントは3つ。
  • 「Valid Architectures」を"x86_64"のみにする。
    ※"i386"を含めたままでは、ビルドでエラーが出た。
  • 「Header Search Paths」に"/opt/local/include"を追加。
  • 「Other Linker Flags」に必要なライブラリのパスを追加。例えば、以下の3つ。
    • "/opt/local/lib/libopencv_core.2.2.0.dylib"
    • "/opt/local/lib/libopencv_highgui.2.2.0.dylib"
    • "/opt/local/lib/libopencv_imgproc.2.2.0.dylib"
    ※ここで設定せずにプロジェクトに直接追加してしまってもOK

というわけで、C でこんなコードを書いて動かしてみると、、、
#include <opencv/cv.h>
#include <opencv/highgui.h>

IplImage* doCvGray(IplImage* in);
IplImage* doCanny(IplImage* in, double lowThresh, double highThresh, double aperture);

int main (int argc, const char * argv[])
{
  cvNamedWindow ("Capture", CV_WINDOW_AUTOSIZE);
  cvNamedWindow ("Edge", CV_WINDOW_AUTOSIZE);

  CvCapture *capture = cvCreateCameraCapture(0);
  assert(capture != NULL);

  IplImage *frame = 0;
  IplImage *out = 0;
  int c;

  while (1) {
    frame = cvQueryFrame (capture);

    out = doCvGray(frame);
    out = doCanny(out, 10, 100, 3);
    cvShowImage("Capture", frame);
    cvShowImage("Edge", out);
    cvReleaseImage(&out);

    c = cvWaitKey (2);
    if (c == '\x1b')
      break;
  }

  cvReleaseCapture (&capture);
  cvDestroyWindow ("Capture");
  cvDestroyWindow ("Edge");

  return 0;
}

IplImage* doCvGray(IplImage* in){
  IplImage* out = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);
  cvCvtColor(in, out, CV_BGR2GRAY);
  return out;
};

IplImage* doCanny(IplImage* in, double lowThresh, double highThresh, double aperture){
  IplImage* out = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);
  cvCanny(in, out, lowThresh, highThresh, aperture);
  return out;
};
はい、エッジ検出できておりますw