LinuxからWindows XPをインストールするには、起動可能なUSBを作成します


19

UbuntuのみがインストールされたDell Inspiron Mini 9があります。Windows XPもインストールしたいのですが、外付けのCDドライブがなく、入手できないため、USBからWindowsをインストールする必要があります。

私が見つけたすべてのチュートリアルでは、Windowsを使用してUSBを起動可能にします。Linuxから同じものを作成するにはどうすればよいですか?


CDドライブを備えたコンピューターにアクセスできますか?
ナサニエル

CDドライブを備えた別のLinuxマシンがあります。

回答:


13

VirtualBoxを使用して、仮想マシンにハードディスクドライブへのアクセスを許可できます。次に、Windows XPを仮想マシンにインストールし、実際のハードディスクドライブに新しいパーティションを作成します。インストール後、コンピューターを再起動し、通常どおりウィンドウを起動できます。

VirtualBoxにディスク全体へのアクセスを許可するには(xたとえば、適切な文字に変更しますa):

VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdx

次に、既存のハードディスクドライブを選択hdd.vmdkし、ホームフォルダー内のファイルを選択します。

コマンドが権限の欠落を訴えている場合はdisk、次のコマンドを使用してグループに自分自身を追加し、ログインしてログアウトし、再試行してください。

sudo adduser `whoami` disk
  1. ターゲットコンピューターに既にLinuxがインストールされいる場合は、そのコンピューターで直接これを実行できますが、Windowsを再起動する前に、実行sudo update-grubしてsudo grub-install /dev/sdxxたとえば、適切な文字に変更してa)ブートできることを確認してくださいLinux。コンピューターとVirtualBoxがVMでエミュレートしたもの(BSODになる可能性がある)との間で異なるハードウェアの問題を回避するために、VM を離れる前にWindowsで2番目のハードウェアプロファイルを作成することもできます。GRUBを使用してWindowsを直接起動する場合、この2番目のハードウェアプロファイルを選択します。最終的に、この新しいハードウェアプロファイルをデフォルトにすることができます。

  2. 場合は、ターゲットコンピュータが完全にクリーンで、WindowsはCDをインストールするには、また、(合法的に購入)あなたのイメージを入れて上のブート可能なUbuntuのUSBドライブを作成します。次に、ターゲットマシンでUbuntuを起動し、上記の手順に従います。


1
これは間違いなく素晴らしいソリューションです!これまでのところ動作しているようです。:)
RCE

1
こんにちは、私はUbuntu 12.04でこれをやろうとしていますが、問題があります。VBoxManage internalcommands createrawvmdk -filename ~/hdd.vmdk -rawdisk /dev/sdx私が自分のHDDであると書くと、このメッセージが表示されます。 VBoxManage: error: Cannot open the raw disk '/dev/sda1': VERR_ACCESS_DENIED VBoxManage: error: The raw disk vmdk file was not createdそれからルートとしてそれをしましたが、明らかに動作しましたが、ルートとしてのみhdd.vmdkを開くことができ、それは私を不快にします。それでも、仮想マシンは機能していないようです。rootとしてvirtualboxを開くvirtualboxを取得します。
フェニックス

1
「コマンドが権限の不足について不平を言っている場合は、次のコマンドを使用してグループディスクに自分自身を追加し、ログインしてログアウトしてから再試行してください」という回答で概説されているように。sudo adduser `whoami` disk
ライナスUnnebäck12年

1
上記を実行し、仮想マシンをインストールしてwinxpを正常に実行しましたが、コンピューターをシャットダウンして再起動すると、Windowsロゴが表示され、すぐにフリーズしてから、BSODがすぐに表示されて再起動します。
-SaultDon

2
残念ながら、幸運でない限り、この方法は実際には機能しません。仮想マシンで正常に動作するが、ハードウェアでの起動に失敗するWindowsのインストールで終わる可能性があります。
ジャパレセク

8

ここからRUFUSLDRをダウンロードします:https ://dl.dropboxusercontent.com/u/20170669/RUFUSLDRここから ms-sysをダウンロードします:http ://prdownloads.sourceforge.net/ms-sys/ms-sys-2.3.0.tar 。 gz?download ms-sys-2.3.0フォルダーを、実行フラグをサポートしている場所(Linuxホームフォルダーなど)にドラッグします。そこに端末をcdし、「make」と入力してから、「sudo make install」と入力します。本当に簡単。

私はあなたに同情します。WinXPインストーラーから起動可能なUSBドライブをWindowsから作成する方法についてのチュートリアルを試しました。diskpart、WinToFlash、およびHP USB Formatユーティリティはすべて失敗しました。

ルーファスは実際に動作します。ただし、これはWindows専用のユーティリティです。VirtualBoxをインストールし、VirtualBox内にWindowsをインストールし、VMにRufusをインストールし、USBドライブをVMに共有し、RufusにUSBドライブをWindows XPインストーラーから起動可能にできます。

Rufusは現在、ルーズインストールファイルを使用した起動可能なUSB WinXPインストーラーの作成をサポートしていません。ISOを確認する必要があります。VirtualBoxにisoをマウントさせてXPをVMにインストールしますが、それはルーズファイルとして表示されます(isoは表示されません)。そのため、Rufusにisoファイル自体を表示させるには、isoがVMに保存されているホストマシン上のディレクトリを共有します。次に、Rufusを、VMのネットワークドライブ内のisoファイルがある場所(Z:\など)に向けます。

ところで、FreeDOSフロッピーイメージをドライブにコピーし、isoからファイルをコピーし、memdiskを使用してフロッピーイメージを起動することもできます。FreeDOSからi386 \ winnt.exeを実行します。落とし穴は(DOS NTFSドライバーが見つからない限り)、NTFSボリュームではなく、FAT32ボリュームにしかWindowsをインストールできないことです。

VMを使用しているため、Rufusのプロセスが非常に遅くなる場合があります(理由を理解しないでください。おそらく、設定の仕方が愚かだったのかもしれません)。個人的には、ラップトップでは1時間5分40秒かかりました。LinuxでRufusを使用せずに実行する方法を説明します。Rufusを模倣しますが、最初に、代わりにVMからRufusを使用することにした場合、Rufusの実行後にLinuxがパーティションを認識できないことに注意してください。

Rufusはパーティションをフォーマットするだけでなく、MBR(パーティションテーブルを含む)を再実行します。したがって、最初にサムドライブから何かを保存してください。

注: Rufusは、BIOSによって実行されたときに最初の2つのBIOSドライブを交換するトリックMBRを作成します(0x80は0x81になり、逆も同様です)。さらに、このトリックMBRにBIOS IDを追加して、ドライブを0x81(2番目のドライブ)として開始します。なぜこれを言っているのか:トリックMBRにより、Linux(およびGrub2 v2.00)がパーティションテーブルを読み取れなくなります。Windowsはそれで問題なく(ドライブ文字とすべてを与えて)、ドライブは起動可能になります。しかし、Linuxはパーティションを認識しないため、マウントできません。問題ない。MBRをファイルに保存します。

sudo dd if=/dev/sdX of=~/Desktop/rufus_trick_mbr count=1 bs=512

fdiskを使用して、新しいMBRを指定します。パーティション自体に触れることもなく、単に新しいMBRを与えるだけです。「w」を押すまで、fdiskでは実際には何も行われません。

sudo fdisk /dev/sdX

p //Print partition table. fdisk, unlike the kernel, CAN make sense of the partition table as-is.

You'll probably see the partition start on sector 2048 and go to the end.

o  //Tells fdisk to make a new partition table

n //create new partition. By defualt, fdisk should also make the partition start at sector 2048 and go to the end. Make sure the partition starts where it used to and ends where it used to.

select primary

t //change partition type id

7 //for ntfs

p //Make sure everything is right. And no, don't worry about the boot flag.

w //when you're sure. Remember, we saved the old mbr and can undo any mess-ups made here with dd.

ddで新しい混乱を作ることもできます。

ハモンド–「心配しないで、同じ間違いを二度としないよ。」マルコム–「いや、いや、あなたはすべて新しいものを作っている。」

-失われた世界、ジュラシックパークII

サムドライブのプラグを抜き、再度差し込みます。他に何もなければ、/ dev / sdXYが少なくとも存在するはずです(/ dev / sdXのみが存在する前-「Y」はありません)。マウントするには、ntfs-3gをインストールする必要があります。インストールされている場合は、既にマウントされているかどうかを確認します(デスクトップまたはファイルブラウザーの左ペインに表示されます)。そうでない場合は、自分でマウントします。最初にファイルブラウザでマウントしてみてください。手動でマウントする方法は次のとおりです。

sudo mount -t ntfs-3g /dev/sdXY [mount point]

Linuxでやりたいことをやります。

必要に応じて、rufus_trick_mbrを元に戻します。

sudo dd if=~/Desktop/rufus_trick_mbr of=/dev/sdX bs=512 count=1 //No "Y"! Just /dev/sdX!

ただし、MBRを元に戻す必要はありません。代わりに、Grub2のntldrコマンドを使用して/ BOOTMGRをロードできます。(おそらく、ntldrモジュールを挿入するには、最初に「insmod ntldr」を実行する必要があります。)

ここで何が起こります:

Rufusは、1つのパーティションテーブルエントリを使用してトリックMBRを作成し、そのパーティションをNTFSとしてフォーマットし、ntldrスタイルのブートローダーのみが対象とするものをそのパーティションのブートセクターに配置し、ファイルをisoからパーティションにコピーし、NTDETECT.COMをコピーしますi386フォルダーをルートレベルに配置し、txtsetup.sifをi386フォルダーからコピーし、ルートレベルに配置し、github、c0m / pbatard / rufus / wiki / Targets-Supportedが言及していない行を追加します。これを指摘してくれた「openssl md5」とcmpに感謝します。

ドラムロール:そして、i386フォルダーからSETUPLDR.BINをルートレベルにコピーし、BOOTMGRに名前を変更し、そのバイナリにパッチを適用します。はい、それはトリックです。SETUPLDR.BINは、CDから起動すると、CDから起動されたことを検出し、i386フォルダーを検索します。ハードドライブから起動した場合、ハードドライブから起動したことを検出し、代わりにminintフォルダーを探し、見つかった場合は、$ WIN_NT $〜BTフォルダーを探して、インストールの第2フェーズを開始します(再起動およびターゲットハードドライブに起動するとき)。したがって、「i386」の名前を「minint」に変更することもできません。ハードドライブ(USBドライブなど)から起動した場合でも、i386フォルダーを検索するにはSETUPLDR.BINを変更する必要があります。

Rufusが修正されたバイナリを「BOOTMGR」と呼ぶのは間違っていると思います。それはVistaと7(そして8?)が使用するものであり、XPではありません。BOOTMGRは、NTLDR(このSETUPLDRは修正バージョンです)のようにboot.iniファイルも探しません。それで、私はそれを「RUFUSLDR」と改名して、ダウンロードのためにそれを置きました。さらに、走り回っている可能性のある実際のBOOTMGRとは別に伝えたいと思うでしょう。

Rufusは、Windowsインストーラーisoを適用する場合、ドライブをNTFSとしてフォーマットすることを強制します。これは、FAT32ではサポートできない4GBを超えるファイルを含むx64 Windows 8開発者プレビューによるものだと思います。しかし、それはここでは当てはまりません。4GBに近いファイルはありません。FAT32を使用しても問題ありません。

LinuxのRufus(またはほぼすべてのunixoid)を模倣しましょう。

  1. ドライブがMBRでスケジュールされていることを確認してください。fdiskは、GPTの場合は警告をスローし、MBRスキーマにするオプション(オプション "o")も提供します。それほど破壊的ではありませんが、gdiskを使用すると、パーティションが4つ以下の場合、GPT方式のドライブをMBR方式のドライブに変換できます。Gdiskを使用すると、ドライブをハイブリッドMBR / GPTスキームのディスクにすることができ、GPTを認識しないものを表示するために最大3つのパーティションを選択できます(4番目のスロットは、残りを覆う保護パーティション用に使用されます)。fdiskを使用するだけでも、新しいパーティションテーブルエントリが同じ場所で開始および停止する限り、パーティションを失うことはありません。ディスクの最後でセカンダリGPTをゼロオーバーするようにしてください。

  2. パーティションがFAT32またはNTFSとしてフォーマットされていることを確認してください。FAT32はクロスプラットフォームに優しいことを忘れないでください。すでにFAT32またはntfsとしてフォーマットされている場合、フォーマットする必要はありません。

    sudo blkid / dev / sdXY [UUID、ラベルなどとともに、ここでファイルシステムを言います]

FAT32またはNTFSでない場合は、次のいずれかを実行します。

sudo mkdosfs -F 32 -n [insert volume label (name) here] /dev/sdXY

sudo mkntfs -L [insert volume label here] /dev/sdXY

3 DOS / Windowsが非常に細心の注意を払う魔法のブートセクタを適用します。

sudo ms-sys -w /dev/sdXY

*これについて-"-w"は "write"を表します-単に書き込みます。何を書くかを指定するのではなく。したがって、「-w」はms-sysの自動モードです。これは、状況に応じて書き込む最適なブートセクターデータを決定します。私は、その自動車が正しかった見つけるために驚いた:FAT32パーティションのために、私はMS-SYSのFAT32必要DOSブートセクタではない MS-SYSのFAT32 NTの私は_NT_LDR(NTローダー)(SETUPLDRのderivitiveをロードする必要があるだろうと思ったブートセクタを、。 BINはNTLDRの修正バージョンであり、RUFUSLDRはSETUPLDR.BINの修正バージョンです。

4適切に測定するために、パーティションにもジオメトリを書き込みます。これはディスクのジオメトリを変更するものではなく、ジオメトリについてのメモを残します。

sudo ms-sys -p /dev/sdXY

*注意:手順4はNTFSには適用されません。*注:Linuxカーネルのバージョンが2.6以上であることを確認してください。カーネル2.6には、間違った数のヘッド(ジオメトリの問題)を報告するバグがありました。したがって、「-p」オプションは、カーネル2.6で誤った情報を記録する可能性があります。回避策は、ユーザーが記録するヘッドの数を手動で指定できる「-H」オプションです。しかし、実際には、代わりにカーネルをアップグレードするだけです。2.6を実行している場合、すぐに期限切れになります。カーネルのバージョンを確認するには、次を実行します。

uname -r

5 iso、フォルダーなどからファイルをコピーします。多くのディストリビューションは、ダブルクリックするとisosをマウントするか、少なくとも右クリック>開くでアーカイブマウンターで開くオプションを提供します。そうでない場合は、次を実行します。

sudo mount -o loop (path to iso) (path to desired mount point)

6変更したSETUPLDR.BIN(RUFUSLDR)ファイルをルートレベルに配置します。

7 NTDETECT.COMをi386からルートレベルにコピーします。

8 txtsetup.sifをi386からルートレベルにコピーします。

9 txtsetup.sifの新しいコピーを開き、「[SetupData]」のCtrl + Fを開きます。そのヘッダーのすぐ下に、次の行を入力します。

SetupSourceDevice = "\device\harddisk1\partition1"

10 NTLDRスタイルのブートローダーをドライブ、またはこのドライブの起動に使用する別のドライブにロードできるブートローダーをインストールするか、既存のブートローダーを使用します。Ubuntuを起動するためにハードドライブにGrub2がインストールされている場合、メニューが表示されたら「c」を押すだけでGrubコマンドラインを入力できます。代わりにSyslinuxがあれば、それも使用できます。チュートリアルではGrub2のみを使用します。

Grub2をディスクにインストールするには(ハードドライブの既存のブートローダーを使用する場合は必要ない場合があります):

sudo grub-install --boot-directory=[mount point of disk, not iso] [/dev/sdxy]

11a。grub.cfgエントリを作成するか、次を手動で実行します。

grub> insmod ntldr //Inserts (loads) the Grub2 module used for loading NTLDR-style bootloaders.
grub> set root=(hdx,msdosy) //Replace x and y as appropriate. Sets the current directory to the target partition. Probably not needed if you booted off the drive you put the WinXP installer files on, but we always do this. Use "ls" to list all drives and partitions. If you only have one MBR-schemed disk with only one (or however many you made) partition(s), you'll be able to pick out which is your thumb drive. If not, try one and do "ls /". It will list the files on the root level of that partition. That should be a dead-giveaway. Notice that "ls" (without slash) lists drives and partitions, and "ls /" (with slash) lists the files on the root level of the partition that is the current working directory.
grub> ntldr /RUFUSLDR //Tells it to load RUFUSLDR.
grub> boot //That's the "go button".

11b。grub.cfgエントリとして、これは次のようになります(括弧を並べないでください、これは大学ではなくGrubです!!)。

menuentry "Windows XP Installer" {
  insmod ntldr
  search --no-floppy --fs-uuid --set=root [insert filesystem's UUID here, obtaind by "sudo blkid /dev/sdXY"]
  ntldr /RUFUSLDR
}

//上記はGrubの現在の作業ディレクトリを設定する確実な手段であることに注意してください。また、構成ファイルのエントリには「ブート」が含まれることに注意してください。

//また、Windowsをブートするために「drivemap -s(hd0)$ {root}」行を使用するのが一般的ですが(Windowsのドライブを最初のBIOSドライブにする)、USB Windows XPインストーラーでこれを行うと、 ntldrスタイルのブートローダーを起動しようとしたときに再起動します。うまくいかず、すべてのステップを実行したことが確実な場合は、「drivemap -s(hd0)$ {root}」を試してください

//起動時に複数のUSBドライブが挿入されている場合は注意してください。システムは、USBを起動するように指示されると、最も支配的な起動可能なUSBドライブを起動します。2つの起動可能なUSBドライブを使用して、どのUSBポートがどのUSBポートに支配的であるかを体系的に把握できます。私の場合、USBポートは列に配置されており、列全体が他の列よりも支配的だったため、多くの組み合わせを試す必要はありませんでした。列内では、高い方が支配的でした。

// Windows XP USBインストーラーを別のドライブのGrub2から起動する場合、Grub2には(少なくとも私のシステムでは)最も支配的なUSBドライブのみが表示されることに注意してください。そのため、WinXP USBインストーラーが最も使用されているスロットにあることを確認してください。(または、USBドライブが2つあり、Grub2が非WinXPインストーラードライブを認識している場合は、2つを切り替えるだけです。)もちろん、USBドライブが1つしか挿入されていない場合、これは問題になりません。

//再起動する場合は、「sudo ms-sys -w / dev / sdXY」を実行し、FAT32の場合は「sudo ms-sys -p / dev / sdXY」を実行し、NTDETECT.COMをi386からルートレベル。

//何も見つからないというメッセージが表示された場合、変更されたブートローダーを使用していない可能性があります。変更したものを使用していることを確認してください。(i386 / SETUPLDR.BINとは異なるmd5になります。)また、txtsetup.sifとNTDETECT.COMがルートレベルにあることを確認します。

// Windows XP SP3 CDを挿入するよう指示されている場合は、その行をtxtsetup.sifに追加し、CD Identファイルが適切であること(WIN51、WIN51IPなど)を確認してください。疑わしい場合は、CDインデントファイルを削除してコピーし直してください。

//アップグレードインストールの資格を証明するためにディスクを挿入する必要があると表示されている場合、GPTディスクは挿入されていますか?おそらくこれが問題の原因です。GPTでスケジュールされたディスクをすべて取り外すか、LinuxでMBRに変換します。(コンピューターの電源をオフにして、プラグを抜いて、もう一度試してください。ヤンクだけではありません。)

//ところで、USBドライブにTOをインストールするには、ngine.de / article / id / 8でハックする必要があります。はい、Windows XPをUSBからUSBにインストールできます。

楽しい、

ジェイクXD


1
多くのチュートリアルを経てあなたの方法に来て、それは十分に納得できるようです、あなたの方法が失敗した場合、私は現在あなたの方法で無人のTFTPブート(実験のために)を試します NTFS signature is missing. Failed to mount '/dev/sdb': Invalid argument The device '/dev/sdb' doesn't seem to have a valid NTFS.私は最初にWin 7マシンに行き、使用しましたrufusとXP isoをポイントし、USBをISOでフォーマットし、USBをLinuxマシンに接続し、sudo mount ntfs-3g / dev / sdb1 / media / usbという方法で開始しました。
登録ユーザー

ここでFDISKのスナップショットですsdrv.ms/15UUtRf、別のスクリーンショットsdrv.ms/15UUuVk私は私が正しく物事を踏襲していると思うのfdiskのは、あなたが何か問題に気づいた場合、私に知らせて
登録ユーザー

1
Linuxで動作させることができませんでした。
kenn 14

1
これは最終的に正しい手がかりを与えてくれた素晴らしい答えです-この部分:ところで、FreeDOSフロッピーイメージをドライブにコピーし、isoからもファイルをコピーし、memdiskを使用してフロッピーから起動することもできます画像。FreeDOSから、i386 \ winnt.exeを実行します。memdiskを使用する必要さえありません。FAT32フラッシュへのFreeDOSのインストールはかなり簡単です(qemuで実行できます。または、USBイメージがあります)。また、この方法でWindowsをNTFSにインストールできます。WindowsセットアップはNTFSを単独で処理します。
-jpalecek

1
@jpalecekはあなたのコメントから完全な答えを出すことができますか?たとえば、1。FreeDOSをUSBに書き込みます。2. ISOからusbパーティションにファイルをコピーします。3. ???
-VasyaNovikov

3

インストーラーの最初の段階で、Windows XPが実際に特定のハードウェア構成用に自身を構成することがわかりました。

したがって、VirtualBox、QEMUなどを実際のハードドライブと組み合わせて使用​​する方法が機能する場合は、2番目のハードウェアプロファイルを作成する必要があります。第2段階で再起動する前にVMをシャットダウンしてこれを回避し、代わりに実際のマシンを起動して実際のハードウェア用に構成できるようにしたいと思っていました。ただし、第2段階ではなく、第1段階でハードウェアを構成します。

だから私は絶対にルーファスを真似することをお勧めします。ファイルをコピーして、いくつかの微調整を行ってください。既存の投稿を参照してください。2番目のハードウェアプロファイルを処理する必要はありません。2番目のハードウェアプロファイルを作成した場合でも、Windowsを起動して、2番目のプロファイルで実際のハードウェアのドライバーをインストールする方法を教えてください。そして、あなたが方法を見つけたなら、ライセンスはあなたを止めませんか?(ハードウェアを見ます)?


1

見ていUNetBootInを。これでうまくいくはずです。


8
Windows XPで動作させることができませんでした。Windowsインストーラーが起動しません

2
Windows XPでこれが可能な参照(公式またはその他)を投稿できますか?あなたまたはあなたが知っている誰かがこの作品を作ったことがありますか?私はそれを数回試しましたが失敗しました。もう一度試す前にそれが可能であることを知りたいです。
アナン

1

風に向かって叫ぶだけですが、...

VirtualBoxを試してみてはどうですか?Windows XP ISOファイルをダウンロードしてマウントし、仮想マシンをインストールできます。そこでもUSBドライブにアクセスできるので、そこからUSBブートドライブを作成できると思います。


残念ながら、実際には機能しません-他の回答を参照してください
-jpalecek

1

UNetbootinが動作しなかったので、WinToFlashでUSBスティックを準備するために、Windowsコンピューターを持っている友人に聞いてみてください(正確には希少ではありません:) 。


私はすでにそれを試しましたが、これは失敗し、ある時点でBSODを取得しました
登録ユーザー

注:WinToFlashは独自仕様です。(入手可能なソースはありません。「Professional」エディションなどがあります)。
VasyaNovikov

0

DOSからXP 32ビットをインストールすることもできます。DOSブート可能なフラッシュドライブまたは他のハードドライブを作成する必要があります。i386フォルダーをコピーしてから、

C:> cd i386
C:\ i386> winnt / b
これで、WindowsセットアップがFAT16 / FAT32 DOSブート可能ドライブからロードされます!

インストールしているのと同じハードドライブから起動した場合、NTFSに変換するオプションを使用できる場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.