11月
07
2009
0

MacHeist nanoBundleは無料だった・・・

おなじみMacHeistがまたやってくれましたよ!!

先日DaisyDiskの無料配布をやったばかりですが,今度はnanoBundleという企画をやってます

今回の内容はShoveBoxやTwitterrificなどの有名アプリをはじめとしてWriteRoom,TinyGrab,Hordes of Orcs,Mariner Writeの6本入りです

気になるお値段ですが,なんと無料です!!

まぁ手違いで$15ほど寄付してしまった自分ですが・・・
大阪人の端くれとして本来タダなモノに金を払うのは非常に癪ですw

残り5日らしいので,興味のある人は是非お早めに

Written by p0n in: PC | タグ:
11月
02
2009
0

MBRのおさらい

先日お亡くなりになったMacBookのHDD
データがなくなったのは仕方ないが,なんとか活用できないものか?

Intel Macは既にEFIを利用していて,パーティションテーブルにはGPTを採用している
そして,WikipediaによるとGPTはディスクの後方にもGPTヘッダーとパーティションテーブルを備えているらしい

互換性を保つためGPTではLBA0にMBRが存在するらしく,ディスク全体がひとつのパーティションであるように見えるらしいが,問題のHDDのLBA0には欠損があるようで読み取れなかった

ということで,このHDDを利用して,勉強がてらパーティション情報を復活させてみようと思う

その前に確認の意味も込めてMBRのおさらいをしてみる

実験台にされたのはUbuntu 9.04 (64bit) メインのLinuxマシン
こいつはソフトウェアRAIDを組んでるマシンだが今回は片方のディスクを対象にする

このディスクの情報は下記の通り

% sudo sfdisk -l /dev/sda

ディスク /dev/sda: シリンダ数 60801、ヘッド数 255、63 セクタ/トラック
ユニット = 8225280 バイトのシリンダ、1024 バイトのブロック、0 から数えます

   Device Boot Start     End   #cyls    #blocks   Id  System
/dev/sda1   *      0+      7       8-     64228+  fd  Linux raid 自動検出
/dev/sda2          8    1831    1824   14651280   fd  Linux raid 自動検出
/dev/sda3       1832   56783   54952  441401940    5  拡張領域
/dev/sda4          0       -       0          0    0  空
/dev/sda5       1832+  56540   54709- 439450011   fd  Linux raid 自動検出
/dev/sda6      56541+  56783     243-   1951866   82  Linux スワップ / Solaris

まず,MBRを取り出してやる
MBRはHDDのCHSだとC:0 H:0 S:1,LBAだと0から512バイトの領域なので

% sudo dd if=/dev/sda of=mbr bs=512 count=1

取り出したMBRをダンプしてやる
zオプションを使ってることから明らかなように作業はLinuxでやってます

