Palm84 某所の日記

死のうは一定、しのびクマには何しよぞ...

CDドライブなしで Windows XP をクリーン【再】インストールしてみた version.2

2010.8.8 ちょっと改訂
2010.8.22 あると便利なツール類 追記

※上記の改訂版だったりします。。

CDブートに比べるとかかる工数はかなり増えます。また、事前事後の準備・確認作業は必須です。なので、どうしてもCDドライブが使えない際の緊急手段かなと。MSのサイトにもあんまり情報ありませんから裏技的風味満点(つまり「保証」なし?)なのかもしれません。と言いつつも、私はDOSからのインストールに慣れちゃってたりします。

お約束ですみませんけど、「自己責任」*1ということで。私は下記の方法で失敗したことないんですけど、世の中何が起こるかわかりませんからね(意味不明な言い訳...)。

※ NTFSなCドライブにWindows XP がインストールされている、またはインストールしたい。Cドライブ以外のWindows上で認識可能なパーティションをDドライブ。と“仮定”してます。

メーカー製パソコンでは注意

Windows(のみ)のセットアップを開始するとMBR(マスターブートレコード)が書き換えられます(正確にはMBR内の「ブートストラップローダ」かな)。ハードディスクから直接起動するタイプのリカバリープログラムが実行できなくなる場合があります。MBRはバックアップがない場合は復元が非常に困難なので注意しましょう。取扱説明書などに記述のない操作はしない方が安全かと思います。

【追記】USBメモリブート

書くの忘れてましたー(汗)。USBメモリブートでも(※ 非対応PCでは PLoP Boot Manager 使用で)一応できました。

ただ、一発でうまく行かない場合も多かったのでチト試行錯誤が必要かもしれません。

INDEX

ウンチクetc

Windows XP ではインストールCDからブートできない場合、HD上などに保存したフォルダから winnt.exe / winnt32.exe を実行することによりセットアップが可能です。

注意点として、winnt / winnt32 は直接インストールを開始するわけではなく、まず「Windows セットアップ」ブート用一時ファイルをパーティションにコピーして、「Windows セットアップ」ブート可能にするプログラムということ。これらのファイルがCドライブにあるとCドライブのフォーマットができません。よって、winnt なら事前にフォーマット(DOSなのでNTFSではなくFAT32で)、winnt32 ならDドライブからブートさせる、など事前処理が必要となるわけですね。

DOS上なら【winnt.exe】

Windows XP がインストールされていない、あるいは起動できない場合はこの方法かな。パーティションが1つしかない場合も。

  • 必要条件
    • ブート可能なFDドライブ。または、PXEネットワークブート or USBメモリブートで代用可能であること。
    • winnt.exe 実行前に CドライブをFAT32でフォーマットすること

ファイルのコピー時間が異常に長くかかったり、DOS起動ディスクの作成などかなり面倒なのですが、数十回ほど実行して失敗したことはないので結構確実な方法であると言えるかも。

シコシコがんばれば(何)、ネットワークブートでインストールも可能です。

FDブートさえできない場合、手間はめっちゃかかりますが取り外したHDにDOSをインストールするとかでも。

Windows 上なら【winnt32.exe】

5回しか確認してないので、不確定要素がありそうな。とは言え、かなり裏技風味ですがこの方法ではFD/CDドライブとも不要なので楽かも。

  • 必要条件
    • Windows XP が起動可能
    • Cドライブ以外のDドライブなどの基本領域(プライマリパーティション)。空き容量は1.5GB程あれば。
Windows PE(2.0以上)で【winnt32.exe】を実行

便利な時代になったもんだNE!(何)

Windows PE(2.0以上)から winnt32.exe の実行でセットアップが可能です。但し、CDブート不可という条件下ではこれを HD, USBメモリ, ネットワークのいずれかでブートさせる設定が必要になります。注意点はありますが、ネットワークの利用や(※ NICが対応していれば)、フォーマット・パーティション作成なども可能なのでメンテナンス用として重宝するかも。

PEはオンメモリで起動するので、PE起動後 winnt32 実行前にHDのフォーマットができます。

DOS上で【winnt.exe】を実行

