2008年11月25日火曜日

Macのファイルが壊れた

MacOS X Tiger のとあるドライブ上に保存された動画ファイルがアクセス不能になった.再生中に途中で止まってしまうのだ.

Veohから落とした動画ファイルだったので,ファイル内のデータに一部不正が存在する可能性があると考えた.またこの動画は AVI で, Mac では AVI の再生時にしばしば不具合を生じるので,取り敢えず Windowsマシンにコピーしてから中身を検証してみようと思い,コピー操作をしたら Mac 側で I/O エラーが出た(エラーコード -36).

そこでディスクユーティリティーで当該ボリュームをテストしてみたが不具合無し.どうやらファイルの存在する記憶域が物理的に破損しているようだ.

うーむ.困った.ハードディスクの表面テストをしなければならないが,手元には OS9 用の Norton Utility しかない.OS 9 で再起動し Norton Utility で OS X の入ったドライブに手を加えるのはさすがに怖い.

OS X 用のユーティリティーを探さねば.それまでこのドライブへのアクセスは極力避けよう.不便だが.

===================================================
ここまでは1月程前の話.TechTool Pro 4 が良さそうだとあたりを付け,購入.
早速表面テストを実行してみたらやはり不正ブロックが1つ見つかった.壊れたファイルがこのブロック内にあるのかどうかは不明だが,この不正ブロックはなんとかしなければならない.

ところが,TechTool Pro には見つけた不良ブロックを使用できないように設定する機能がなかった.マニュアルによると,

「ATAドライブのドライブコントローラは不良ブロックが見つかるとそれを自動的に閉鎖しようとする」

らしい.だからTechTool Pro にとっては「わしゃ知らん」ということか.

それにしても,ドライブコントローラに不良ブロックを見つけさせるにはどうしたらよいのだろう.
壊れた動画を再生している時,不良ブロックに出会っているのに何もしていないという事を考えると,不良ブロックをファイルが占有しているときは何もできないのだと予想される.

怖いけれども,破損ファイルを一度消してみるか.
消す前にボリュームのバックアップを取ろうと Carbon Copy Cloner で当該ボリュームの差分バックアップを試みるが,やはり破損ファイルのコピーに失敗したところで作業が止まってしまう.

昔 Carbon Copy Cloner でバックアップしたボリュームと現ボリュームの差を TriBackup の試用版で調べ,手動で差分バックアップを取ろうかと思ったが,OSが作るファイルに多量の相違が見つかったので面倒になってやめた.

で,「えいやっ」と破損ファイルを消す.
で,当該ボリュームにひたすら画像ファイルをコピーし,空きスペースを全て画像で埋めてみた.その数1万8千個.
で,今度はその画像ファイルを別のボリュームにひたすらコピー.不良ブロック上に書かれた画像ファイルであれば,コピーする際に再度I/Oエラーが起きるはず.
しかし,エラーは全く発生しない.
で,当該ボリュームにコピーした画像ファイルを全てゴミ箱に入れ,「確実にゴミ箱を空にする」を実行.所要時間300分.
で,再度 TechTool Pro で表面テスト.
で,結果はOK!不良ブロックは発見されなかったヾ(* ̄▽ ̄)ノ

どうやら,この作業の間にドライブコントローラが不良ブロックを見つけて閉鎖してくれたらしい.
何とも運任せのリカバリーだが...取り敢えず問題は解決.
 

このコマンドを処理するのに必要な記憶域をサーバーで確保できません

Windows 2000 のマシンに新しい外付けHDを増設し,その中のフォルダに共有設定を施したが,XPからもOS X からも当該フォルダにアクセスできない.XPマシンからアクセスを試みた際表示されるエラーメッセージは
「このコマンドを処理するのに必要な記憶域をサーバーで確保できません」
である.
これまで,Windows2000の色々なドライブのフォルダを8個ほど同時に外から見えるようにして使ってきたが,なんら不具合は無かったので,突然のトラブルである.

新しく増設したドライブの容量が大きいためかと思ったが,調べてみたらまたもやレジストリをいじらなければ解決しない問題であることが分かった.
相変わらず不親切なOSである.何故にコントロールパネルで設定できるような設計にしておかないのか.

以下はH.M.PAGE blogからの引用.一部改変.
--------------------------------------------------------------------ここから
「スタート」→「ファイル名を指定して実行」を選ぶ。
regedit と入力してEnter。
次のキーを選ぶ。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services
\LanmanServer\Parameters
「編集」→「新規」→「DWORD値」を選ぶ。
「新しい値 #1」の名前を「IRPStackSize」にする。
「IRPstackSize」をクリックして、「10進」を選ぶ。
値のデータの部分に「15」を入力して「OK」を押す。
再起動。
--------------------------------------------------------------------ここまで

