Windows 10をインストールする

# はじめに

下記にあるような理由でWindows 10のインストールをはじめてみたが、Ubuntu18.04のインストールに比べてあまりにも時間がかかったため、今回のインストールでよくわからなかったところを備忘録としてここに書いておくことにする。この記事が少しでも読んでくれた方の時間節約に役立ったら嬉しく思う。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">未踏やっていたときにJenkinsなどをインストールして雑に運用していたサーバー、未踏が終って最近は使っていなかったのでWindowsを入れてHyper-Vとかゲームで遊ぶかと思ったけど永遠にインストールできなくてツライ😇</p>&mdash; 吉村 優 / YOSHIMURA Yuu (@_yyu_) <a href="https://twitter.com/_yyu_/status/1260286965758390272?ref_src=twsrc%5Etfw">May 12, 2020</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# 今回の環境

- CPU: Ryzen 5 2600
- Memory: Crucial DDR4 32GB（16GB × 2）
- Storage: WD SATA M.2 SSD 250GB
- MB: ASUS 450M-K
- GPU: Geforce GT 1030

なお著者は普段macOSをよく使っており、インストール前の段階ではWindows機を所持していなかった。

# BIOS設定

すべてに意味があるかどうかは不明だが、とりあえず次のような状態で最終的に成功した。

- CMS boot: Disable
- Secure boot: OFF
- Fast boot: OFF

# Windowsインストール