古いDOSでは大容量(?)HDドライブをうまく認識できないことがあるかも。Win98起動ディスクの fdisk ではパッチが当たっていない場合 64GB 以上を認識できない。BIOSの対応にもよりますが 160GB 以上のHDなどでは事前にパーティションを切っておく必要があるかも。

おおまか手順は

  1. CドライブをFAT32でフォーマット
  2. Cドライブのアクティブ設定の確認
    • アクティブ化は、fdisk コマンド、GRUB起動ディスク、Linux LiveCDなどで可能
  3. i386フォルダをコピー
  4. DOS起動ディスクからブートして、winnt.exe を実行

または、

  1. CドライブをFAT32でフォーマット
  2. Cドライブのアクティブ設定の確認
    • アクティブ化は、fdisk コマンド、GRUB起動ディスク、Linux LiveCDなどで可能
  3. DOS起動ディスクからブートして、ネットワークドライブから winnt.exe を実行
参考

Windows XP上で【winnt32.exe】を実行

尚、Dドライブが基本領域(プライマリパーティション)ではなく、論理領域(論理ドライブ)の場合は基本的に無理です。(※さらなる裏技?があるかもしれません...)

緊急起動ディスクの準備

この方法を実行する前に、万が一(もしかして十が一ぐらいかもしれない)失敗があるとブートできる手段がなくなってしまいます。Windows 緊急起動ディスクの準備をおすすめしておきます。FDドライブが必要になってしまいますが...。

SP3統合

XPセットアップファイルの Service Pack のバージョンが現状より古い場合は(※ 多分実行できないので)、SP3ファイルを統合しておきませう。(※ SPなしの場合はSP2→SP3の段階的統合が必要かもしれません?)

  1. フォルダ作成 C:\Test D:\Test とか
  2. XPセットアップCDの内容(または i386 フォルダごと)を D:\Test にコピー
  3. SP3ファイルを保存したディレクトリに移動し下記コマンド実行
WindowsXP-KB936929-SP3-x86-JPN.exe /integrate:D:\test

※ 下記はSP2の例ですが参考に

下記ページの手法を踏襲させて頂きました。(というかそのままです...多謝)

おおまかな手順は以下のとおり。

  1. XPブート用ファイルをDドライブにコピーする
  2. アクティブパーティションをDドライブに変更する
  3. 念のためDドライブからのブートを確認
  4. インストールCD内のi386フォルダをDドライブへコピーして winnt32.exe を実行
  5. CドライブにコピーされたファイルをDドライブに移動
  6. 再起動して「Windowsセットアップ」をブート
XPブート用ファイルをDドライブにコピーする

Cドライブルートの以下のファイルをDドライブルートへコピー

  • ntldr
  • boot.ini
  • NTDETECT.COM
  • bootfont.bin

コマンド プロンプトから

C:\Documents and Settings\palm84>pushd c:\

C:\>xcopy /h boot.ini d:\
C:boot.ini
1 個のファイルをコピーしました

C:\>xcopy /h bootfont.bin d:\
C:bootfont.bin
1 個のファイルをコピーしました

C:\>xcopy /h NTDETECT.COM d:\
C:NTDETECT.COM
1 個のファイルをコピーしました

C:\>xcopy /h ntldr d:\
C:ntldr
1 個のファイルをコピーしました

Dドライブから起動したことがわかるように boot.ini の表示文字列をちょっと変更しとくといいかな。コマンドプロンプトから

※ってマルチブートじゃないとメニューは出ないですね(汗)。

pushd d:\
attrib -s -h -r boot.ini
notepad boot.ini

最下行をコピー追記してセーフモード行でも作っときましょかね。 /safeboot:minimalを追記します(選択が複数ないと起動時にメニューは出ない)。下記はあくまで私の環境での例ですけど。

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP" /fastdetect /NoExecute=OptIn
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Safe Mode minimal" /fastdetect /NoExecute=OptIn /safeboot:minimal
アクティブパーティションをDドライブに変更する
  • 「ディスクの管理」(ファイル名を指定して実行 diskmgmt.msc )を起動
  • Dドライブを右クリック
  • 「パーティションをアクティブとしてマーク」をクリック

マルチブート状態では、アクティブパーティションが「システム」で稼働中のWindowsがインストールされているパーティションが「ブート」と表示されます。なんか逆なんではという気もしますが...

念のためブート確認

正常にブートできるか確認します。起動後は「ディスクの管理」でDドライブが「システム」となっているかも確認。

Dドライブからブートできない、アクティブパーティションが変更されない場合は、「Windows セットアップ」がブートできないと思われます。DOS上からフォーマットしてのインストール(winnt.exe)を試す方がいいかと

と言いつつも...GRUBやMBMの起動フロッピーでブートして、ブートさせるパーティションを指定すれば「Windows セットアップ」のブートは可能だったりしました。ただ、不都合の起きる可能性(ドライブレターが変わってしまうとか)もあるので、あまりおすすめはできないかなと。

winnt32.exe を実行

ネットワークドライブを割り当てれば、ネットワークからの直接実行も可能でした。

winnt32.exe をオプション付で実行します。

  • ネットワークなどからCD内のi386フォルダをDドライブへコピー(CD丸ごとでも)
  • コマンドプロンプトから winnt32.exe をnorebootオプション付で実行
pushd D:\i386
winnt32 /noreboot
  1. インストールの種類は「新規インストール
  2. セットアップオプション詳細オプション
  3. セットアップ中にインストールドライブ文字とパーティションを選択する」にチェックを忘れずに
  4. コピー終了後、Cドライブに保存された $WIN_NT$.~LS フォルダをDドライブへコピーする。Cドライブからは削除。
  5. D:\boot.ini ファイルを参照。「Windows セットアップ」があるか確認

3.のチェックをしておかないと、十分な空き領域のあるパーティションが自動選択されてしまいます。4.をしないとCドライブのフォーマットができません。

※ DドライブがFAT32の場合、NTFSへのアップグレードはスキップする

Windows セットアップ

慣れてる人には言わずもがなと思いますけど。

  • 「修復しないで別の新しいWindows XP のインストールを続行するには...」で Escキーで続行
  • インストール先のパーティションの選択を間違えないように
  • 「NTFSファイルシステムを使用してパーティションをフォーマット」
    • クイックでいいかと。フォーマットしないと上書きインストールになってしまうのでご注意。
アクティブ設定を元に戻す

インストールが完了したら、「ディスクの管理」にてアクティブ設定を確認しておきます。多分Dドライブが「システム」のままになってるかと。

  • DドライブルートのXPブート用ファイルをCドライブのルートへコピー
    • ntldr
    • boot.ini
    • NTDETECT.COM
    • bootfont.bin

コマンド プロンプトで下記実行

pushd d:\
xcopy /h boot.ini c:\
xcopy /h bootfont.bin c:\
xcopy /h NTDETECT.COM c:\
xcopy /h ntldr c:\
  • Cドライブを「パーティションをアクティブとしてマーク」
  • 再起動して確認

※ここは慎重に。ミスしないように。

尚、winnt32.exe + /syspart オプション(本来は同一ドライブの別パーティションではなく別HDドライブへ別マシン上でセットアップするオプションかな?)では事前の操作なしに「Windows セットアップ」のブートが可能だったりするのですが、原因不明な不都合が何度かありましたのでとりあえず私的には(何)保留ということにしました。(単に私のスキル不足だったりしますが...あいすみません。)

winnt32 /noreboot /makelocalsource /tempdrive:<ドライブ名>: /syspart:<ドライブ名>:

セットアップは問題なく完了できます。ただ、ドライブレターがずれるなど(※本来Eドライブになるはずの論理ドライブが基本領域より先のDドライブになったり)、やや気分的に許せない不都合が出ることがありました。ドライブレターの強制変更は可能なので運用上は問題ないのかもしれませんけど。

【追記】めも

CDドライブ上の winnt32.exe を直接実行すると元のI386フォルダがコピーされないのでセットアップブート後もCDが必要になります(※ オプション /makelocalsource を付ければいけるかな)。

Windows PE上で【winnt32.exe】を実行

Windows PE ファイルの作成が必要です。この PE はCD以外に、HD, USBメモリ, ネットワークからブートできます。PE起動後にネットワークの利用も可能なのでネットワークブート + ネットワークドライブから winnt32.exe の実行なんてこともできるのです。

PEはオンメモリ起動なので、winnt32 実行前にHDのフォーマットも可。

慣れるとめっちゃ便利ですYO!

※ イメージ作成時に BootSect.exe の追加をお忘れなく!

上記ページに色々書いとりますが注意点がいくつか。

  • XPセットアップファイルが SP3 でないと不具合が出る可能性が高い
    • SP2 以下の場合は SP3 ファイルを統合しておきませう
  • Windows PE 2.0 はXPより新しいOSなのでPE上でフォーマットするとVista以降の仕様となり、そのままwinnt32を実行するとXPセットアップは起動できない(※ winnt32 実行前に BootSect.exe で修復可)
  • (※ 新規インストール時)Windows PE上の diskpart.exe でパーティションを切ると所謂1MiBアラインメントなVista以降の仕様となるので“古いPCでは”別のパーティションソフトを使ったほうが安全かもしれない(※ 逆に新目のPCではこっちの方がいいかも)

あると便利なツール類

慣れてないとめちゃシンドイかもですが、慣れると very ベンリーなツールです。

Balder (FreeDOS)

HIMEM, キーボードドライバ組み込み済、FDISK, FORMAT, SYS, XCOPY コマンドあり。XP の winnt.exe 実行可能。

FDイメージがダウンロードできます。RawWrite for Windows などでFDへ書き込みませう。(※ またはFDイメージのネットワークブートでも)

FDISKは基本パーティションの複数作成も可能。NTFSな C:ドライブを削除後に 基本・アクティブ C: FAT32 として再フォーマットできました。keyb jp と打つとJPキーボード配列となります。

GRUB(for DOS)起動ディスク

NTLDRのチェインロードとか、アクティブ・パーティションの変更とかXP起動ディスクとして使うとか

「セットアップファイルのコピー終わってんけどHDからブートしよらんがな」な時はこれで $LDR$ をチェインロードすれば続行できるかもしれない

  • コマンドの一例
find --set-root /$ldr$
chainloader /$ldr$
boot
BootSect.exe

Windows PE (Windows AIK) や Windows 7 のシステム修復ディスクに含まれてます。XP用MBRブートストラップとXP用ブートセクタ(のIPL)の書き込みが可能なのです。

GParted (parted)

Linuxではめちゃ代表的パーティションニング・ツールです。NTFSからFAT32への直接フォーマットとかできます(※ NTFSフォーマットでのブートセクタは BOOTMGR 仕様)。

【追記】NTFSから直接フォーマット後に winnt.exe を実行したら「Disk error」で起動できないことがありました。Balder(FreeDOS) などで再フォーマット後に winnt 実行した方がいいかも。

【注意】Vista以降の世代PCなどでは、1MiBアラインメントや4KBセクタなどにも対応している最新版を使いませう。GParted LiveCD, Parted Magic, SystemRescueCd とかがおすすめ。

※ あっと、これらのLiveCDはUSBメモリやネットワークからのブートもできるけど初めてだとチトしんどいかなぁ。

ネットワークブート用サーバ

最近はFD付いてないとか持ってないとかな場合多いのでこれしとくとマジ楽になるかも。

私レベルでも結構簡単にできました!FDイメージ(※ 上記の Balder やGRUB起動ディスクとかも)や一部のisoイメージのブートも可能でござる。

ネットワークブート非対応でもNICが内蔵(カード)なら起動ROM(起動ディスク)からブートできるかも?

KNOPPIX Terminal Server

別PCにて KNOPPIX をCD/DVDブートしてネットワークブート用サーバを設定。ルーターのある環境ならスクリプト一発なので楽チンチン。サーバ側で Samba サーバを起動すればサーバ側からファイルのコピーもできるのだ。

【注意】KNOPPIX の GParted はやや古いので、1MiBアラインメントや4KBセクタなどに対応してないです。Vista世代以降の新しいPCで使う場合はお気をつけあそばせ。

参考リンク

取り外したHDをUSBで別PCに接続。「HP USB Disk Storage Format Tool」でHDへDOSを直接インストールされてます。

*1:とか言いつつ、うまく行かなかった場合は状況を教えてもらえるとうれしいかなと。「後学のために」ってやつで。