Windows 10(version1511)による S.M.A.R.T.情報確認用ブータブルUSBの作成方法

## はじめに
HDDやSSDなどでディスク障害が疑われる場合，まず確認するのは，ディスク自体が持つ自己診断機能「S.M.A.R.T.」の情報だろう．Windowsにおいて，S.M.A.R.T.情報を確認する上で強力なツールとして，ひよひよ氏が公開している「[CrystalDiskInfo](http://crystalmark.info/software/CrystalDiskInfo/)」がある．
「CrystalDiskInfo」は非常に多くのディスクに対応し，Windows ServerのServerCoreインストールであっても動作するが，OSがブートできなくては使用することができない．そこで，Windows オペレーティング システムのインストール、展開、修復に使われる，RAM上で動作する軽量Windowsの「Windows PE」を用いて，CrystalDiskInfoを起動するだけのブータブルUSBを作成する方法を説明する．

なお，Windows PEの構成に必須の「[Windows ADK for Windows 10 Version 1511](https://msdn.microsoft.com/ja-jp/windows/hardware/dn913721.aspx#adkwin10)」はインストールが完了しているものとする．

## 1.  [展開およびイメージング ツール環境]の起動
スタートメニューから，[展開およびイメージング ツール環境] を右クリックし、[管理者として実行]
管理者として実行しないと，DISMコマンドが使用できない．

## 2. Windows PE ファイルのコピー
作業用のフォルダ（E:\）にWindows PEのファイルをcopypeコマンドを用いてコピーする．

32bit用のWindows PEの場合は
`copype x86 "E:\WinPE_x86"`
を実行

64bit用のWindows PEの場合は
`copype amd64 "E:\WinPE_x64"`
を実行（以降は64bit用で説明）

## 3. イメージのマウント
Windows PEのイメージファイル（boot.wim）を作業用のフォルダにマウントする．
`dism /Mount-Image /ImageFile:"E:\WinPE_x64\media\sources\boot.wim" /Index:1 /MountDir:"E:\WinPE_x64\mount"`

## 4. パッケージの追加
「WinPE-WMI」パッケージを追加する．
`dism /Image:"E:\WinPE_x64\mount" /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-WMI.cab"`
`dism /Image:"E:\WinPE_x64\mount" /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ja-jp\WinPE-WMI_ja-jp.cab"`

## 5. 日本語パッケージの追加と適用
### 5.1 インストールされている言語の確認
`dism /Image:"E:\WinPE_x64\mount" /Get-Intl`
![4-1.PNG](https://qiita-image-store.s3.amazonaws.com/0/107516/60373d83-ced6-9d51-3ecd-f8251c40e1eb.png)
en-USがインストールされている

### 5.2 日本語ローカライズパッケージの追加
`dism /Image:"E:\WinPE_x64\mount" /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\WinPE-FontSupport-JA-JP.cab"`
`dism /Image:"E:\WinPE_x64\mount" /add-package /packagepath:"C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\WinPE_OCs\ja-jp\lp.cab"`

### 5.3 Windows PEの日本語化
- UI 言語，システムロケール，ユーザーロケール，入力ロケールを設定  
`dism /Image:"E:\WinPE_x64\mount" /Set-AllIntl:ja-JP`
- 入力ロケールを設定  
`dism /Image:"E:\WinPE_x64\mount" /set-InputLocale:0411:00000411`
- タイムゾーンを設定  
`dism /Image:"E:\WinPE_x64\mount" /Set-TimeZone:"Tokyo Standard Time"`
- キーボードドライバの設定  
`dism /Image:"E:\WinPE_x64\mount" /Set-LayeredDriver:6`
- セットアップで使われる既定の言語を設定  
`dism /Image:"E:\WinPE_x64\mount" /Set-SetupUILang:ja-JP`
- セットアップで使われる既定の言語を設定  
`dism /Image:"E:\WinPE_x64\mount" /Gen-LangINI /distribution:"E:\WinPE_x64\media"`


### 5.4 インストールされている言語の確認
`dism /Image:"E:\WinPE_x64\mount" /Get-Intl`
![4-2.PNG](https://qiita-image-store.s3.amazonaws.com/0/107516/52f64a73-1f22-c0e2-9fa0-dc106c2ef12b.png)
日本語が選択されている．

## 6. CrystalDiskInfoのイメージへの追加
hiyohiyo氏のページより，CrystalDiskInfoのポータブル版(zip)をダウンロードする．
![6-1.PNG](https://qiita-image-store.s3.amazonaws.com/0/107516/7a4fa3bd-36ba-6a3a-b8b3-7c66ed2ef978.png)
http://crystalmark.info/download/
なお，通常版，Shizuku Editionのどちらを用いても構わない．（以降はShizuku Editionで説明する）

![6-2.PNG](https://qiita-image-store.s3.amazonaws.com/0/107516/5723746a-b126-2e49-5028-c539b1978341.png)
ダウンロードしたzipファイルを展開し，「CrystalDiskInfo6_7_4Shizuku」フォルダを「CrystalDiskInfo」にリネームして「E:\WinPE_x64\mount\Program Files\」以下にコピーする．

## 7. スタートアップスクリプトの修正
Windows PE起動時にCrystalDiskInfoを自動起動するようにスタートアップスクリプトを修正する.
「E:\WinPE_x64\mount\Windows\System32\startnet.cmd」を以下の内容に変更する．

```bat:startnet.cmd
wpeinit
@echo off
"x:\Program Files\CrystalDiskInfo\DiskInfoSx64.exe"
echo WindowsPEをシャットダウンするには「wpeutil shutdown」を使用してください。
@echo on
```

## 8. イメージのコミットとアンマウント
今までの作業用のフォルダの変更箇所をイメージファイル（boot.wim）にコミットして，アンマウントする．
`dism /Unmount-Image /mountdir:"E:\WinPE_x64\mount" /commit`
※64bitのWindows PEでは，64bitネイティブのアプリケーションしか動作しない．

## 9. ISOイメージの作成
Makewinpemediaコマンドを用いて，ISOイメージファイルを生成する．
`Makewinpemedia /iso "E:\WinPE_x64" "E:\WinPE_CDI_x64.iso"`

※直接USBフラッシュメモリに書き込むには，次のコマンドラインを実行する．
`Makewinpemedia /ufd "E:\WinPE_x64" F:`
（「F:」はUSBフラッシュメモリのドライブ文字とする）

## その他
デバイスドライバが必要な場合は，イメージ編集中に
`dism /Image:"E:\WinPE_x64\mount" /Add-Driver /Driver:[infファイルのあるフォルダ]`
とすることで，デバイスドライバを含めることができる．
詳しくは次の参考ページを参照してほしい．

- Windows 8.1 Updateに対応したカスタマイズしたWindows PE 5.1を用意する（その２）  
https://infra20th.wordpress.com/2014/07/10/windows-8-1-update%E3%81%AB%E5%AF%BE%E5%BF%9C%E3%81%97%E3%81%9F%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%81%97%E3%81%9Fwindows-pe-5-1%E3%82%92%E7%94%A8%E6%84%8F%E3%81%99%E3%82%8B-2/
- MSDN - オフラインの Windows PE イメージにデバイス ドライバーを追加する  
https://technet.microsoft.com/ja-jp/library/dd799289(v=ws.10).aspx

## 参考ページ
- MSDN - DISM イメージ管理のコマンドラインオプション  
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898549.aspx
- MSDN - DISM の地域と言語サービスのコマンドラインオプション  
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898550.aspx
- MSDN - Makewinpemediaのコマンドラインオプション  
https://msdn.microsoft.com/ja-jp/library/windows/hardware/dn898587.aspx
- ＠IT - 管理者必携のトラブルシューティングツール「Windows PE 5.0」の起動用USBメモリを作成する (2/2)  
http://www.atmarkit.co.jp/ait/articles/1402/13/news133_2.html
- 量産メモ帳 - Windows 10 で Windows PE のディスクイメージを作成する。  
http://rms-099.hatenablog.jp/entry/2015/10/06/000000