それではここから成功した手順を書いていく。なお[@kaz1815](https://twitter.com/kaz1815)さんによるとプロダクトキーはいったん入れずにインストールすることができるらしいので、この手順を見て不安に思った場合はWindowsをインストールできた段階でプロダクトキーを購入するとよいと思う。

<blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">プロダクトキー入力画面は小さく書いてある「後で」というところを押すと、プロダクトキー入れないままインストール完了させることができます。<br>プロダクトキー入力には90日(だったか)猶予があるので、完了してからライセンス調達しても十分間に合うかと。</p>&mdash; KAZ@社畜㌠ (@kaz1815) <a href="https://twitter.com/kaz1815/status/1263493715005329409?ref_src=twsrc%5Etfw">May 21, 2020</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

1. Windows 10のISOファイルである[Win10_1909_Japanese_x64.iso](https://www.microsoft.com/ja-jp/software-download/windows10)をダウンロードする
    - この時点ですでにWindowsは他のOSと比べて不親切で、SHA256などのハッシュ値を公開していない。したがって、きちんとダウンロードできたかどうか？というのを判定することが難しい。
        - 普通のOSインストールでは、ISOが壊れているという疑いを持つことなく終わるが、Windows 10はそうではなかったので原因の切り分けのためにハッシュ値を公開しておいてほしかった……
2. USBメモリーなどを用意してブートメディアを[このページ](https://www.freecodecamp.org/news/how-make-a-windows-10-usb-using-your-mac-build-a-bootable-iso-from-your-macs-terminal/)の手順で焼く
    - この手順は非常に重要である。FAT32で初期化するが、普通に`dd`コマンドで作ると`install.wim`が4GBを越えているため、絶対インストールに失敗するインストールメディアとなってしまう
        - FAT32はファイルシステムの仕様上、4GB以上のファイルを作ることができないので、この記事にある方法で分割して入れなければならない
    - しかも、このようなエラーの場合は著者の環境では「メディアデバイスドライバーがみつかりません」のような全く関係のないエラーメッセージとなるので、普通はこの制約による問題と気がつくことができない
3. USBブートメディアを挿入し、UEFIでインストーラーを起動するが、**いったんここではWindowsのインストールを行なわず、PC本体の内蔵ストレージへインストーラーをコピーする**（やり方は次のステップ）
    - [Windows10のクリーンインストールで躓きがちなこととその対策](https://qiita.com/tarosuke@github/items/a593fd091cbbc3f2ba8b)にどうしてこの手順が必要なのか書かれている（下記に引用）
    > パーティショナーはドライブを直接認識しているのでHDDやSDDしか認識しないが、このエラーを出しているインストーラーはドライブレターで認識しているのでそういうストレージが認識されてるとドライブレターがずれて認識できなくなるというマヌケな原因のようだ。この問題は窓7以降ずっと存在するのでMSはこれを直す気はないっぽい。
    - しょうじき、どうしてこんなことになったまま放置されているのか謎だが、この状態のままだとプロダクトキーを入れてWindowsをインストールするところでパーティションへアクセスできなくなって失敗する
    - かつ、その失敗した際のエラーメッセージもまったく実態を述べていない
    <blockquote class="twitter-tweet" data-conversation="none"><p lang="ja" dir="ltr">Windows10のインストーラー、ほんとに不親切すぎて頭がおかしくなりそう😡💢💢💢 <a href="https://t.co/wjDV9nupxc">pic.twitter.com/wjDV9nupxc</a></p>&mdash; 吉村 優 / YOSHIMURA Yuu (@_yyu_) <a href="https://twitter.com/_yyu_/status/1263145331979501569?ref_src=twsrc%5Etfw">May 20, 2020</a></blockquote><script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
    
    - ほぼ[このページ](http://blog.livedoor.jp/sarrus3x3/archives/16164767.html)の通りだが、下記のところが異なる
        - UEFIを使う関係上（？）、マスターブートレコード（MBR）ではなくてGPTパーティションとする
        - そしてUEFIの関係上でNTFSではなくてFAT32を利用したいが、たいていの場合ストレージの全てを1つのパーティションとすると大きすぎて失敗してしまう。したがって小さいパーティションを1つ作り、それを利用する（このパーティションはインストール後に消去してメイン領域と統合できるので問題ない）
            - FAT32の仕様上は2TBまでやれるようだが、Windowsの標準ツールはFAT32のボリュームサイズを32GBに制約しているらしい
4. 次のようなコマンドを実行する            
    1. インストーラーの言語・IME等の選択画面でShift+F10キーを押し、コマンドプロンプトを起動する
    2. `diskpart`でパーティション編集ツールを起動
    3. `list disk`コマンドでディスクの一覧（ここで内蔵ストレージとUSBブートメディアが見える）を確認する。
        - これ以降では内蔵ストレージの番号が`0`だったものとしてコマンドを解説していく
    4. `select disk 0`して内蔵ストレージを選択する（**この次の作業で、内蔵ストレージの内容を全て消去する！**）
    5. `clean`で内容を**初期化**する
    6. `convert gpt`でストレージをGPT形式にする
    7. `list part`でパーティションを表示してみる
        - このとき`clean`した直後なので、何も表示されないはず
    8. `create partition primary size=20000`で20GBのパーティションを作成する
        - Windows 10のブータブルデータが入ればいいので、20GBでなくてもいい
    9. `list part`でパーティションを表示してみる。このとき（8）で作った1つのパーティションが見える
    10. `select part 1`で作成したパーティションを選択する
    11. `format fs=fat32 label="WIN10" quick`でパーティションを**FAT32**で初期化
    12. `list volume`でCドライブとかのボリューム情報を表示する
        - このとき今起動しているUSBブートメディアにのみドライブレーター（CとかDドライブみたいな）が振られている
    13. `assign`で現在のパーティションにボリュームレターを割り当てる
    14. `list volume`で作ったパーティションと、さらにブートメディアのボリュームレターを両方とも確認する
        $$\def\D{\color{red}{\text{D}}} \def\C{\color{blue}{\text{C}}}$$
        - これ以降、ブートメディアが$\D$ドライブ、そして作ったパーティションが$\C$ドライブとなったものとして解説を進める
    15. `exit`で`diskpart`コマンドを終了する
    16. コマンドプロンプトで次を実行し$\D$ドライブの内容を$\C$ドライブへコピーする
        - `xcopy d: c: \e \h \k`
        - なお、このとき`install.wim`はもう分割されているので、`install.swm`と`install2.swm`となっておりこのままコピーすればよい
    17. `xcopy`が終了し次第、USBブートメディアを抜去しPCを再起動する
        - Windowsインストーラーが、USBブートメディアと内蔵ストレージが区別できなくなることでこの手順が必要となったため、USBメモリーはここで抜いておく必要がある
5. ストレージへのコピーが正常に行われていれば、内蔵ストレージからWindowsインストーラーが起動する
6. IMEなどを適当に選んでいくとセットアップとなり、プロダクトキーを入力しEULA（？）に同意する
7. インストール方法についての選択があるが、今回は既存のWindows OSがないので「カスタム」を選ぶ
8. インストール先として2つ表示されるので、「割り当てられていない領域」を選択する
    - 1つは手順（4）で作ったインストール用ブート領域であり、残りはディスクの余りである。ここでは自力でパーティションなどを作る必要はなく、OSに必要なリカバリー領域などはインストーラーが勝手に作ってくれる
9. 何度か再起動するが、しばらく放置すると終了する
10. MSアカウントなどを入れるよう要請されるので、Windowsの機能が全て使えるようになるまでは指示に従う
11. Windows 10が使えるようになった段階で[AOMEI Partition Assistant Standard](https://forest.watch.impress.co.jp/library/software/aomeiparti/)をインストールする
    - このソフトウェアで暫定的に作成した20GBのFAT32領域（Windowsインストーラーのあるブート領域）を破壊する
    - Windows 10に附属のパーティション編集ツールでは隣接して**いない**ボリュームを統合することができないので、このサードパーティソフトウェアを利用する
        - 手順（8）でパーティションを自力で作っておけば、隣接させることができるかもしれない……
    - Pro版を試用するか？という案内があるが、著者はフリー版のまま行った
12. 先頭にある（と思われる）20GBを破壊し、現在のCドライブと統合する

これでようやくWindows 10のインストールが完了である。あとはここからグラフィックカードなどのデバイスドライバーをインストールするなどしていけばいい。

# まとめ

今回のインストール作業を経て、Ubuntuは本当に優れたインストーラーを持っていると認識した。Windowsはむしろ実機にインストールされた状態で出荷されることが多いので、インストーラーを作り込んでもベネフィットが薄いのかもしれない。エラーが全体的に全く的外れであり、かつエラーログやエラーコードも出力しないため、全然関係のない部分を調査するなどして恐しく時間がかかっている。Twitterにも書いたが、**「それでもこの世で最も普及したOSの末裔か！」** :innocent: