Palm84 某所の日記

有為のクマにかくれり~

USBメモリでブートいろいろ DOS(Windows)編

※【2009.10.5】 「回復コンソール」について追記。(最終更新 2009.10.31)

“ミニ”Linux編に続きまして超私的めも第2弾です。

GRUB for DOSを直接インストール、または、SYSLINUX + GRUB for DOSから、MS-DOS or FreeDOSをチェインロードするのが最も便利だと思っているのですが、このGRUBはUSBブートに完全対応してないのか、機種によって不安定なトコがいまいちかなぁ。(※DOSを直接インストールしてgrub.exeを起動するって手もありますが...)

【追記・重要】バックアップイメージ作成

パーティションを切りなおす場合は、事前に全体のバックアップイメージを取っておきませう。下記ツールが便利です。

【追記】Windows ツール

細心の注意を持って使う必要ありだと思いますが、Windows 上でUSBメモリをごにょごにょできるツール類。

INDEX

BIOSの対応とか注意点とか

【参考】

えーと、下記は私の個人的解釈というか、推測がかなり混じっておりますので注意ですけど、環境次第でうまくいったりいかなかったり、DOSのブートに関しては色々ありました。確認は主にFreeDOSでやってるのでMS-DOSだと違ってくるかもしれません。

私が知ってる限りでの話なのであんまり正確ではないのでしょうけど...

尚、Linux LiveCD(LiveUSB)の場合は、これらの条件による影響はほとんどないようです。あくまでDOSブートについての話。

BIOSの仕様が微妙に違うことが多いので、どんなPCでも使える汎用性を考えるとキリがなかったりして...

まずは電源オン時に、EscF8 - F12 キーあたりを押して所謂「ブート選択メニュー」が出ないか確認しませう。このメニューから選択してブートできるかトライしてみるべし。

BIOSでの認識がおおまかに2種類

上記ページの解説にありますが、HD扱いとFD扱い(※正確にはZipらしい)ではブートの可否が違ってきたりすることがありますね。

  • HD扱い - DOS上のドライブ文字は、C:
  • FD扱い - DOS上のドライブ文字は、A: または B:
  • 最近のPCでは、【USB Mass Storage Configulation】などの項目で【Emulation Type】を選択できるものがある
  • 自動設定 - パーティションの有無、容量(512 MB以下など)により自動選択されるものもある
  • (2002年頃の製品とか)USBメモリブート初期型(?)PCでは、「USB ZIP」「USB RMD-FDD」「USB LS-120」などFD扱い固定のものが多かったような
  • FD扱いでの注意点
    • FD扱いではフォーマットがFAT32ではだめみたい
    • FAT16では、パーティションは(原則的には)最大 2 GB
    • FD扱いでは2番目のパーティションはGRUB上で見えない
  • HD扱いでの注意点
    • USBメモリを第1HDとして設定する必要があるかも
    • (USBメモリブートした際)殆どの場合、USBメモリが第1HD、内蔵HDが第2HDとなるので注意
    • DOSブートでは、USBメモリがC:ドライブとなる(※ DOSは A:,B:,C: からブートしないと、config.sys などがロードできない)

尚、FD扱いのPCでも PLoP Boot Manager 経由でブートさせるとHDとして認識されました。

【追記】Linuxfdisk でパーティションを切るのが確実なのかも...

あくまで、私の貧しい経験上の話ですが...FD扱い固定・HD扱い固定のPC両方でほぼ確実にブートできています。

【追記】※USBメモリの容量が 8.4 GB(7.84 GiB)以下の場合ですけど...

Linuxの fdisk コマンドで(※C/H/Sを指定せずに)パーティションを再設定すると、C/H/Sにおけるシリンダ数が1024(0から1023)以下に設定されてブート可能になることがありました。というか、私はいつもこの方法でやってました。(※注:最初にMBRから第1パーティションの先頭セクタあたりをクリアしないと再設定になりません)

  • パーティションの切りなおし
$ dd if=/dev/zero of=/dev/sdx bs=512 count=64
# fdisk /dev/sdx

パーティションタイプはFAT32 - B(0B) 、FAT16 - 6(06)で。

でも...Web上では下記のツールの使用(ヘッド数が255、1トラックのセクタ数が63)での成功例が多いようなので、ホントのところは...?

【追記】USBメモリの容量が 8.4 GB(7.84 GiB)超なら FAT32 - C(0C) 、FAT16 - E(0E) ですね。すみません。

HD扱いの場合、標準的な C/H/S を設定するべきなのかもしれない?

標準的なHDのパーティションの構成というのはこんなかんじかな?

  • (1トラックの)セクタ数が63
  • ヘッド数は255(または16)
  • シリンダ数は容量に合わせて設定される

USBメモリの C/H/S は一定ではないようです。よってUSB HDDとしてブートできない場合はこれが原因かもしれません。しかし、これを設定するとFD扱いでは逆にブートできなくなってしまうこともありました

※ Windows PE 2.0 や Vista 以降の diskpart では第1パーティションの開始位置が2049番目セクタとなるので注意。

C/H/S を指定してパーティションを構成するには

上記ページで紹介のツールをWindows XP上で実行すると、セクタ数63・ヘッド数255でパーティション1つ作成(アクティブ設定)されました。パーティションタイプはLBA対応。

HD扱いの場合は最も確実な方法だと思います。ただ、FD扱い(USB LS120)のPCでは逆にブートできなくなってしまいました(起動途中で停止)。

Linuxなどのfdiskコマンドでは、ヘッド数・セクタ数を指定してパーティションを作成できます。

$ dd if=/dev/zero of=/dev/sdx bs=512 count=64
# fdisk -H 255 -S 63 /dev/sdx

SYSLINUXの mkdiskimage(※Linuxコマンド or Perlスクリプト) を使う手も。

HD扱い・FD扱いのどちらかしかブートできないことがある

多分BIOSの対応次第だと思われるので、必ずしもそうであるとは言えませんけど。

パーティションタイプがLBA非対応の場合があります。

パーティションのタイプをLBA対応にしてみる

FAT32なら C(0C) 、FAT16なら E(0E) で。

FAT32 - B(0B) 、FAT16 - 6(06) から変更したらGRUBとかブート可能になったことがありました。

LBA対応にすると、DOS + USBドライバでファイルが読めなくなったりするのでどっちがいいのか?ですけど...

(※USBメモリの容量が 8.4 GB(7.84 GiB)以下の場合)Windows上でフォーマットすると、FAT32 - B(0B) 、FAT16 - 6(06) になるようです。

HD扱いではMBRのブートストラップが必要

HD扱いでの、おおまかなブートの流れです。

  1. MBRのブートストラップローダ
  2. アクティブパーティションのブートセクタ内のIPL(DOSではDOS-IPL)
  3. ブートローダ IO.SYS が command.com などをロード

パーティションが切られている場合は、MBR内にブートストラップがあり、パーティションがアクティブ(bootフラッグ)に設定されている必要がある筈です。

購入時に設定済みになっているものもあるらしいです。また、(DOS上でHDとして認識できる場合)DOSのFDISKを実行した場合も自動でブートストラップが書き込まれるようです。

MBRへブートストラップの書き込み
  • DOS上でHDとして対象を指定できる場合
    • DOS上で fdisk /mbr の実行
  • Linuxで ms-sys コマンドの実行

※USBメモリが/dev/sdxのMS-DOSの場合です。

# ms-sys -z /dev/sdx(※既存のブートストラップをクリア)
# ms-sys -s /dev/sdx(※SYSLINUXの“標準的”ブートストラップ)

ms-sys はKnoppix、SystemRescueCd、INSERT、BG-Rescue Linux(FD版もあり)などのLiveCDにも入ってます。

  • Windows上なら、イメージファイルへSYSLINUXのmbr.binを dd for Windows で書き込むとか
 dd if=/dev/zero of=imagefile.ddi bs=446 count=1
 dd if=mbr.bin of=imagefile.ddi bs=404 count=1

※SYSLINUXを使う場合は、syslinux.exe -ma <ドライブ文字>: の実行でアクティブ化とMBRブートストラップの書き込みが可能です。

パーティションをアクティブに設定
  • Linux の fdisk や GParted などで設定
  • Windows XP/2000の「ディスクの管理」
  • DOS上でHDとして認識できるなら)DOSのFDISKで設定
  • (※GRUB上でUSBメモリが、fd0,fd1,hd0,hd1 などとしてHD扱いで認識できる場合)、GRUB起動ディスク(FDなど)でブートして makeactive コマンド

※SYSLINUXを使う場合は、syslinux.exe -ma <ドライブ文字>: の実行でアクティブ化とMBRブートストラップの書き込みが可能です。

標準的なZip形式?

USB Zip としてBIOSで認識される場合は、以下を試してみてもいいかも

サイズに合わせて、ヘッド数・セクタ数を指定、パーティション4を作成してアクティブにしろってことみたい。

  • ※サイズ1 GBの場合
mkdiskimage -4 /dev/sdx 0 64 32

0はシリンダ数を自動設定、ヘッド数64、セクタ数32。

再接続しませう

イメージを書き込んだ後や、フォーマット時など「ハードウェアの安全な取り外し」を実行して、再接続しておいた方がいいかと思います。

ツールなど

パーティションが切られているか確認

Windows XP なら【ディスクの管理】でUSBメモリのドライブに「アクティブ」表示があるか、「アクティブとしてマーク」が可能ならパーティションありです。または、fdiskコマンドなどで確認しませう。

どの起動ディスクを使うか?なのですが、一番いいのはやっぱり Windows 98 の起動ディスクだと思います。(※古いマシンは別として英語でもいいならフリーで入手可能な FreeDOS の方が履歴や補完機能あるから使いやすいかも?)。Windows XP で作成できるものはバージョンが違うので、xcopy が使えない、ドライバはキーボードのみ、外部コマンドなし、Windows 2000 のwinnt.exe が実行できなかったりなどそのままではあんまり使えません。

FreeDOS BalderのFDイメージには、fdiskなどコマンドがいっぱい入ってるので便利です。

Norton Ghost 2003 に付属の PC DOS や、Partition Magic に付属のDR-DOS などを使うのもありかと。

ちゅうか、そもそもFDドライブないねんけど、な方はこれを使いましょう。2.88MBイメージも作れます4。

Windows でフロッピーディスクイメージの作成(書き込み)

おなじみかと思いますが、「Write」タブでフロッピーへ書き込み、「Read」タブでイメージを作成します。

Windows でUSBメモリイメージの作成(書き込み)

本来はコンパクトフラッシュ用とのことなのですが、USBメモリでも使えました。但し、「disk dump image」ということで保存時はUSBメモリの容量とまったく同じになる点は注意しておくべきかと。

Windows で dd コマンド

USBメモリイメージへの書き込みなどが可能です。

単純なやり方 - FDイメージをそのまま書き込み

USBメモリがBIOSでUSB-FDUSB ZIPや所謂スーパーフロッピー(LS 120,RMD-FDDなど)として認識される、FD扱いの場合のみに有効な手段だと思われます。あくまで私の環境でできてまっせな話ですけど...

容量が1.44MB(2.88MB)に固定されてしまいますので、多少かなり?危険な方法なのかもしれません。DOS/Windows系ツール(FATフォーマットならいいのかな?)はほぼOKでした。Linuxのイメージはほぼ駄目でした(GRUB起動ディスクとか)。自己責任にてお願い致しますです。(汗)

一時的に使うだけならこれが楽かもしれません。

DOS上でSYSコマンド

※これが正式な方法だと思うんですが、なぜかうまく行かないことも多かったり...

USB(メモリ)ブート対応PCであれば、DOS上でドライバなしでもFDかHDとして認識されるので、FDドライブ、またはFDイメージからブートして、USBメモリに対してSYSコマンドを実行。

sys X:

※注)X はUSBメモリのドライブ文字

mkbt.exe

【追記】成功率低いみたいです?

私の環境ではほぼおkなのですが、同じコマンドを打ってるのに、フォーマット形式や容量が変わってしまったり、変わらなかったり。コマンド実行時に警告が出ず、フォーマットはFAT16のはずなのにFAT12とブートセクタに書かれたり(それでもブートできるのは不思議?)、書かれなかったりしました。

事前にFAT(16 or 32)でフォーマットしておきます。

  1. MS-DOS起動ディスクのイメージファイルを作っておく。
  2. コマンドプロンプトを起動し、mkbt.exe を実行。
    <mkbt.exeの解凍先フォルダ>\mkbt -x <起動ディスクイメージのファイル名> <USBメモリのドライブ:>
    
    ※ファイルシステムが違うとの警告メッセージが出ますが、問題ないようです。
  3. 起動ディスクイメージから IO.SYS、MSDOS.SYS、COMMAND.COM の3ファイルを取り出し、IO.SYS→MSDOS.SYS→COMMAND.COM の順にUSBメモリにコピー。

mkbt.exe (web.archive) を使いブートセクタ(内のIPL)をコピーする方法ですね。-xオプションでFDドライブ(A:,B:)以外に強制書き込み出来るようです。くれぐれもドライブ名はお間違えのなきよう

  • FreeDOS
    • 上記の方法で mkbt でブートセクタを書き込み後 kernel.sys command.com の順番でコピーすれば起動可能でした。
  • DR-DOS / PC DOS
    • 上記の方法でmkbtでブートセクタを書き込み後 ibmbio.com ibmdos.com command.com の順番でコピー

ms-sysコマンド(Linux)

Linuxの ms-sys コマンドでもブートセクタの書き込みが可能でした。Knoppix、BG-Rescue Linux、INSERT などのLiveCDにも入ってます。

但し、FreeDOS のブートセクタについてはバージョン 2.1.2 以降なので Knoppix 5.1.1,5.3.1 のものではだめ。SytemRescueCd 0.4.1, BG-Rescue Linux 0.9.1 に入ってました。

パーティションを作成してDOSを設定

間違ってHDに向けてやっちゃわないようにご注意

※USBメモリが /dev/sdc の場合です。

  • MBR(先頭セクタ)をクリア
# dd if /dev/zero of=/dev/sdc bs=512 count=1
  • fdisk、または GPartedなどでパーティション作成し、bootフラッグ(アクティブ)を設定
  • MBRのブートストラップ部分を念のためにクリア
# ms-sys -z /dev/sdc
  • MBRへSYSLINUXの“標準的”ブートストラップを書き込み
# ms-sys -s /dev/sdc
  • パーティションをフォーマット(※ /dev/sdc1 の場合)
 --- ※ FAT16の場合 ---- 
# mkfs.vfat -F 16 /dev/sdc1
 --- ※ FAT32の場合 ---- 
# mkfs.vfat -F 32 /dev/sdc1
  • ブートセクタ(IPL)書き込み
 --- ※ MS-DOS - FAT16の場合 ---- 
# ms-sys -6 /dev/sdc1
 --- ※ MS-DOS - FAT32の場合 ---- 
# ms-sys -3 /dev/sdc1
 --- ※ FreeDOS - FAT16の場合 ---- 
# ms-sys -5 /dev/sdc1
 --- ※ FreeDOS - FAT32の場合 ---- 
# ms-sys -4 /dev/sdc1

この後、/dev/sdc1をマウントして、ファイルをコピー

  • MS-DOS
    1. io.sys
    2. msdos.sys
    3. command.com
  • FreeDOS
    1. kernel.sys
    2. command.com
パーティションなし(FD扱い)でDOSを設定

※FD扱いの場合のみ?64MBなど少量サイズのメモリ向けかな。USBメモリが/dev/sdc + MS-DOSの場合

# dd if=/dev/zero of=/dev/sdc bs=512 count=64  --- MBR含め念の為に64セクタクリア
# mkdosfs -I /dev/sdc  --- FAT(16)で全体をフォーマット
# ms-sys -6 /dev/sdc  --- MS-DOSのFAT16用IPLをインストール

この後、IO.SYSMSDOS.SYSCOMMAND.COM の順でコピー

HP USB Disk Storage Format Tool

HD扱いならほぼ確実、というかめちゃ簡単!だとと思いますが、私の環境ではFD扱いだとだめでした。

  • MBRへXP標準ブートストラップ書き込み?(既にある場合は上書きしないかな?
  • セクタ数63・ヘッド数255でパーティション1つ作成(アクティブ設定)
  • パーティションタイプはLBA対応?
  • 指定ディレクトリからシステムファイルをコピー

ブートセクタのIPLは、sysコマンドやms-sysで書き込まれるものと同じでした。

GRUB for DOSをインストール

USBメモリには完全対応というわけではなさそうなので、注意が必要ですが、GRUB for DOSからFreeDOSなどをチェインロードさせることも可能です。また、FDイメージ、Linux LiveCD、Windows PEなどのマルチブートもできます。

  1. io.sys (MS-DOS), kernel.sys(FreeDOS)を直接ロード
    • HD扱い - Cドライブ(USBメモリ)からブート
    • FD扱い - A(B)ドライブ(USBメモリ)からブート
  2. FDイメージからブート
    • 仮想Aドライブからブート、USBメモリHD扱い - Cドライブ
    • 仮想Aドライブからブート、USBメモリFD扱い - Bドライブ

Windows XP上でUSBメモリのPBR(ブートセクタ)へインストールする方法。(※MBRインストールではFD扱いでだめだったので)

USBメモリ上の kernel.sys (io.sys)をチェインロード

  • menu.lst
default 0

title FreeDOS
      find --set-root /kernel.sys
      chainloader /kernel.sys

title MS-DOS
      find --set-root /io.sys
      chainloader /io.sys

FDイメージのブート

FDイメージをAドライブとしてDOSブートする手もアリかな。USBメモリはBまたはCドライブになるはず。

memdiskbalder10.img をルートにコピーした場合・・・

  • menu.lst に追記
title FreeDOS Balder
find --set-root /balder10.img
map --mem /balder10.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
  • menu.lst に追記(※FD扱い)
title FreeDOS Balder
find --set-root /balder10.img
map --mem /balder10.img (fd0)
map (fd0) (fd1)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

または、SYSLINUXのmemdiskで

title FreeDOS Balder (SYSLINUX memdisk)
kernel /memdisk
initrd /balder10.img

※ブートに失敗する場合は、memdisk raw も試してみませう...

SYSLINUXをインストール

【追記】chain.c32 を使う

最近知りました(汗)。chain.c32 を使うのが簡単かも?

SYSLINUX から GRUB for DOS をチェインロードすることも可能です。また、FDイメージ、Linux LiveCD、Windows PEなどのマルチブートもできます。

MBR(またはPBR)に SYSLINUX をインストール、GRUB for DOS FreeDOSのkernel.sys をチェインロード、またはDOS FDイメージをロード。FreeDOSのブートコードなどの書き込みは不要。

環境次第かもしれませんが、0.4.20.4.3grub.exe で Windows XP を起動すると非常に動作が緩慢になるというバグがあるのでご注意。0.4.1,0.4.4では問題ないようです。

  1. chain.c32 でチェインロード
    • HD扱い - Cドライブ(USBメモリ)からブート
    • FD扱い - A(B)ドライブ(USBメモリ)からブート
  2. GRUB for DOSからio.sys (MS-DOS), kernel.sys(FreeDOS)を直接ロード
    • HD扱い - Cドライブ(USBメモリ)からブート
    • FD扱い - A(B)ドライブ(USBメモリ)からブート
  3. FDイメージからブート
    • 仮想Aドライブからブート、USBメモリHD扱い - Cドライブ
    • 仮想Aドライブからブート、USBメモリFD扱い - Bドライブ

chain.c32

chain.c32 をルートにコピーした場合・・・

  • syslinux.cfg
default freedos
prompt 1

LABEL freedos
KERNEL /chain.c32
APPEND freedos=/kernel.sys

LABEL msdos
KERNEL /chain.c32
APPEND msdos=/io.sys

grub.exe

grub.exemenu.lst をルートにコピーした場合・・・

  • syslinux.cfg
default grub4dos
prompt 1

LABEL grub4dos
KERNEL /grub.exe
APPEND --config-file="configfile /menu.lst"

LABEL freedos
KERNEL /grub.exe
APPEND --config-file="chainloader /kernel.sys"

LABEL msdos
KERNEL /grub.exe
APPEND --config-file="chainloader /io.sys"
  • menu.lst
default 0

title FreeDOS
      find --set-root /kernel.sys
      chainloader /kernel.sys

title MS-DOS
      find --set-root /io.sys
      chainloader /io.sys

memdisk + FDイメージ

FDイメージをAドライブとしてDOSブートする手もアリ。USBメモリはBまたはCドライブになるはず。

memdiskbalder10.img をルートにコピーした場合・・・

  • syslinux.cfg に追記
LABEL dos
KERNEL /memdisk
APPEND /balder10.img

またはGRUBから

  • menu.lst に追記
title FreeDOS Balder
find --set-root /balder10.img
map --mem /balder10.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)
  • menu.lst に追記(※FD扱い)
title FreeDOS Balder
find --set-root /balder10.img
map --mem /balder10.img (fd0)
map (fd0) (fd1)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

Windows XP/2000 緊急起動ディスク

  • HD上の ntldr の直接チェインロードは、GRUB for DOS で可能
  • HD順序のswapは、GRUB for DOS、SYSLINUX + chain.c32 で可能
  • MBRブートストラップやブートセクタのNT-IPLの異常時などでは、HD上の ntldr をチェインロードすればよいはず

しかしながら、boot.ini の異常時には正常な boot.ini をロードして起動させる必要があります。Cドライブ上の ntldr をチェインロードした場合はCドライブの boot.ini がロードされてしまうので、FD(扱い)上ののntldrをチェインロードし、FD(扱い)上の boot.ini をロードさせます。

【追記】FD扱いの場合しか使えないかもしれないですね...

USBメモリが1台目のHD扱いになっちゃうことが多いので...

別のやり方ですが、GRUB for DOS でブートするなら map コマンドで hd0 , hd1 を入れ替えたら、一応(?)使えたりします。

※ でも boot.ini はHD上のものだったりしますので、C:\boot.ini の異常時には使えません。

map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (hd1,0)/ntldr

※ USBメモリが (hd0) で認識、USBメモリ上の ntldr から起動する場合

FD扱いでのブート
  1. USBメモリを2000/XP上でクイックフォーマット
  2. システムドライブにあるファイル NTLDR, NTDETECT.COM, BOOT.INI, BOOTFONT.BIN をUSBメモリにコピー。

boot.iniを編集して、セーフモード起動用に使うのもありかと。

または、GRUB for DOS、SYSLINUX + grub.exe で

GRUB for DOS
  1. USBメモリに GRUB for DOS インストール
  2. USBメモリに ntldr, NTDETECT.COM, boot.ini, bootfont.bin をコピー
  3. menu.lst を編集
titile chainload ntldr from USB(fd0)
chainloader (fd0)/ntldr

FDイメージなら (※ イメージファイル名は winnboot.img として)

titile chainload ntldr from FDimage
map --mem /winboot.img (fd0)
map --hook
chainloader (fd0)/ntldr
rootnoverify (fd0)
SYSLINUX + grub.exe
  1. USBメモリに SYSLINUX インストール
  2. USBメモリに grub.exe をコピー
  3. USBメモリに ntldr, NTDETECT.COM, boot.ini, bootfont.bin をコピー
  4. syslinux.cfg を編集
LABEL usb-ntldr
KERNEL /grub.exe
APPEND --config-file="chainloader /ntldr"

FDイメージなら (※ イメージファイル名は winnboot.img として)

LABEL winboot
KERNEL /grub.exe
APPEND --config-file="map --mem /winboot.img (fd0);map --hook;chainloader (fd0)/ntldr;rootnoverify (fd0)"
HD扱いでのブート

めちゃややこしいです。。。

HDの順序をswapさせることは可能ですが、(原則的に)Windowsは第1HD(のntldrなど)からでないとブートできないので、FDイメージを使います。

GRUB for DOS、または SYSLINUX + grub.exe を使います。

  1. Windows起動ディスク(または GRUB for DOS起動ディスク)を作成し、イメージファイルを保存
  2. 設定ファイル編集

※ Windows起動ディスクFDイメージファイル名は winboot.img にしてます。

GRUB for DOS
  1. USBメモリへ GRUB for DOS をインストール
  2. winboot.img をUSBメモリへコピー
  3. USBメモリ上の menu.lst を編集
  • GRUB for DOS - menu.lst
titile Windows XP/2K bootdisk (fdimage)
map (hd0) (hd1)
map (hd1) (hd0)
map --mem /winboot.img (fd0)
map --hook
chainloader (fd0)/ntldr
rootnoverify (fd0)
SYSLINUX + grub.exe
  1. USBメモリへ SYSLINUX をインストール
  2. grub.exe, winboot.img をUSBメモリへコピー
  3. USBメモリ上の syslinux.cfg を編集
  • SYSLINUX + grub.exe - syslinux.cfg
LABEL winboot
KERNEL /grub.exe
APPEND --config-file="map (hd0) (hd1);map (hd1) (hd0);map --mem /winboot.img (fd0);map --hook;chainloader (fd0)/ntldr;rootnoverify (fd0)"
SYSLINUX + memdisk + GRUB for DOS起動ディスクイメージ
  • GRUB for DOS起動ディスク内の menu.lst を編集
titile chainloader (fd0)/ntldr
map (hd0) (hd1)
map (hd1) (hd0)
map --hook
chainloader (fd0)/ntldr
rootnoverify (fd0)
  • GRUB for DOS起動ディスクに、ntldr, NTDETECT.COM, boot.ini, bootfont.bin をコピーしてイメージファイル作成(ファイル名は grub.img にして)
  1. USBメモリへ SYSLINUX をインストール
  2. SYSLINUX の memdisk、grub.img をUSBメモリへコピー
  3. USBメモリ上の syslinux.cfg を編集
  • USBメモリ上の syslinux.cfg
LABEL grub4dos
KERNEL /memdisk raw
APPEND initrd=grub.img

ちなみに、回復コンソールについては、起動ディスクのすべてのファイルをコピー、disk1のブートセクタ書き込みでブートはするのですが、最後の最後にブルーバックで止まります。SPのバージョンもすべて試したのでやはり無理なのでしょうか...

Windows XP/2000 回復コンソール

【注意】一応確認はしておりますが、確実に動くかどうかは保証ありませぬ。あくまで“バックアップを取った上で”「だめもと手段」として使いませう。

回復コンソールのインストール時の注意点

Service Pack のバージョンを合わせないとだめなのでした。インストールファイルが SP 3 じゃないなら統合セットアップファイルの作成が必要になりまする。HDにインストールしない場合でも作っておくべし。

Windows CD、または I386フォルダから

GUIツール系

適当にやったらできてしまいましたが、機能が多すぎてよくわかりませぬ。(滝汗)

【注意】USBメモリが D: になってたので C: 以外のHDのドライブ文字がズレるかも。

【追記】Windows インストーラーを丸ごとUSBメモリに入れちゃうって手もありますね。ただ、少し不安定な気もしますが...

HDにインストールしてから

※ 但し、これって別PCでは使えないかもしれませぬ。ってか、使う機会あるかなぁ?

  1. Windows XP 上で「回復コンソール」をインストール
  2. C:\cmdcons ディレクトリ(※隠しフォルダになってるので注意)をUSBメモリルートにコピー
  3. USBメモリへSYSLINUXをインストール
  4. grub.exe をコピー
  5. syslinux.cfg 作成
  • syslinux.cfg
DEFAULT cmdcons
PROMPT 0

LABEL cmdcons
KERNEL /grub.exe
APPEND --config-file="chainloader /cmdcons/setupldr.bin;write 0x7C03 0x63646D63;write 0x7C07 0x00736E6F"

起動ディスクから

これも非絶賛(何)無保証ですが、Windows CD も I386 フォルダも無い場合は起動フロッピーで挑戦してみませう。されど、バージョンは現在 Service Pack 2 まで なので注意をば。

  1. ダウンロード
  2. FDイメージ取り出し
    • コマンド - WindowsXP-ほげほげ.exe /q /c /t:"%cd%\xpsp2"
  3. cmdcons ディレクトリへFDイメージ内のファイルをすべて展開
  4. cmdcons ディレクトリをUSBメモリへコピー
  5. USBメモリへSYSLINUXをインストール
  6. grub.exe をコピー
  7. syslinux.cfg 作成
  8. cmdcons\winnt.sif 作成
  • syslinux.cfg
DEFAULT cmdcons
PROMPT 0

LABEL cmdcons
KERNEL /grub.exe
APPEND --config-file="chainloader /cmdcons/setupldr.bin;write 0x7C03 0x63646D63;write 0x7C07 0x00736E6F"
  • cmdcons\winnt.sif
[data]
msdosinitiated="1"
floppyless="1"
CmdCons="1"
AutoPartition="0"
UseSignatures="yes"
InstallDir="\WINDOWS"
EulaComplete="1"
[regionalsettings]
; Language=00000413
LanguageGroup=1
[unattended]
unused=unused

【注意】USBメモリが D: になってたので C: 以外のHDのドライブ文字がズレるかも。

An unexpected error (769)

PLoP Boot Manager 経由では、このメッセージが出て止まることがありましたが、続行後にUSBメモリが認識されて起動しました。