$ od -tx1z -Ax mbr
・・・
0001b0 00 00 00 00 00 00 00 00 18 cd 01 00 00 00 80 01  >................<
0001c0 01 00 fd fe 3f 07 3f 00 00 00 c9 f5 01 00 00 00  >....?.?.........<
0001d0 01 08 fd fe ff ff 08 f6 01 00 20 1f bf 01 00 fe  >.......... .....<
0001e0 ff ff 05 fe ff ff 28 15 c1 01 a8 84 9e 34 00 00  >......(......4..<
0001f0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa  >..............U.<
000200

MBRの大半はIPLで占められていて,先頭から446バイト後方にパーティションテーブルが,さらに64バイト後方に2バイトのシグネチャ (0xAA55) がある

ダンプ結果を見ると確かにシグネチャ 0xAA55が確認できる
(リトルエンディアンな点に注意)

0×0001b8-0×0001bbの4バイトには,ディスクIDも確認できる

ダンプデータから,パーティションテーブルの情報を抜き出して見る
パーティションテーブルには4つのエントリがあり,各エントリの構成は先頭から順に,次のようになっている

  • ブートフラグ (8bits)
  • 開始位置 (CHS) (24bits)
  • パーティションタイプ (8bits)
  • 終了位置 (CHS) (24bits)
  • 開始位置 (LBA) (32bits)
  • セクタ数 (LBA) (32bits)

また,CHS形式の値は先頭から順に,次のようになっている

  • Head (8bits)
  • Cylinder上位 (2bits)
  • Sector (6bits)
  • Cylinder下位 (8bits)

従ってパーティションの情報は次の通り

Partition Boot Flag Partition Type Start (CHS) End (CHS) Start (LBA) Sector Counts
1 80h FDh C:0 H:1 S:1 C:7 H:254 S:63 63 128457
2 0h FDh C:8 H:0 S:1 C:1023 H:254 S:63 128520 29302560
3 0h 05h C:1023 H:254 S:63 C:1023 H:254 S:63 29431080 882803880
4 0h 0h C:0 H:0 S:0 C:0 H:0 S:0 0 0

基本パーティションと拡張パーティションをあわせて3つしかないので4番目のエントリは0で埋められている

ブートフラグを見ると第1パーティションにブート可能を示す80hが格納されており,他のパーティションには0hが格納されている

BIOSによってMBRが0×7C00にロードされると,IPLはブートフラグが80hになっているパーティションを探す

古いBIOSでは,パーティションテーブルの先頭から順に1バイトずつ,DL, DH, CL, CHレジスタに格納される
つまり,DLレジスタでこの80hをドライブナンバー,DHでヘッド数,CHでシリンダ数の下位8ビット,CLの第7-8ビットでシリンダ数の上位2ビットを指定してINT 13hをコールすることで,パーティションテーブルのブートレコードが読み込まれる

拡張INT 13hでは,CHSではなくLBAを利用する

ちなみに,GRUBなどはIPLを書き換えて独自のブートプロセスをとるため,この限りではない

CHS方式では1024個のシリンダしか扱えないので,最近の大容量のHDDではCHSによるジオメトリではなくリニアなLBAを使用するが,CHSのエントリとしては1023/254/63が格納されている

sfdiskの結果をみると,H:254 S:63は固定で,シリンダの値としてディスク容量から算出された1024より大きな値が表示されている

パーティションはシリンダの境界から始めるのがルールだが,第1パーティションだけは例外でMBRの次のヘッダである C:0 H:1 S:1から始まる

LBAの開始アドレスとそのパーティションのセクタ数を足してみると,次のパーティションの開始アドレスになっており,リニアにアドレスが振られていることが分かる

パーティションタイプは,FDhがLinuxのソフトウェアRAID,05hが拡張領域.他にもNTFSなら0×07とかになる

続いて,CHSとLBAの変換方法はHDDの基本的な構造から考えれば自明

CHS->LBA
 LBA = C * 1トラックのセクタ数 * ヘッド数 + H * 1トラックのセクタ数 + S – 1
    = (C * ヘッド数 + H) * 1トラックのセクタ数 + S – 1
LBA->CHS
 C = LBA / 1トラックのセクタ数 / ヘッド数
 H = (LBA / 1トラックのセクタ数) % ヘッド数
 S = LBA % 1トラックのセクタ数 + 1

計算してみると分かるが,LBAから算出した値はsfdiskの表示する1024を超えたシリンダ番号と一致する

Written by p0n in: PC | タグ: ,
11月
01
2009
0

結局rsyncに決定

前回rdiff-backupが使えないことが判明したので,無難にrsyncにします

まぁインクリメンタルバックアップより,バンドル化されていない生のデータを残すことが目的なので・・・

もちろんOSXには最初からrsyncが入っているのですが,

% rsync --version
rsync  version 2.6.9  protocol version 29
Capabilities: 64-bit files, socketpairs, hard links, symlinks, batchfiles,
              inplace, IPv6, 64-bit system inums, 64-bit internal inums

とちょっと古いので,portで新しいのをいれましょう

% sudo port install rsync
・・・
% /opt/local/bin/rsync --version
rsync  version 3.0.6  protocol version 30
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, file-flags

rsyncは3.0からMac OS Xのサポートが強化されていて,ACLや拡張属性にも対応しています

とりあえずDRY RUNでテストしてみます

% /opt/local/bin/rsync -avnX /Users/h2 /Volumes/Data/rsync-mbp
・・・
some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

なんかファイルの属性が転送できなかったと言われるので,sudoを付けて管理者権限でやったらうまくいきました
(ホームディレクトリなのに管理者でないと読めない属性があるのだろうか?)

ということで,本番開始

% sudo /opt/local/bin/rsync -avX /Users/h2 /Volumes/Data/rsync-mbp

1000BASE-Tの有線接続にもかかわらず,高々150GBほどのバックアップに8時間以上・・・。

AFPではファイルごとにセッションが切れるようで,デカいファイルだと数メガByte/secでるものの,数キロバイト程度のファイルでは全然ダメ
TCPのスロースタートが原因だと思われ

しかも,最後にエラー

some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

・・・次回に続く。

Written by p0n in: PC | タグ:
10月
31
2009
0

rdiff-backup

どうもTime Machineだけでは頼りないと思う今日この頃

Linuxではかねてよりお世話になっているrdiff-backupでもバックアップをとることにしました

バックアップ先は,2台購入したTime Capsuleの片方です

rdiff-backupのすげぇところは公式サイトに書いてありますが,個人的には

  • 差分をとってるので指定した時に戻れる
  • ミラー+後方への差分というディレクトリ構造

なあたりが気に入っています

よくある差分バックアップでは変更点を差分として記録していって,状態を復元する時はフルバックアップとそれまでの差分を使うものが多いと思います

rdiff-backupではツリーを最新の状態にミラーし,元に戻すための差分を記録していきます

なので復元も高速だし,ほしいファイルだけ取り出すのも簡単です

rdiff-backupのインストールはportで一発
(librsyncやpy25-xattrなども勝手にインストールしてくれます)

$ sudo port install rdiff-backup

自動実行とかは後から考えるとして,とりあえずタイムカプセルのディスクをマウントしてバックアップを開始してみると・・・

% rdiff-backup /Users/h2 /Volumes/Data/rdiff-backup
Warning: hard linking not supported by filesystem at /Volumes/Data/rdiff-backup/rdiff-backup-data

ハードリンクをファイルシステムがサポートしてないと怒られました
OSXではカーネルレベルでちょっと細工をしてHFS+でハードリンクを実現しています
ところが,AFP (Apple Filing Protocol) がハードリンクをサポートしてない・・・
Time CapsuleはSMB/CIFSでもディスク共有ができますが,当然ハードリンクは使えない

せめてSSHで接続できればなんとかなりそうだけど,残念ながらムリ
Time CapsuleはTime Machine以外の目的にはとても不便です

ということで自分の望む形で,rdiff-backupでTime Capsuleのディスクにバックアップするのは無理なことが判明><

毎時間のバックアップに耐えようと思うとハードリンクは必須でしょう
ネットワーク経由でタイムマシンを使うとスパースバンドルにされちゃう話は,AFPの制約が原因なのでしょうか?
もちろんこれ以外にも転送容量の削減とかいろいろありそうだが・・・

正直Time Machine使うより,iSCSI対応のNASにrdiff-backupでバックアップするのが一番賢い方法でしょう・・・

Written by p0n in: PC | タグ:
10月
30
2009
0

買ったばっかやのに・・・

TimeCapsule

前回グチっときながらも,2TBのTime Capsule買いました!!

2台もw

まぁAppleのお作法に乗っとけばラクできるなぁってのと,有線のハブやらAirMac Expressなんかを全部まとめたかっただけです

10万以上かかりましたが,データを失うことを思えば安いもんです

2台のTime Capsuleを同時に使うことはできないようなので,1台は別の方法でバックアップに使う予定

ところで,Time Capsuleがコッソリ改良されたらしい

うそぉおおお!?
凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹凹

Written by p0n in: PC | タグ:
10月
29
2009
0

タイムマシンの過信は禁物

ほっとけば勝手にバックアップをやってくれる〜ステキなTime Machine
使ってる人はかなり多いと思います

でも,過信は禁物ですよ(かなり痛い目にあいました><)

  • バックアップの対象
      Time Machineの設定ではバックアップから除外する項目を選択することができます.これって,要するに何も指定しなければ全てをバックアップするってことだと思いませんか?ところが,別のパーティションはバックアップの対象外でした.
      自分はホームディレクトリだけ別のパーティションに置いていたので,要るデータは全く残ってないのに,不要なOSのファイルだけ完全に復活しました><
  • ネットワーク経由でのバックアップデータは大事な時に使えない
      これこそがTime Machineの最大の問題点!!Time MachineはUSBやIEEE 1394で接続しているHDDにバックアップする際には,ファイルやディレクトリ構造をそのままコピーします.もちろん,Time Capsuleをはじめとするネットワーク上のストレージもバックアップ先に指定することが出来ます.
      ところがですよ!!!ネットワークを経由する場合はスパースバンドルというディスクイメージが作成されてしまいます.スパースバンドルは中身を見てもらえば分かると思いますが,一定サイズの小さなファイルがたくさん集まって構成されていて,バンドルからもとのファイルを取り出すことはできません
      そりゃバンドルの生成アルゴリズムが分かれば取り出せるでしょうが,現実的には無理です.Appleのサポートにも確認しましたが,「無理」とのことでした.
      つまり,不具合が起こった時にバックアップ先のHDDからデータだけサルベージしても何も取り出せない.この辺は正直,rdiff-backupの方が遙かに優秀です.
  • 要修復なコトも・・・
      自分の場合は,AirMac ExtremeのUSBポートにつないだHDDをバックアップ先にしていました.通常OSのディスクで起動してやれば簡単にそのバックアップから復活出来るハズなんですが,復旧させる候補として表示されるものの,選択しても永遠にコピーがはじまらない・・・
      HDDを直接MacBook Proにつないでもダメ
      だからこそ前述のバンドルからのデータ取り出しの話になるわけです
      ダメもとでディスクユーティリティでディスクのアクセス権を修復してやるとうまくいきました
      まぁ結果は要らないデータだけキレイに復活した訳ですが・・・

ということで,今回はここ1年半のデータを全て失うという結果になってしまいました
ここまでくると正直何もかもどうでもよくなってきますw

Time Machineの仕様をキチンと理解せずに過信してた点もありますが,そもそもちゃんと書いてあるようなドキュメントがないように思います.

Time Machineさえ使ってれば大丈夫と安心面ばっかりをアピールするのはいかがなものかと・・・

誰にも自分と同じ轍は踏んでほしくないので,戒めの意味(アップルへの恨みも)を込めてココで恥をさらすことにします

あーーー死にてぇw

Written by p0n in: PC | タグ:
10月
26
2009
0

自力サルベージ その3

その1その2とサルベージを試みてきましたが,1週間ほど吸い出し続けても終わらない・・・

まぁここまでくると損傷も結構ヒドイに違いないとあきらめモード

吸い出せたと仮定して,その後の話を書きたいと思います

とりあえず,ディスクイメージのままだと扱えないツールもあるので新しいディスクにイメージを書き込む

$ dd if=salvage.img of=新しいディスク bs=65536

今回はLeopardのディスクなのでData Rescue II(体験版アリ)を試してみようかと思います

フリーだとPhotoRecというFAT,NTFSはもちろんEXT2/EXT3やHFS+にも対応したツールがあるようなのでこちらも使ってみる予定

WindowsならファイナルデータData Rescue PCが有名でしょうか?

LinuxやBSD系OSならfsckしてみるとか,salvage-1.0ってのもあるらしい

今更ですが,吸い出しにはddを直接使う以外にもdd_rescue,dd_rescueを呼ぶbashのスクリプトdd_rhelpというラッパーツールもあります

Written by p0n in: PC | タグ:
10月
24
2009
0

自力サルベージ その2

前回のつづき

スゴイアダプタの購入でPIO4での接続に成功するも,PIO0への切り替えは失敗
とりあえず,DMAのエラーは出なくなったので作業を続行

まずfdiskでパーティション情報が見えるか試してみる
予想通り大量のreadエラーが・・・

読めるところだけddで吸い出してやることに

とりあえずディスクの先頭から

$ dd if=/dev/ad4 of=salvage.img bs=512 conv=sync,noerror

エラー大量!!!
どうも先頭は死んでるっぽい ><

たしかこのディスクには2つパーティションがあって,先頭は40GBだったような(かなり曖昧)気がする

ということで,40*1024*1024*1024/512=83886080 としてアバウトに開始位置を指定してみる(実際のパーティションの開始位置の計算はGPT/MBRなどを考慮しないといけない)
ついでに,書き込みブロックはまとめて行うようにibsとobsをそれぞれ指定してやる

$ dd if=/dev/ad4 of=salvage.img ibs=512 obs=65536  skip=83886080 conv=sync,noerror

問題なく読める箇所もあるけど,スグにエラーが発生する

吸い出せたところをダンプしてみると,見たことのあるファイル名が表示された
ディレクトリの部分だろうか?

でも,1日かけて4MB程度しか進まない(爆)

吸い出せさえすれば,多少手があるんだが・・・

Written by p0n in: PC | タグ:
10月
20
2009
7

自力サルベージ その1

先日MacBookのHDDがクラッシュしました
なんか動き遅いなぁと思ったら死んでました ><

本来ならばスグ取り外して業者送りにするのがいいんでしょうが,恐ろしい金額の請求書が届くこと間違いなしなので,自力サルベージを決行

ディスクはMac OSからは見えないので,とりあえずハズしてPCに接続
アダプタ経由のUSBではなく,ちゃんとデスクトップのSATAに接続します

BIOSから見えたり見えなかったりで,あまりよくない状態です

まずは,Linuxで試してみることに
ディスクが読めないせいか起動にエライ時間がかかります
dmsgで見る限りディスクの型番は認識できてます
でも,デバイスファイルは生成されず

お次は,FreeBSD
インストールするのが面倒ならFreeSBIEを使いましょう

もちろんBIOSから認識しているからといって,OSが認識できるとは限りません
でも,不安定なディスクだと何度か繰り返してるうちに認識できる時があります
とはいえ,何回もOSを再起動するのは面倒
というかディスクエラーのせいで起動にエライ時間がかかるので大変です

FreeBSDには “atacontrol detach/attach” というコマンドでバス単位で接続・切断を行える神コマンドが存在します

自分の場合はFreeBSDだと,カーネルから無事認識されてデバイスファイルが生成されました

ただ,DMA関連のエラーが出まくるのでPIOに切り替えようと

# atacontrol mode ad4 BIOSPIO

を実行したんですが,SATA300から変わらない・・・

PATA互換モードで動かしてるんやけどなぁ???

ということで,SATA→PATAアダプタを購入
その名も「スゴイアダプタ SATA-TR150BMS」

こいつをカマしてやるとPIO4で認識される
でも,なぜかPIO0にはできない・・・

続く

Written by p0n in: PC | タグ:
10月
01
2009
0

MBPのHDD交換

前回型番を間違えて発注するというチョンボをやらかしたHDD
まぁ,仕方ないのでまた購入
買ったのは,最近人気のWD Scorpio Blue WD5000BEVTです

Xbit Laboratoriesのベンチマークを見ると,5400回転の割に結構早い
実際,これまで使ってた7200回転と遜色ない気がします
1プラッタで250GBと記録密度が大きくなったのもその一因かもしれません

実は先週届いてたんですが,HDDのマウンタのネジがT6で外せず交換断念
ついT8だと思って油断してました

で,このトルクスドライバーを探すのが大変で3時間以上かかりました
T8は結構あるがT6がない
某ホームセンターで「トルクスのドライバー探してるんですけど・・・」って言ったら「はぁ〜???」って返されました・・・

そもそもHDDの固定に,しかもT6のような小さいネジにデカいトルクをかける必要がないので,タダのイジリ止め
マニュアルに交換方法を載せときながら,BTOを利用しないユーザへの嫌がらせですかね

無事HDDを交換してSnow Leopardを再インストール
その後,タイムマシンから復活のハズが・・・
なぜか何回やってもタイムマシンに接続中から進まない
しかたないのでこれまで使ってたディスクをUSBでつないで復活させました

移行アシスタントはとてもよくできていて,ほぼ作業不要で移行できました

うまく移行できなかったのは,

  • Finderのフォルダの表記の英語化
  • KeyRemap4MacBook
  • SIMBL

KeyRemap4MacBookの設定やSIMBLのバンドルはコピーされていたので,移行アシスタントが想定していない場所にあるカーネルのモジュールが一部移行できないようです
Finderの表記の件も,強引なコトをしてるので当然

しかし,TimeMachineがこのざまだとイザというとき心配ですね
初期セットアップ中ではなく,いったんセットアップを完了してから,以降アシスタントを利用するとうまくいくんでしょうか?

近いうちに,人柱マシンで試してみようと思います

ともあれ,ようやくメモリ8GB,HDDも500GBになり,完全移行の準備が整いました

Written by p0n in: PC | タグ:

TheBuckmaker WordPress Themes Webhosting, MP3, AAC & Co