この通りやったが問題が解決しない.さらに調べると,
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q177078
には
・IRPStackSizeが存在しない場合のデフォルト値は15であること,
・3増やすのが良いこと,
が書かれていたので,IRPStackSizeの値を18にした結果,上手くいった.
 

2008年11月10日月曜日

Windows2000再インストール時の大トラブル

過日、「 Windows2000 を再インストールした」 と日記に書いたが、実はその際余りにも衝撃的な致命的ダメージが発生してしまった。事態の建て直しばかりか、気持ちが立ち直るのにも大変な時間を要する程の一大事。気持ちがようやく落ち着いてきたので、そのときの状況をメモしておく。

筆者は160GBの内蔵型ハードディスクをIDE接続のセカンダリドライブとして使用しているが、Windows 2000標準のIDEドライバは 48bit LBAをサポートしておらず、137GB以上の領域が認識できない。つまり、160GBのハードディスクであっても、137GBしかないと認識されてしまう。

この事をすっかり忘れていた!!

既に160GBフルに領域を確保したセカンダリドライブを接続したまま Windows2000を再インストールし、なにも気づかずこのドライブのファイルを消したり書いたりした結果、ぶっ壊れたファイルが続出(泣)。20GB超のファイルがお亡くなりになった。嗚呼orz...

しかし、トラブルはそれだけではなかった。

ファイルの消失で被った被害の甚大さに鬱々としながらも、とりあえずリカバリーに着手。生き残ったファイルを別ドライブに退避させ、ハードディスクに添付されていたユーティリティーを使ってOSが137GB以上のディスクでも認識できるようレジストリを書き換えてみたものの、当該ドライブが160GBであるということをOSが認識しなくなった。ディスクを再フォーマットしても結果は同じ。

起動時にF12を押してBIOS画面を出すと、セカンダリドライブの容量は160GBとなっていたので、ハード的には問題ないのだが、OSの方が馬鹿になっている。セカンダリドライブを外した状態でOSを再インストールし、137GB以上に対応するようレジストリを書き換えてからセカンダリドライブを接続すればうまくいくのかも知れないが、そこまでする気力はない。

そこで何か良い方法はないものかとWebを徘徊しているうちに、一縷の望みが沸いてきた。
Intelアプリケーション・アクセラレータ(Intel Application Accelerator、以下IAA)を利用すれば、大容量ドライブが認識できるようになるという情報を発見したのだ。

 137Gbytes超IDEディスクの正しい使い方
 進化するIntel Application Accelerator

幸い、マシンの環境がIAAの動作条件を満足していたので、さっそくIntelのサイトからWindows 2000 用の Intel® Application Acceleratorをダウンロード。 そのほか、筆者のマシンで使用しているチップセット(800シリーズ)のINFも最新版にアップデートしておく。

祈る気持ちでマシンを再起動し、「コンピュータの管理」ツールで「ディスクの管理」画面を開くと、セカンダリドライブの容量が無事160GBと認識される運びとなった。めでたしめでたし。

このあとドライブから退避させていたファイルを呼び戻し、障害前の状態へ復旧させるためには多大な時間と労力が必要となるのだが、、、とりあえず最大の難関は越えたようだ。
 

2008年11月9日日曜日

PSTricksのバージョンアップ

以前MacOS9用の MacpTeX 2.1.9 上で作成した、PSTricks パッケージを使った TeX のソースを OS X 上で再コンパイルしてみたらエラー続出でさっぱりわやになっていた。

そういえば、以前 MacOS9を使っていた頃、PSTricksの新バージョンが出ていたのでそれを導入してみた所、同じ症状が出たことを思い出した。当時も色々問題解決を試みたがどうにもならなず閉口してしまい、結局バージョンアップは断念したのだった。

ならば、OS X 上の PSTricks も旧バージョンに戻さねばならぬか、と思ったが、バージョンを下げるのも癪なので、再び色々調べてみたら、PSTricks だけでなく、PSTricks が内部で使用する他のパッケージも幾つかバージョンを上げなければならない、といったことが分かってきた。

この事自体は、teTeX-3.0 の中に含まれていた PSTricks が、そのままの状態で正常に動作しないという訝しい状況を説明してくれないが、 teTeX-3.0 に含まれるパッケージ相互の連関が上手く取れていない可能性があることを示唆しているのかな、と思い、とりあえず
   http://tug.ctan.org/tex-archive/graphics/pstricks/
からPSTricksの最新版を落として導入してみた。すると、、、

・・・なんの事はない。昔作ったPSTricksを使って書いた図のソースが難なくコンパイルできた。そりゃコンパイルが通った事自体は嬉しいが、いささか拍子抜けの感も否めない。以前さんざ苦労したのはなんだったのか。PSTricksのパッケージ自体が不味かったのではないかという疑惑さえ頭をもたげてしまう。

何しろ、pstricks.sty の日付が 2008-10-31 となっているのだ。つい先日のことではないか。PSTricksはいまだに日々進歩しつづけているらしい。コンパイルが通るようになった理由をあれこれ追求したいのは山々だが、昔作った資源が使えるようになったのだから、もう深追いはやめよう。そんな時間もないし。
 

gz、tgz 等の解凍・圧縮方法

UNIX 系のアプリケーションやパッケージは大抵 gz や tgz で圧縮されているが、日頃こういったファイルは使わないので解凍法をすぐ忘れてしまう。
Linux 上での解凍・圧縮方法」というページに、解凍に使用するコマンドと使用例が非常に要領よく整理されていたので、引用させていただく。

圧縮書庫形式 拡張子 解凍コマンド
TAR 形式+GZIP 形式 〜.tgz, 〜.tar.gz gzip -dc filename | tar xvf -
GNU tarが使える時(zオプションを使える時)
tar zxvf filename
LZH 形式 〜.lzh lha e filename
もしくは
lha x filename
ZIP 形式 〜.zip unzip filename
bzip2(BZ2) 形式 〜.bz2 bzip2 -dc filename
もしくは
bunzip2 -c filename
TAR.BZ2(TBZ) 形式 〜.tar.bz2, 〜.tbz bzip2 -dc filename | tar xvf -
y/z/I オプションを使えるtarコマンドを持っている時
tar yxvf filename
tar zxvf filename
tar Ixvf filename
TAR.Z(TAZ) 形式 〜.tar.Z tar zxvf filename
もしくは
uncompress -c filename | tar xvf -
gzip(GZ) 形式 〜.gz gunzip filename
もしくは
gzip -dc filename
compress(Z) 形式 〜.Z uncompress filename
もしくは
compress -d filename
TAR 形式 〜.tar tar xvf filename
ARJ 形式 〜.arj unarj filename


TAR オプション一覧

tar.gzファイルを展開せずに中身を確認する
% zcat FILE.tar.gz | tar tvf -
もしくは、
% tar tvzf FILE.tar.gz
tarの展開で時間を短くする(-vオプション=詳細モードを表示しない)
% tar xzf FILE.tar.gz
-c, --create 新しいアーカイブを作成する
-d, --diff, --compare アーカイブとファイル・システムとの差分を取る
--delete アーカイブから削除する(磁気テープ上の tarfile に 使 う事は出来ない)
-r, --append アーカイブの最後にファイルを追加する
-t, --list アーカイブ内容の一覧を表示する
-u, --update ア ーカイブ内の同名のファイルより新しいものだけを追加する
-x, --extract, --get アーカイブからファイルを抽出する
z, gzipを通し、tar.gz形式のファイルを一度に圧縮・解凍する。
I, bzip2を通し、tar.bz2形式のファイルを一度に圧縮・解凍する。



UNCOMPRESS(COMPRESS) オプション一覧
圧縮ファイル名は元ファイル名の最後に .Z を付けたものとなります。
Lempel-Zipアルゴリズムを使用して圧縮しており、昔はよく使われていましたが、 今はより圧縮率の高い gzip があるので、特に理由がない限り gzip を使う方がよいと思われます。
-d 圧縮ファイルを展開する
-v ファイルが展開(圧縮)されるたびにメッセージを表示する
-c 圧縮ファイルを標準出力し,元ファイルを残す
-r 再起的にディレクトリ内を展開(圧縮)する



GUNZIP(GZIP) オプション一覧
-d 圧縮ファイルを展開する
-v ファイルが展開(圧縮)されるたびにメッセージを表示する
-c 圧縮ファイルを標準出力し,元ファイルを残す
-r 再起的にディレクトリ内を展開(圧縮)する
-l 圧縮ファイルのリストを表示する
-n 元のファイル名とタイムスタンプは保存しない

TeX — Tipa パッケージ のインストール

TeX で発音記号をタイプセットする必要が生じたので、
   The Comprehensive LaTeX Symbol List
を繰ってみたところ、Tipa というパッケージで実現できることが判明。

自分が使用している teTeX-3.0/ASCII pTeX-3.1.9 の中には含まれていなかったので、さっそく
   CTAN/tex-archive/fonts/tipa
へ拾いにいく。最新バージョンは1.3だった。
奥村氏の TeX Wiki にある説明通りインストールしたところ、難なく導入できた。

英語の音を表記するのに必要な発音記号には非常に簡略化された入力方法が準備されているのでコーディングも楽々。例えば、
   accuracy なら、¥textipa{\ae kjUr@si
   concentrate なら、¥textipa{k¥'Ans@ntr¥`eit}
といった塩梅。素晴らしい。

発音記号を表示したときの文字間隔が若干狭い点にいささか不満を感じるが、これだけのことができるのだから文句は言うまい。