Only Neat Thing

たったひとつの冴えたやり方

ユーザ用ツール

サイト用ツール


You are not allowed to perform this action
honeinmysidewalk

Holes In My Sidewalk

 人生の道は「落とし穴」だらけだ。私がどうやった落とし穴から這い上がったか。その情報は、あなたにも役に立つかも知れない。

Dokuwikiで503エラー

犯人ロリポップ!のWAF機能

 このサイトではDokuWiki を使っている。しかし、インストールして記事を書いていると、503エラーが発生するようになった。現象としては、

  • 記事の文章量が長くなってくると、プレビューしただけで503エラー(保存してない内容は失われる)
  • メディアマネージャーでファイルをアップロードすると(転送が終わったところで)503エラー

 これは不便だ。すでに稼働している他のDokuWikiと設定を比較してみても違いはない。何がいけないのか?

 DokuWiki User Forumを検索してみると、503エラーをくらっている人は意外と多く、php.iniやサーバーの設定を変えろというアドバイスが多かった。

 そう言われても、レンタルの共用サーバーに変更できる設定なんてほとんどない。・・・いや待て、なんかあったぞ。借りているロリポップ!のサーバーには WAF(ウェブアプリケーションファイアウォール) なる機能があり、サイトへの不正アクセスを防いでくれるんだそうだ。しかも、その設定はドメインごとだ。

ロリポップ!のWAF設定
 サーバーのコントロールパネルでWAFの機能を無効にしたら、あっさり解決した。エラーログにはajax.phpがいくつも記録されていたよ。

サーバーのコントロールパネルでWAFの機能を無効にする。
犯人CyberLink ISO Viewer

 ISOファイルの中身を確認したいときがある。そんな時には、CyberLinkISO Viewer を使っていた。これはメーカー製PCにプリインストールされていたもので、実質無料で手に入ったものだから、ありがたく使わせもらっていた。このViewerにはISOからファイルを抽出する機能もある。それが落とし穴を作ろうとは思ってもみなかった。

 ある日、nLite を使ってSP3を適用済みのXPのインストールCDを作ろうと思いたった。そこでXPのRTMのISOファイルをISO Viewerで開き、その全ファイルをハードディスクのフォルダに抽出した。

ISO Viwer

 このフォルダにnLiteでSP3を適用し、ブータブルCDイメージを作成した。それを使ってHyper-VでXPのインストールを試みると・・・、ファイルが足りないとぬかすではないか!

_default.pifをコピーできません

 ファイル _default.pif をコピーできません。

 これ以外にも、XPのインストーラーが「コピーできない」と訴えるファイルは十数個もある。これはnLiteのバグか? いや、SP+メーカー で作ってもまったく同じ結果になるし・・。

 さんざん頭を悩ませて、ISO Viewerの抽出先のフォルダと元のISOファイルをBeyond Compareで比較してみた。

ISOと抽出先フォルダの比較

 かなり多くのファイルが抽出されていない! どうも、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.

 これによると、お薦めなのは IsoBusterDaemon ToolsWinRar だ。
 時間があるときに IsoBuster を試してみることにしている。(注記:WinRarのISOハンドリングも怪しい)。

Win8.1/10なら素直にISOをマウントする。あるいはIsoBusterを使う。

 この時は、「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 なるダイアログに行く手を阻まれる事になった。何度ログインしようとしても、このエラーをくらうばかり。選べる選択肢はシャットダウンかリブートだけ。
 ネットで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のアクティベーション(ライセンス認証)に関係しているようだ。
 サービスパックは上記のコマンドラインを使って、自分で統合すればいいのか。

サービスパックの統合はnLiteを使わず、コマンドライン・スイッチを使ったほうがいい。
honeinmysidewalk.txt · 最終更新: 2019/06/19 01:07 by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki