目次
Holes In My Sidewalk
人生の道は「落とし穴」だらけだ。私がどうやった落とし穴から這い上がったか。その情報は、あなたにも役に立つかも知れない。
Dokuwikiで503エラー
犯人 | ロリポップ!のWAF機能 |
このサイトではDokuWiki を使っている。しかし、インストールして記事を書いていると、503エラーが発生するようになった。現象としては、
- 記事の文章量が長くなってくると、プレビューしただけで503エラー(保存してない内容は失われる)
- メディアマネージャーでファイルをアップロードすると(転送が終わったところで)503エラー
これは不便だ。すでに稼働している他のDokuWikiと設定を比較してみても違いはない。何がいけないのか?
DokuWiki User Forumを検索してみると、503エラーをくらっている人は意外と多く、php.iniやサーバーの設定を変えろというアドバイスが多かった。
そう言われても、レンタルの共用サーバーに変更できる設定なんてほとんどない。・・・いや待て、なんかあったぞ。借りているロリポップ!のサーバーには WAF(ウェブアプリケーションファイアウォール) なる機能があり、サイトへの不正アクセスを防いでくれるんだそうだ。しかも、その設定はドメインごとだ。
サーバーのコントロールパネルでWAFの機能を無効にしたら、あっさり解決した。エラーログにはajax.phpがいくつも記録されていたよ。
CyberLink ISO Viewerの落とし穴
犯人 | CyberLink ISO Viewer |
ISOファイルの中身を確認したいときがある。そんな時には、CyberLink の ISO Viewer を使っていた。これはメーカー製PCにプリインストールされていたもので、実質無料で手に入ったものだから、ありがたく使わせもらっていた。このViewerにはISOからファイルを抽出する機能もある。それが落とし穴を作ろうとは思ってもみなかった。
ある日、nLite を使ってSP3を適用済みのXPのインストールCDを作ろうと思いたった。そこでXPのRTMのISOファイルをISO Viewerで開き、その全ファイルをハードディスクのフォルダに抽出した。
このフォルダにnLiteでSP3を適用し、ブータブルCDイメージを作成した。それを使ってHyper-VでXPのインストールを試みると・・・、ファイルが足りないとぬかすではないか!
ファイル _default.pif をコピーできません。
これ以外にも、XPのインストーラーが「コピーできない」と訴えるファイルは十数個もある。これはnLiteのバグか? いや、SP+メーカー で作ってもまったく同じ結果になるし・・。
さんざん頭を悩ませて、ISO Viewerの抽出先のフォルダと元のISOファイルをBeyond Compareで比較してみた。
かなり多くのファイルが抽出されていない! どうも、ISO ViewerはISOファイルの中のファイルを抽出するときいくつかファイルを見落とすようだ。ISO Viewerが信用できないことは分かったが、では代わりにどんなツールを使えば良いのか。Win 8.1以降ならISOをマウントして見ることもできるが、いちいちアンマウントするのも面倒だし、何らかの信頼できるツールがあったほうがいい。
そこで探して見つけたのが、Microsoft の Office Deployment Support Team Blogのエントリ。
How to extract the contents from an .ISO file without burning the .ISO to disc.
これによると、お薦めなのは IsoBuster、Daemon Tools、WinRar だ。
時間があるときに IsoBuster を試してみることにしている。(注記:WinRarのISOハンドリングも怪しい)。
この時は、「nLiteよ、お前を疑ってすまなかった」という申し訳ない気持ちだったのだが、次にはそのnLiteに裏切られることになる。
XPのSP3統合で、プロダクトキーの無効やエラー0x80070002
犯人 | nLiteのサービスパック統合機能 |
ISO Viewerの落とし穴を抜け出し、意気揚々とnLiteでWindows XPのSP3統合インストールCDの作成に取りかかった。
元のCD-ROMは2002年のRTMのProfessional版だ。CD-ROMの中身をHDDのフォルダにコピーし、nLiteを使って、いきなりSP3を統合した。できあがったISOをテストするために Hyper-V 上にインストールしてみたところ・・・。
入力したプロダクトキーは無効です。と、つれないエラーメッセージが表示された。手持ちのプロダクトキーをいくつか入力してみたのだが、どれもエラーになってしまう。ものは試しと、Google先生にSP3用だというプロダクトキーを教えてもらって入力してみたところ、インストールを先に進めることができた(この時点で自ら落とし穴を掘っている)。しかし、インストールが終わって、ログインしようとすると・・・。
問題が発生したため、このコンピュータのライセンスを正しく確認することができません。エラー コード 0x80070002 なるダイアログに行く手を阻まれる事になった。何度ログインしようとしても、このエラーをくらうばかり。選べる選択肢はシャットダウンかリブートだけ。
ネットで0x80070002エラーへの対策を調べ、セーフモードで起動していろいろ試してみたが、すべて無駄であった。これで半日潰してしまった。
Google先生に頭を下げて教えを請うと、このあたり
http://dsk.jp/nlite_xp_sp3/
http://ameblo.jp/saizyok908/entry-11229188622.html
のページに、nLiteでXPのSP3を統合するとプロダクトキーが通らなくなると書かれている。
対策は「SP+メーカーを使う」こと。
SP+メーカーを使って、RTMに(いきなり)SP3を統合し、そのISOでインストールしたところ、RTM用のプロダクトキーで無事にXPのインストールが完了した。
違いはどこに?
では、nLiteで作ったISOファイルと、SP+メーカーで作ったISOファイルを比べてみよう。
三つのファイルが違っている。AUTOLOGIN.EXEはSP+メーカーの作ったISOにしかない。それからDPCDLL.DL_とPIDGEN.DLLの二つのファイルの内容が違っている。
SP+メーカー様謹製のISOファイルでは
AUTOLOGIN.EXE 50,688 2013/03/24 0:00:00 DPCDLL.DL_ 50,387 2008/04/14 7:55:50 PIDGEN.DLL 24,064 2008/04/14 7:55:22
一方、nLite様のお作りになられたISOファイルはこうなっていた。
DPCDLL.DL_ 50,597 2008/04/14 6:54:58 PIDGEN.DLL 24,064 2008/04/14 6:53:58
PIDGEN.DLLはファイルサイズは同一だが、内容は異なっている。
ちなみに、あらかじめサービスパックを統合したインストレーションファイルを作っておいたらどうなるか? 統合するためには、更新プログラムのコマンドラインスイッチを使って、例えば
WindowsXP-KB936929-SP3-x86-JPN.EXE /integrate:path
とする(pathはインストレーションファイルを置いたフォルダのフルパス)。これをnLiteでそのままISOにしてみると、
DPCDLL.DL_ 50,387 2008/04/14 7:55:50 PIDGEN.DLL 24,064 2008/04/14 7:55:22
AUTOLOGIN.EXEがないだけで、残りの二つのファイルはSP+メーカーと同じになった。
つまり、nLiteでサービスパックを統合しようとすると、nLiteがDPCDLL.DL_とPIDGEN.DLLの内容を変更してしまうのがトラブルの原因のようだ。ここ や ここ の情報を総合すると、この二つのファイルはXPのアクティベーション(ライセンス認証)に関係しているようだ。
サービスパックは上記のコマンドラインを使って、自分で統合すればいいのか。