Only Neat Thing

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

ユーザ用ツール

サイト用ツール


サイドバー

スタートページ

IBM ThinkPad X20/21

Windows XP

Lenovo ThinkPad X200

Intel DG965WH

Panasonic Let'snote CF-R

SSD

Hyper-V使いこなし

Misc

You are not allowed to perform this action
slipstream-updates

統合インストールISO作成

 OSのインストール後に、サービスパックや更新プログラムをインストールするのは面倒だ。その手順を省けるように、あらかじめ統合してあるインストールCDがあれば便利である。統合インストールイメージの作成に挑戦してみる。
 このように統合することを、英語では slipstream と呼ぶようだ。

 以下のスクリプト(BATファイル)で使う環境変数のリストを示す。

環境変数用途未指定時のデフォルト
SSSOURCE元のインストールCDのフォルダカレントフォルダ\SOURCE
SSTARGET統合イメージのフォルダカレントフォルダ\TARGET
SSUPDATE更新プログラムのフォルダカレントフォルダ\UPDATE

 こういう行が各スクリプトの先頭に置かれる。

if not defined SSSOURCE set SSSOURCE=%CD%\SOURCE
if not defined SSTARGET set SSTARGET=%CD%\TARGET
if not defined SSUPDATE set SSUPDATE=%CD%\UPDATE

インストールイメージの作成

準備

 インストールCDの内容をコピーする。準備のスクリプトは、

SSINIT.BAT
if not defined SSSOURCE set SSSOURCE=%CD%\SOURCE
if not defined SSTARGET set SSTARGET=%CD%\TARGET
 
rmdir /s /q %SSTARGET%
xcopy /e /h /i /y /q %SSSOURCE% %SSTARGET%
アクティベーションの回避(SLP化)を行いたい場合は、SSINIT.BATの実行後にOEMBIOS.*ファイル群の入れ替え(copyoem.bat)を行う必要がある。

SP3の統合

 /integrate オプションを使うことで、サービスパックをインストールイメージに統合することができる(参考:更新プログラムのコマンドラインスイッチ)。SP3の統合スクリプトは、

SSSP3.bat
if not defined SSTARGET set SSTARGET=%CD%\TARGET
if not defined SSUPDATE set SSUPDATE=%CD%\UPDATE
 
%SSUPDATE%\WindowsXP-KB936929-SP3-x86-JPN.exe /quiet /integrate:%SSTARGET%
echo %errorlevel%

 echo %errorlevel% の行が
 echo 0 と表示されるようなら統合に成功だ。

 XPにサービスパックをインストールする場合には、SPなしの状態にいきなりSP3をインストールすることはできないが、/integrate オプションで統合する場合にはその制限はない(SPなしのXPにSP3を統合することができる)。

 サービスパックに限らず更新プログラムは、実行時に管理者権限を必要とする。いちいちユーザーアカウント制御の確認画面がでてくるのはうっとうしいので、あらかじめコマンドプロンプトを管理者として実行しておくのが良い。

更新プログラムの統合

 XPの更新プログラム一覧 (1)にある更新プログラムも、/integrate オプションでインストールイメージに統合することができる。

%SSUPDATE%\WindowsXP-KB892130-ENU-x86.exe /quiet /integrate:%SSTARGET%
  if errorlevel 1 goto onerror

 XPの更新プログラム一覧 (1)には145個の更新プログラムがあるので、これをずらっと並べたスクリプトがこちら。

make.bat - XP更新プログラム統合スクリプト

 echo Success!
 Sucess!
 goto onexit と表示されれば統合成功だ。

 更新プログラムの日付の古い順に統合している。だが、なぜかKB2859537(Windows カーネルの脆弱性により、特権が昇格される)は、統合の順番が後ろの方だとエラーになってしまうので、最初に統合するようにしてある。

統合まとめ

 XPの更新プログラムのダウンロード の手順に従って更新プログラムをダウンロードし、

  SSINIT.batSSSP3.BATmake.bat

 の順に実行すれば、SOURCEのイメージとUPDATEの更新プログラムを統合したイメージがTARGETにできあがる。容量は約1GBに増えているはずだ。

