Windows
 Computer >> コンピューター >  >> システム >> Windows

LinuxでWindows 10のUSBインストールメディアを作成する方法【標準ツールのみで完結】

今回この作業に挑戦した理由は、少し込み入っています。良い物語と同じように、すべてはある「問題」から始まりました。Windows 10と複数のLinuxディストリビューションをマルチブート構成にしていたノートパソコンが、突然起動しなくなってしまったのです。画面には何も表示されない状態。復旧が必要でした。そして、システムを一つずつ復旧していき、最後に残ったのがWindows 10だったのですが、これがなかなか頑固で、簡単には直ってくれませんでした。

そこで考えたのが、Windows 10のインストールメディアを使うという方法です。起動失敗時にWindowsが自動的に提示する回復ツールよりも、自分で用意したメディアの方が回復オプションを細かくコントロールできます。ただし、そのためにはブータブルメディアを作成する必要があり、これが思った以上に複雑でした。私はLinux上で、サードパーティ製ツールに頼らずにUSBメディアを作りたかったのです。なぜなら、独立性こそが重要だからです。標準的なツールだけで動作するのであれば、どんな環境でも同じ手順が使えます。それでは始めましょう。

ステップ1:Windows 10のISOをダウンロードする

これは意外と簡単ではありません。Windows環境では「メディア作成ツール」しか提供されず、生のISOファイルはそのままでは入手できません。ブラウザのユーザーエージェントを変更してダウンロードページを騙す方法もありますが、せっかくLinuxを使っているのですから、Linuxディストリビューション上で直接ISOをダウンロードするのが最も手軽です。最初の関門は無事クリアです。

ステップ2:ISOをマウントしてコピー(展開)する

ファイルをダウンロードしたら、書き込み可能な場所(ホームディレクトリ内など)に中身を展開する必要があります。ISOをループバックデバイスとしてマウントすると読み取り専用になるため、内容を手動でコピーすることになります。一部のLinuxファイルマネージャーはISOファイルをネイティブに展開できますが、できないものもあります。筆者の場合、次のようなエラーが表示されました。

このディスクには「UDF」ファイルシステムが含まれており、
ISO-13346「UDF」ファイルシステム仕様をサポートするOSが必要です。

というわけで、手動でのマウント&コピーを行います。

mount -o loop windows10.iso /mountpoint
cp -r -T /mountpoint/ /home/"user"/windows10data

ステップ3:install.wimを圧縮する

上記の手順が必要になった最大の理由は、ISOに含まれるinstall.wimというファイルが4GBを超えているためです。なぜ4GBが問題なのかというと、システムファームウェアによっては、NTFSフォーマットされたデバイスから起動できない場合があるからです(実際、ほとんどの環境で起動できません)。安全のため、USBドライブはFAT32でフォーマットする必要がありますが、FAT32には1ファイルあたり4GBというサイズ制限があります。

対象のファイルはsourcesフォルダ内、つまり/home/"user"/windows10data/sources/install.wimにあります。このファイルを圧縮するには、wimlibというツールを使用します。お使いのディストリビューションのリポジトリに含まれているはずです。今回はKubuntu 18.04を使用しましたが、パッケージは確かに提供されていました。

sudo apt-get install wimtools

続いて圧縮を実行します(ISOファイルを展開したフォルダ内で実行してください)。

sudo wimlib-imagex optimize install.wim --solid

sudoが必要になる場合があります。次のような権限エラーに遭遇することがあるためです。

[ERROR] Can't modify "/home/roger/win/sources/install.wim": Permission denied
ERROR: Exiting with error code 71:
The WIM is read-only (file permissions, header flag, or split WIM).

成功すると、次のような結果が表示されます。

"install.wim" original size: 4463411 KiB
Using LZMS compression with 8 threads
Archiving file data: 9 GiB of 9 GiB (100%) done
"install.wim" optimized size: 3311533 KiB
Space saved: 1151878 KiB

4.4GBのイメージが3.3GBまで縮小され、約30%の削減率となりました。つまり、この方法であれば、将来のWindows 10 ISOがさらに大きくなっても、FAT32との組み合わせである程度余裕を持って対応できるということです。

ステップ4:USBデバイスを準備する

次に、少なくとも8GB以上の容量があるUSBメモリを用意し、パーティションを作成します。GPartedやKDE Partition ManagerなどのGUIツールを使ってもよいですし、コマンドラインに慣れているならfdiskやgdiskでも構いません。まず、新しいGPTパーティションテーブルを作成します。次に、単一のFAT32パーティションを作成します。このときブートフラグは付けない点に注意してください。言い換えれば、「msft-data(Microsoft basic data)」タイプのパーティションとして認識される形にします。

LinuxでWindows 10のUSBインストールメディアを作成する方法【標準ツールのみで完結】

コマンドラインでも同じ作業が可能です。例えばgdiskを使う場合は以下のように実行します。

sudo gdisk /dev/[your device here]

実行例は次の通りです。

sudo gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.3

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: present

Found valid GPT with protective MBR; using GPT.

Command (? for help):

誤って別のデバイスを初期化して大切なデータを消してしまわないよう、十分に注意してください!gdiskでの具体的な手順は以下の通りです。

  • o — 新しいGPTパーティションテーブルを作成する。
  • n — 新しいパーティションを作成する(パーティション番号やセクタ指定はデフォルト値でOK)。
  • w — 変更をディスクに書き込む(繰り返しますが、操作対象のデバイスは必ず確認してください)。

ツールを終了したら、パーティションをFAT32でフォーマットします。

sudo mkfs.vfat /dev/[your device, partition here]

例えば/dev/sdb1といった具合です。mkfs.vfatコマンドはデフォルトで最適なFATサイズを自動選択しますが、-Fフラグで明示的に指定することもできます。ただし、ほとんどの場合は変更不要で、デフォルトのままFAT32ファイルシステムが適用されます。

Disk /dev/sdb: 14.9 GiB, 16008609792 bytes, 31266816 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 43479D21-6D76-2CA4-A7BA-596C08A99193

Device     Start      End  Sectors  Size Type
/dev/sdb1   2048 31260671 31258624 14.9G Microsoft basic data

ステップ5:USBデバイスへデータをコピーする

すべての準備が整ったら、圧縮済みのinstall.wimを含むISOの中身一式をUSBドライブにコピーします。

sudo mount /dev/[your device, partition here] /usb/mount/point/
sudo cp -r -T /location/windows10data /usb/mount/point/

最後に、完成したUSBメモリのパーティションテーブルと中身を示すスクリーンショットです。

LinuxでWindows 10のUSBインストールメディアを作成する方法【標準ツールのみで完結】

これですべての準備が完了しました。あとは起動するだけです。

ステップ6:対象デバイスでWindows 10を起動する

ここまで来れば、あとは拍子抜けするほど簡単です。USBメモリからターゲットマシンを起動すれば、通常どおりWindows 10のセットアップが始まります。

オプション:USBデバイスにNTFSパーティションを使う方法

「Windows公式はどうやってこれを実現しているのか」「woeusbやRufusのようなツールはどうやって4GB超のinstall.wimを扱っているのか」と疑問に思うかもしれません。実は、UEFIシステムでもNTFSデバイスからの起動は可能ですが、いくつか追加の手順が必要になります。

要となるのは、UEFI:NTFSブートローダーの利用です。詳細には踏み込みませんが、上記のFAT32方式が使えないほど制限が厳しい環境向けのオプションとして、手順の一例を紹介します(他にも方法はあります)。

  • USBデバイスに新しいGPT/MBRパーティションテーブルを作成する。
  • デバイス全体から512KBを引いたサイズのNTFSパーティションを作成する。
  • 残りの512KB部分にFAT16パーティションを作成する。
  • FAT16パーティションにbootフラグとlbaフラグを設定する。
  • pbatard氏のRufus GitHubリポジトリからUEFIブートローダーイメージをダウンロードする。
  • イメージをマウントまたは展開する(ステップ2と同様の手順)。
  • イメージ内のefiファイルをFAT16パーティションにコピーする。
  • Windows 10 ISOの中身をNTFSパーティションにコピーする。

まとめ

以上でチュートリアルは終わりです。一見些細な操作が、思いがけない複雑な問題につながることは珍しくありません。サードパーティ製ツールにあまり依存せず、Linux上でWindows 10のUSBインストールメディアを作成したい方にとって、本ガイドが役立つことを願っています。

今回はISOイメージの管理方法、wimファイルの圧縮方法、デバイスのパーティショニングとフォーマット方法など、実用的なスキルを多数紹介しました。さらに、UEFIハードウェアでNTFSデバイスを起動するオプションの裏技まで解説しています。多くのUSB作成ツールがバックグラウンドで行っている処理の秘密を、あなたはもう知りました。それでは、インストール作業に向かいましょう。

  1. WindowsでGoogle USBドライバをダウンロード・インストールする方法

    WindowsでGoogleデバイスのADB(Android Debug Bridge)デバッグ機能を利用したい場合は、Google USBドライバが必要です。特に、Google Nexus端末をADB経由で操作したいときには、Windows用のGoogle USBドライバが必須となります。この記事では、Windows PCにGoogle USBドライバをダウンロードおよびインストールするための複数の方法をわかりやすく解説します。 Google USBドライバのダウンロード方法 1. 公式サイトからGoogle USBドライバのZIPファイルをダウンロード 手順1: developer.and

  2. Windows 11のエクスプローラーが遅い・重いときの対処法|応答速度を改善する2つの解決策

    2022年にもなって、主力デスクトップOSのファイルマネージャーの動作が遅い問題を解説する記事を書かなければならないというのは、笑えると同時に悲しい話です。しかし現実には、Windows 11を搭載した筆者のテスト環境では、エクスプローラーのウィンドウが開くまでに時間がかかり、さらに各ドライブやフォルダーの内容を表示するのにも余計な時間を要します。しかも、NVMe SSDを搭載した最新マシンでの話です。この問題は、アップグレード前のWindows 10では一切発生しておらず、筆者が使用している他のWindows 10マシンや、同じIdeaPad 3ノートPCに並行してインストールされているLi