web-dev-qa-db-ja.com

Debian:端末(dd)を使用してWindows 10ブート可能インストールUSBドライブを作成する

私の目標はとてもシンプルで、タイトルはそれをすべて示していますが、私が試みたすべての方法で、私は失敗しました。私はさまざまなサイト(ここ以外)の説明を読みましたが、それらはすべて何かが欠けているようです...これは私が持っているものです:

  • 16 GBのSanDisk USB 3ドライブ。
  • Debian Jessieマシン
  • windowsマシン、MacBook Pro

ルーファスを使用して起動可能なWindows 10 USBを簡単に作成できますが、私の目標はより教育的です。何が起こっているのか、そして私の失敗の原因は何かを理解し、できればそれを機能させる必要があります。

端末でWin10イメージを作成しようとすると、次のコマンドを試しました。

Sudo dd if=Windows10.iso of=/dev/sdc1 bs=512k

Debianにマウントされているように見えますが、それ以外の場合はWindowsとMacで認識されないパーティションを取得しました。 Gpartedはこれを示しています: gpartedレポートファイルシステム不明 比較すると、正常に機能している別のUSBフラッシュドライブ(i got 4)は次のように読み取ります: ここに画像の説明を入力してください

パーティション(sdc1)に出力するのではなく、ドライブ(sdc)に出力することになっている場所をいくつか読んだので、これを試しました。

Sudo pv Windows10.iso | Sudo dd of=/dev/sdc bs=5M

(親しみのある人にとっては、ddを介してパイプされた同じコマンドであり、代わりにsdcを使用しています)これは、fdisk: コマンドとfdisk を示す端末出力からわかるように、パーティション全体を破壊するように見えます。

これは気が動転しましたが、最初からやり直すことにしました。再起動して、次のコマンドを実行しました

Sudo umount /dev/sdc1
Sudo wipefs -a /dev/sdc
Sudo fdisk -l
Sudo fdisk /dev/sdc
n, p, 1, [enter], [enter], t, 7, w

これで新しいパーティションがフォーマットされ、デフォルト(linux)から必要なntfsパーティションに変更されます。次に、実行します:

lsblk 

次のコマンドでNTFSファイルシステムを作成します。

Sudo mkfs -t ntfs /dev/sdc1

その後、ddを実行してみましたが、追加のオプション:conv = fdatasyncを使用しました(一部の人々は、何もキャッシュに残っておらず、この問題を解決する可能性があると言っています)。

pv Windows10.iso | Sudo dd of=/dev/sdc conv=fdatasync bs=512k

(問題が発生した場合に備えて、バイトサイズを減らしました)。私がそれをどのように行うかに関係なく、私は次のことに気づきました:

  • ddはファイルとファイルシステムを書き込みますが、Linuxでは読み取り可能です(ファイルを開くことができます)が、役に立たず、lsblkとgpartedはどちらもそこに何もないと言っています!
  • 私がsdc1とsdcのどちらを選択したかに関係なく、ドライブの破損の程度に影響しているようです。 1つはパーティションに損傷を与え、もう1つはドライブ全体が割り当てられていないように見えます。
  • ドライブは大丈夫です。私はWindowsに入り、同じ「壊れた」USBドライブを使用して同じファイルにコピーし、起動して正常に動作することを確認しました。

Ddコマンドは gpartedlive で動作することに注意してください。次のコードを実行しました。

Sudo wipefs -a /dev/sdc
Sudo fdisk /dev/sdc
lsblk
Sudo mkfs -t vfat /dev/sdc1
pv gparted-live-1.1.0-1AMD64.iso|Sudo dd of=/dev/sdc bs=4M conv=fdatasync

完全に機能する分割されたライブドライブを取得しました。これは私を混乱させるので、私は助けを求めたいと思いました。ルーファスと一緒にいるだけで問題を解決できることはわかっていますが、これは単純なことではなく、何が起こっているのかを理解することです。 Linux上のいくつかのGUIツールが問題を解決する可能性があることはわかっていますが、可能であれば、古いUNIX端末を使用して問題を解決することを願っています。それが不可能な場合は、その理由を知りたいのですが。要約すると:

  1. なぜ機能しないのですか?私は何を間違っていますか?
  2. なぜddがパーティションを破壊しているのに、gpartedでうまく動作するように見えるのですか
  3. フラッシュドライブにイメージをコピーするこのあまり一般的でない使用法について、どこで詳細を知ることができますか?

たくさんのご協力ありがとうございました!あなたは私に多くの頭痛の時間を節約します!

2
skaai

何が起こっているのか理解したい

ルーファス開発者はこちら。

Linux ISOがこの方法を適用しているため、多くの人々が理解できない方法ですが、これは本質的にMAJOR HACK CALLED 'ISOHYBRID'であり、ほとんどの場合、単純にISOイメージを取得することはできません。そしてそれをバイトごとにUSBドライブにコピーして、それもブートすることを期待してください。

これは、ISO形式とそれが使用する基礎となるファイルシステム(ISO9660またはUDF)が光学ブート用に設計されているためです。これは、通常のHDDまたはUSBブートとはまったく異なるものです。 1つには、光学メディア、つまり(通常の)ISOイメージには、HDDまたはUSBブートに(通常)必須であるパー​​ティションテーブルがなく、また(通常)マスターブートレコード(別名)もありません。 BIOSブートに不可欠なMBR。

つまり、Windowsのようにregular ISOの1:1コピーをディスクに作成し、起動しようとすると、次のようになります。

  • レガシー/ CSMモードのBIOSシステムまたはUEFIシステムはMBRを認識しません。特に、MBRの最後の2バイトの0x550xAAシーケンスを認識せず、ディスクがBIOSから起動可能。したがって、そのディスクをBIOSモードで起動することはできません。
  • UEFIシステムは、ディスクまたはフラッシュドライブメディアからUDFまたはISO9660パーティションを(通常)マウントしません。これは、これらのファイルシステム用のドライバーがある場合でも、作成したディスクにはMBRまたはGPTパーティションがないためですテーブル。通常のディスクを起動する場合、UEFIは最初にパーティションを検索し、次にそのパーティションでブートローダー(例:/efi/boot/bootx64.efi)を検索するように設計されています。したがって、メディアにMBRまたはGPTパーティションテーブルが存在しない場合、-通常のISOの場合に当てはまりますの場合、ISOにブートローダーファイルが含まれているかどうかは関係ありません。UEFIファームウェアは常駐しているパーティションをマウントできません。

したがって、完全に標準の光学メディアイメージであるWindows ISOから起動可能なディスクメディアを作成する場合、Rufusのようなユーティリティは次のようになります。

  • ユーザーが選択した内容に応じて、MBRまたはGPTのいずれかのパーティションテーブルを作成し、少なくとも1つのパーティションを作成します。通常は、ファイルシステムとしてFAT32またはNTFSを使用します(使用するファイルシステムとはまったく異なるファイルシステムを使用していることに注意してください) ISOが使用)。
  • MBRを使用する場合は、関連するMBRパーティションでセカンダリブートローダーを検索するMBR内のコードのビット。このパーティションから、Windowsカーネルの実行をディスクモードで開始するように設計されています。また、BIOSがディスクを起動可能として認識できるように、0x550xAAブートマーカーがMBRの最後に追加されるようにします。次に、ISOの内容をFAT32またはNTFSパーティションにコピーします。
  • GPTが使用されている場合、Rufusは/efi/boot/bootx64.efiなどのUEFIブートローダーファイルが実際に存在することを確認します(実際には、GPTを選択できるようになる前に、GPTを作成するのはあまり意味がありません。 UEFIブートローダーがない場合は起動可能なドライブ)、次に残りのISOファイルと一緒に、通常FAT32パーティションにコピーします。これは、FAT32パーティションからのブートがUEFIの必須要件であるためです(ただし、関連するUEFIドライバーがある場合、NTFSまたはexFATからUEFIを起動できないわけではありません。これは、4 GBより大きいファイルを含むWindows ISOがある場合に便利です。FAT32はそのようなファイルに対応できないためです)。

現在、上記はセカンダリブートローダー(つまり、Windowsから提供され、Rufusが変更しないもの)がbothオプティカルおよび通常のブートをサポートするように設計されている場合にのみ機能します。 UDFまたはISO9660およびFAT32またはNTFSの両方のファイルシステム、およびディスクからの起動時と光ディスクからの起動時に現れる他の違い。しかし、Microsoftはそのためにブートローダーを正確に設計しましたこれは賢明なことです。なぜなら、ターゲットシステムがUEFIの場合、それはあなたが(通常、最大4 GBのファイルサイズの問題である限り) FAT32は醜い頭を育てません)ISOを起動可能なUSBに変換するユーティリティは必要ありませんが、そのUSBをFAT32にフォーマットしてISOファイルをそれにコピーするだけです(ファイルコピー、- notバイトコピー)、およびブータブルメディアがあります。

上記のすべてを通過したので、rantに入り、通常はそれよりも賢いLinuxディストリビューションのメンテナが実際には彼らが彼らを助けようとしているとしても、彼らのユーザーにいくつかの害を及ぼす:

ほぼall最近のLinuxディストリビューションではMAJOR HACKと呼ばれる「IsoHybrid」を使用しており、誰かがISO9660光学画像を通常のように見せかける方法を見つけましたディスクイメージ、パーティションテーブル、MBRなどすべて...つまり、最近見つけたほとんどのLinux ISOは、ISO9660ファイルシステムをabusingして、何かのように見せていますデュアルディスクと光学イメージのように設計されたことはありません。

明らかに、ISOがそのように機能することは決してないはずですが、ddコマンドでalsoを使用できるISOを作成することが目標です。そして、理論的にはこれは素晴らしいことだと思います。単一のイメージをまったく異なる用途に使用できることはユーザーにとって素晴らしいはずですが、実際には、これは見過ごされがちな問題につながります。

  • 多くのLinuxディストリビューションのメンテナは、Windowsがマウントできるセカンダリファイルシステムを使用することを望んでいません(たとえば、ISO9660の「セカンダリ」ファイルシステムとしてextを使用します)。つまり、たくさん Linuxを初めて使用するために起動可能なドライブを作成しているWindowsの人々は、フラッシュドライブのコンテンツにアクセスできなくなった理由について非常に混乱しています。 "IsoHybrid"にEFIシステムパーティション(ESP)も含まれていると、これらのユーザーはドライブのサイズが完全に縮小されたように見えるため、さらに悪いことです。 redditや他の場所に行くと、USBメディアに何が起こったかについて完全に混乱しているユーザーからの多くの投稿があります。これはLinuxの第一印象を良くするものではありません...
  • 多くのLinuxディストリビューションのメンテナーはISOHybridの作業に集中しているため、コンテンツをFAT32フォーマットのパーティションにコピーするだけでUEFIブータブルメディアを作成するオプションを完全に無視しているため、実際にはすべきです常にUEFIブート可能ドライブを作成するための推奨方法です(通常、ddコマンドを使用するよりも、パーティションをフォーマットしてファイルをコピーする方がはるかにリスクが少ないためです)。これが原因で、マンジャロ、Ubuntuでユーザー体験を劣るいくつかの問題が発生しました...これは、実際には「ISOHybrid」との競合の主なポイントです。これは、確立された手段を捨てる言い訳にはなりません。ブータブルメディアを作成しています!
  • GPTと「ISOHybrid」は、dd...を使用するとセカンダリGPTテーブルが破損しているように見えるため、問題が発生する可能性があります。それでも、起動可能なドライブを作成するWindowsの人々にとっては最高の体験ではありません...
  • そして最後に、「ISOhybrids」は世界で最も自然なメディアであるかのように提示されるため(確かにそうではありません)、あなたのような人々は、ddを使用してすべてのISOイメージを適用できると信じるようになります。 例外ルールではなく。これは非常に不幸です。これは、非常に多くのユーザーを混乱させるためです。一部のLinuxユーザーは、Windowsブータブルメディアを作成したい人に、ddを使用できるようにすべきだと言っています。また、10年前のLinux ISOを選択した場合、ddを使用してブータブルメディアを作成するために実際に使用できるものはほとんどないことがわかります。これは、この「IsoHybrid」が実際に最近の開発であるためです。 。

私の知る限りでは、MicrosoftはWindows ISOのISOHybridである「ハック」に切り替える予定はありません。つまり、ddを使用してそこから起動可能なUSBメディアを作成することはできません。 、ISOからWindowsブータブルメディアを作成する場合は、次のいずれかを実行します。

  • (UEFI)Windowsが(NTFSFAT32、および最近のexFAT)から起動できるファイルシステムでドライブをフォーマットし、ISO filesをそこに抽出する必要があります。ここで、NTFSまたはexFATを使用している場合は、 少し余分な作業も行う ...
  • (BIOS /レガシー)Windowsが起動できるファイルシステムでドライブをフォーマットする必要があります(NTFSまたはFAT32-exFATは動作しません。MicrosoftがそのためのBIOSブートローダーを公開していないためです)、関連するブートローダーチェーンを作成します。 、MBRブートコードからボリュームブートレコードまで。

実際にはそれほど複雑ではありませんが、ISOファイルからの1:1コピーよりも少し多くの作業が必要です。

それがあなたの質問に答えることを願っています。

4
Akeo

ddは、Windowsで起動可能なUSBを作成するための適切なツールではありません。簡単な方法は、woeusbを使用することです。

インストール:

Sudo apt-get install devscripts equivs gdebi-core
cd WoeUSB
./setup-development-environment.bash
mk-build-deps
Sudo gdebi woeusb-build-deps_3.3.1_all.deb
dpkg-buildpackage -uc -b
Sudo gdebi ../woeusb_3.3.1_AMD64.deb

現在、パッケージのバージョンは3.3.1、パッケージ更新の場合、コマンド./setup-development-environment.bashは現在のバージョンを出力します。上記のコマンドで置き換える必要があります。

使用法:

GUIを使用して、ターミナルからwoeusbguiを実行できます。または、CLIを使用できます。

USBデバイスをアンマウントします(重要)。次に実行します:

Sudo woeusb -v --device /path/to/windows.iso /dev/sdc
0
GAD3R