ISOイメージの作成

 できあがったインストールイメージをCDにするために、まず起動可能なISOイメージを作る。必要なのは、ISOイメージ作成ソフトと、ブートイメージを抽出するソフトだ。

El Toritoブートイメージの読み出し

 起動可能なISOイメージを作成するには、El Toritoブートイメージが必要だ。このイメージはWindows Vista以降のものはAIK(Windows自動インストールキット)の中に etfsboot.com というファイル名で提供されているのだが、XPのものは提供されていない。自分でCD-ROMから抽出するしかないようだ。

 CD-ROMからEl Toritoブートイメージを抽出するWindows標準のコマンドは存在しないので、サードパーティ製のコマンドを使うほかない。2種類紹介する(BBIEは作者が公開を停止してしまったようなので、SoftPediaのリンクを掲載しておく)。

ソフト名サイトダイレクト
リンク
SoftPediaページ
Bart's Boot Image Extractor
(Nu2 Productions)
http://www.nu2.nu/bbie/削除済みSoftPedia
GetElTorito
(Olof Lagerkvist)
http://www.ltr-data.se/opencode.htmlgeteltorito.zipSoftPedia

 ZIPファイルをダウンロードしたら、中から.EXEファイルを取り出して、カレントフォルダかC:\Windowsにコピーしておく。

 CD-ROMドライブがZ:ドライブの場合には、

bbie z:
ren image1.bin boot.img

 とすると、image1.binというファイル名でブートイメージが抽出されるので、それをboot.imgにリネームするようにしている。

 GetElToritoを使うならば、

geteltorito \\.\z: >>boot.img

 と標準出力をファイルにリダイレクトする。ドライブ名の前に\\.\をつける必要がある。

 どちらもISOイメージファイルからの抽出もできる。できあがるファイルのサイズは2Kbyte。これはCD-ROMの1セクタに相当する。内容はNTLDRに制御を渡すコードになっている。

 私の把握している限りでは、XPのCD-ROMのブートイメージには2種類ある。一つは初期からSP2適用済み版までに使われたもの。もう一つはSP3適用済み版のもの。後者の中身を覗いてみると、AMD64という文字が見つかる。SP2とSP3の間にx64版XPがリリースされているので、ブートイメージもx64対応したのであろう。それぞれのSHA1ハッシュ値を掲載する。

SHA1ハッシュ値
SP2まで21d494d1d1565a99593635a2ca7ef1b9f549040a
SP314c7e7e14dff41b78e199ebcc7d30ed13b1aa067

(この他に、ソフト開発用に提供されたHome/Professional同梱CDが手元にある。そのブートローダーのハッシュ値は 37d23e284fca2e0e914fb7bb488fc87507b4bb27 になっている)。

El Toritoブートイメージの抽出については、このサイトが詳しい。
Understanding the Basics of El Torito by Slipstreaming an XP CD (Largely) Under Linux
http://will.tip.dhappy.org/projects/unsorted/xp_cds/eltorito_extraction.html

OSCDIMGでISOファイル作成

OSCDIMG.EXEの入手

 Windows上でISOファイルを作るツールはたくさんあるが、ここではMicrosoftのOSCDIMG.EXEを使ってみる。OSCDIMG.EXEは、Windows AIK(自動インストールキット)のコマンドの一つだ。現在AIKはWindows ADKという名称になっている。

Windows XP上で行う場合

 Windows XPで実行可能なAIK/ADKはVersion 1.0(Vista用)のみだ(2.0も使える)。ダウンロードセンターのページでダウンロードすると、vista_6000.16386.061101-2205-LRMAIK_JA.imgというファイルが手に入る(サイズは699MB)。これをCD-Rに焼く、あるいは拡張子を.ISOにリネームしてVirtual CD-ROM Control Panelを使ってマウントし、インストールする。

Windows AIK Version 1.0のインストール

 CD中のSTARTCD.EXEを実行するとインストーラが起動するので、Windows AIKセットアップ(W)を選んでインストールする。インストール先を変更しなければ、C:\Program Files\Windows AIK\Tools\PETools\の中にOSCDIMG.EXEが存在しているはずだ。

 AIKを使う予定がなければ、OSCDIMG.EXEを別のフォルダにコピーして、AIKはアンインストールしてかまわない。

 (この手順はWindows 10上でも実行可能だった)。

Windows 10上で行う場合

 Windows ADK のダウンロードページからWindows ADK for Windows 10 Version xxxx を入手すると書かれたリンクをクリックして、ADKのセットアップファイルをダウンロードする。

Windows 10 ADKでインストール機能を選択する

 ダウンロードしたファイル(adksetup.exe)を実行する。途中で、インストールする機能を選択する画面がある。OSCDIMG.EXEを得たいだけなら、Deployment Toolsのみ選択すれば、インストールにかかる時間も容量も少なくて済む。

 %ProgramFiles(x86)%\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\x86\Oscdimg\OSCDIMG.EXEが存在しているはずだ。

 ADKを使う予定がなければ、OSCDIMG.EXEを別のフォルダにコピーして、ADKはアンインストールしてかまわない。

ISOファイル作成

 OSCDIMG.EXEをカレントフォルダかC:\Windowsにコピーしておく。

makeiso.bat
oscdimg -n -m -o -bboot.img -lSSXP %SSTARGET% SSXP.iso
Oscdimg のコマンド ライン オプション
-n長いファイル名を使用可能にする。
-mイメージの最大サイズ制限を無視します。
-oMD5 ハッシュ アルゴリズムを使用してファイルを比較し、重複するファイルを 1 回だけエンコードすることで、記憶域を最適化します。
-bEl Torito ブート セクタ ファイルの場所を指定します。
-lボリューム ラベルを指定します。

ISOイメージをDVD-Rに書き込む

 できあがったISOファイルをDVD-Rに書き込む(本当はCD-Rにしたかったのだが、サイズが700MBを越えてしまった)。MicrosoftのCDBURN.EXE/DVDBURN.EXEを使うことにする。Windows Server 2003 Resource Kit Tools の中にある。

 %ProgramFiles(x86)%\Windows Resource Kits\Tools にインストールされ、環境変数PATHも設定される。

dvdburn z: SSXP.iso

 DVD-RWを消去してから書き込む場合は/eraseオプションを付ける。

dvdburn z: SSXP.iso /erase

統合インストールDVD完成

 これで統合インストールDVDが完成。

  • Service Pack 3と更新プログラム140あまりの統合
  • Internet Explorer 6 のまま
  • Media Player 9 のまま
  • IE6、MP9の更新プログラムは未インストール
  • .NET Framework は未インストール

統合インストールISOでXPをインストールした

 インストールした画面。

 2006年にThinkPad X20からX21に乗り換えたとき、XPを再インストールしようと決めた。だが、SP2適用済みのインストールCDを持っていなかった。そうなると、SPなしのXPをインストールして、次にSP2をインストールすることになる。当時は20GBのHDDに開発ツールなどを詰め込んでいたので、少しでもHDDの空き容量を増やしたかった。そのためには、SP2のアンインストール情報が残るのは嬉しくない。だから、SP2適用済みのインストールCDを自作しようと考えた。だが時間が取れず、諦めてしまった。
 さらに、2009年にX200に乗り換えるときに、X21にXPを再インストールしようと思い立ち、「どうせだったらSP3統合版を作ってインストールしよう」とnLiteをいじくっていたのだが、それも中断・放置してしまった。

 2016年末に、X21再生を思い立ち、統合インストールISO作りを始めたのだが、ダウンロードセンターから多数の更新プログラムが消えているなど、困難が多かった。仕事が忙しくて時間が割けなかったり、途中でマルウェアにPCがやられたりもしたが、約7ヶ月かかって、ここまで到達した。最初の取り組みから10年以上経過しているのだから、感無量である(大袈裟)。

 だが、IE6/MP9のままというのはイマイチだし、.NET Frameworkのインストールと更新も面倒だ。XPのインストール後に、IE8/WMP11/.NET Frameworkなどを一括してインストールするサイレント・インストーラ を作ってみた。

1)
サポートOSは不明
slipstream-updates.txt · 最終更新: 2019/09/29 00:32 by root

ページ用ツール