10
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

非対応なのにNVMeブートすることはできるのか?

Last updated at Posted at 2020-03-21

ミッションインポッシブルじゃない?

とあるPCを「HDDにOSがインストールされた状態」から
「SSDにOSがインストールされた状態」に変更するミッションを行いました。
対象となったPCのマザーボードは、「NVMeにインストールしたOS」でブートすることに対応していません。
それなのにやろうとするなんて、無茶です。しかし、やってのけます。メーカーサポート対象外です。

なぜやるのか?

ボトルネック

ストレージの動作がボトルネックになっていたからです。
下記はウィンドウズ・エクスペリエンス・インデックス
(WEI : Windows Experience Index)のビフォーアフターです。
今回のミッションの結果を数値化してみました。

測定値の変化

Before
PS $env:userprofile> winsat formal
PS $env:userprofile> Get-CimInstance Win32_WinSat
CPUScore              : 8.7
D3DScore              : 9.9
DiskScore             : 5.5
GraphicsScore         : 6.1
MemoryScore           : 8.7
TimeTaken             : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel           : 6.1
PSComputerName        :
After
PS $env:userprofile> winsat formal
PS $env:userprofile> Get-CimInstance Win32_WinSat
CPUScore              : 8.7
D3DScore              : 9.9
+ DiskScore             : 8.9
GraphicsScore         : 6.1
MemoryScore           : 8.7
TimeTaken             : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel           : 6.1
PSComputerName        :

ご覧の通り、DiskScoreが5.5から8.9となっていることがわかります。
ゲームやCGをすることはないのでGraphicを除外すると、
アフターのほうは、だいたい8.5以上になっています。

to be ストレスフリー

そして、最も大事なポイントは、
私のようなスマホ世代の人間には8.5以上でないと
ストレスで仕事にならないということです。

精神の安定のためにもやるしかありません。
というかPCのレスポンス速度が上がって、
仕事の隙間時間が10分の1とか削減できるので、
「SSD化しない」ってのは怠惰だと思ってます。

「人間の思考読度は、書く速度に依存する」って、じっちゃんが言ってました。

基本的な概念

「ブート対応しているメディアからブートして、
SSDに居るOS君にバトンタッチする仕組み」を作ります。

どんな環境なのか?

項目
メーカー Dell
型番 Optiplex 3020 SFF
CPU i3 4150
チップセット Intel H81
SSD SP512GBP34A60M28
M.2 PCIe変換 適当にその辺のアダプタ
インストールしたいOS Windows10

元はSATA接続のHDDにWin7がインストールされていました。
上記のようにSSDを取り付けます。
※HDDの型番はどうでもいいので記載しません。

PC専門リサイクルショップとかに行くと、
DELLのこの辺の型番がゴロゴロ中古で置いてあります。
法人の一括リース契約などから流れてきた商品でしょう。

そもそもなぜブート対応していないのか?

知ってる? 知らない!? 最新SSDのキホン」で知ったのですが、
M.2方式SSDでの起動に必要な要件として、

という条件のいずれかに対応している必要があるといいます。
ところが、わたしの前においてあるPCはどちらも満たしていませんでした。

エウレカ!した最初のタイミングは?

長いこと死んだ魚のような目をしていました。
「option ROM ってなんだよ!買う前に教えろよ!」とか思っていました。

改めて様々なSSDを再度調査しました。
「OptionROM」搭載の SSD ってどのくらいあるの?って視点です。
ところが、Amazon や価格ドットコムなどの商品仕様、
さらには製造元の詳細仕様にも「OptionROM」なんて言葉は見つかりません。
どうやらマザーボード側で対処するのが推奨なようです。

ところが、このデバイスドライバの問題を回避するために、
Clover EFI というものをUEFIとWindows10との間に挿む方法を発見したのです。
その瞬間から、水を得たように手が動き出しました。

これであとはブートするだけ?

手順はたったこれだけです。

  1. CloverEFIを用意
  2. インストールメディアを通常どおりUEFI形式でブートさせます。
  3. そのままWindowsをSSDにインストールします。
  4. そして上手いことインストール完了直後の自動再起動を止めます
  5. そしてClover EFI 経由にてUEFI形式でWindowsを初回ブートします。
  6. それ以降はずっとClover EFI 経由でWindowsをブートさせます。

Clover EFI を配置

※Clover EFI は ここ ここからISOをダウンロードして、USBメモリやSSD移行前のHDDに焼いてください。ISOを焼く細かい手順は省きます。ISOファイルを更に圧縮していてファイル名も良く変更になりますが、ダウンロードするときのファイル名にISOが含まれるものを何度か解凍するとISOファイルになります。

※2021/07/12 追記 書き忘れてましたが、プロジェクトリポジトリが移動したようですね。ここが最新です。

Rufus で書き込む

画像だけ載せておきます。USBメモリなどのリムーバブルメディアからEFIをブートする場合はrufusで書き込むといいと思います。
image.png

image.png

image.png

ESPモードにすると、隠しドライブになるのでオシャレです。ただし、ESPモードは一度取り外すと、Windowsからは見えなくなるので、
初めての場合はトラブルシューティングがしやすいようにイメージモードにすることをオススメします。

また、rufus は chocolatey によるバージョン管理が簡単です。

bootdiskutilityで書き込む

HDDからEFIをブートする場合はRufusではなく、bootdiskutilityを使うのも良いかもしれません。

image.png

公式ページもSSL未適用だし心もとないですが、機能は優秀です。
HDDを選んであげると、Format Disk ボタンを押すだけで、CloverISO のダウンロードも、パーティション設定も勝手にやってくれます。

image

古い HDD を Clover EFI Boot 用にするときの Tips

Clover EFIのISOを焼く時、HDD を SATA でつなぐのは手間がかかります。
そのため、変換ケーブルなどを使ってUSBドライブとして認識させています。
image.png

また、ISOを焼くときに、USBやCD/DVDドライブしか認識されないという問題を挙げているブログが散見されます。
これはChocolateyにて26万回のダウンロードを誇る Rufus を利用すれば解決します。カタカナ読みすると「ルーファス」だそうです。公式サイトはここです。

image.png
画像の中で赤枠で囲んであるように、詳細なドライブプロパティがあります。この中に、「USB接続のHDDを一覧表示」というチェックボックスがあります。

ISOを焼くときにもとに戻したい!

RufusなどでISOを焼くと認識しなくなってしまうことがあります。これは、Bootドライブとして認識されているためです。正しい動作なので、HDD や USB メモリが壊れたわけではありません。しかし、焼くと元に戻せないのは困ります。

そんな時は、次の手順を実行します。

  1. 管理者権限でcmdかpowershellを開く
  2. diskpartコマンドでディスク管理CLIに入る
  3. list diskでディスク一覧を表示し、それっぽいのを探す
  4. select diskで対象のディスクを選ぶ
  5. cleanコマンドでパーティション削除
  6. exitでCLIを出る

これで、Rufusから書き込めるようになります。

接続方式による違い

ちなみに、SSDをSATA接続しても大して速くならないのでお金がもったいないです。
なぜかというと、SATA の最大速度が 6 Gb/s で激遅だからです。
SSDにするなら、M.2直刺しか、PCIe刺しでNVMe接続しましょう。

もう一つ、M.2でも、切り欠き1つのほうが速いです。切り欠き2つのやつは遅いです。

図解

図内のHDDは、USBメモリに置き換えたり、SSDのパーティションに置き換えたりすることができます。
architecture.png

なぜオフになっている?

さっそく、Windowsをブートしてみましたが、なんと起動しません。
Clover EFI の画面にあるブートディスク一覧のいずれを選んでも、
ずっと画面は真っ黒。そして頭は真っ白。

なんと、この一覧の中にSSDは表示されていなかったのです。
SSDがClover EFIのブートメニューに表示されなかったのは、
Cloverの初期設定で、NVMeドライバーが無効になっていたからでした。

Clover EFIが入ったブート用HDD内のディレクトリ構成は以下のようになっています。

tree
  /
  ├─??
  ├─EFI
  │  ├─BOOT
  │  └─CLOVER
  │      ├─doc
  │      ├─drivers
  │      │  ├─BIOS
+ │      │  ├─off
+ │      │  └─UEFI
  │      ├─kexts
  │      │  └─Other
  │      │      └─FakeSMC.kext
  │      │          └─Contents
  │      │              ├─MacOS
  │      │              └─_CodeSignature
  │      ├─themes
  │      └─tools
  ├─??

ここで注目すべきは、
/EFI/CLOVER/drivers/off/NvmExpressDxe.efiです。
これがPCIeによるNVMe SSDブートに必要なのですが、
なぜか「off」というフォルダに入っているではないですか!
これを/CLOVER/drivers/UEFI/NvmExpressDxe.efiに移動させます。

※この時、ESPモードでISOを焼いた場合は、普通にexplorerから変更することはできません。CUIか、notepad.exeの「開くダイアログ」などから実行します。アクセス設定を一時的に触るため、後述するESPの項目をご覧ください。

※この作業をMacで行う場合には、Clover Configurator が便利です。

CLOVER EFIをブートメニューに登録

CLOVER EFIが ブートメニューの一覧に無い!そんな時は、/EFI/CLOVER/CLOVERX64.efiをブートメニューに新規登録してあげます。Dellだと、下記のような感じになります。
image.png
これにより追加される項目と同列に「Windows Boot Manager」があります。目障りなので使わないので消しておきます。もちろん、残しておいても問題ありません。

ESPモードでISOを焼いたときの設定変更

ESP(EFI System Partition)モードで焼くと、一般ユーザーからは存在を認知できません。そのため、不特定多数が利用したり、お子様に利用させたりする場合に利用したいモードです。

作業前準備

Windows10インストール完了後にdiskmgmt.mscを開くと、(ディスク?パーティション?)のようになっていて、ボリュームレターがない状態です。このままだとWindows上からは全くアクセスできません。そこで、ボリュームレターを割付してあげます。

ISOを焼いたPCで設定変更する場合は、この作業は不要です。この部分は、焼き終えたCloverで起動したまま/EFI/CLOVER/config.plistを書き換えたい場合の方法を記しています。

DiskPart
List Volume

と管理者権限のコマンドプロンプトでコマンドを打つと

Volume  ### Ltr Label Fs Type Size Status Info

-----------------------------------------------------
Volume 0   EFI   FAT32  Partition 256MB 正常 システム
Volume 1   C     FAT32  Partition 256MB 正常 システム

となっています。ここで、Volumeの0にアクセスしたいので、

Select Volume 0

を実行します。すると、ターゲットがVolumeの0になります。
次に、空いているドライブレターを付けます。ここではDを割り当てます。

Assign Letter=D

正常に割り当てられたら、exitします。

目的の作業

管理者権限でコマンドプロンプトを開き、先ほど設定したドライブレターの位置に移動してみます。

cd d:

ここで上手く移動できれば、

notepad .\EFI\CLOVER\config.plist

とかで設定を編集できたりします。

作業後のお掃除

設定作業が終わりましたら、キレイに戻しましょう。

先ほどとほぼ同じ手順ですが、ドライブレターを外します。
ボリュームレターとボリューム番号は適宜置き換えて、下記のコマンドを実行します。

Diskpart
List Volume
Select Volume 0
Remove Letter=D
List Volume
Exit

1回目のList Volumeと2回目とで、ドライブレターが外れている確認が出来ると思います。

Warning メッセージの解決

Clover EFI ver. 4000番台の内容です。最新版では解決済みの可能性があります。
筆者は5000番台になってからはエラーメッセージを見ていません。

/EFI/CLOVER/config.plistの中身を書き換えます。

FixHeaders

Warning : FixHeaders Exist in ACPI and ACPI/DSDT/Fixes. Delete FixHeader from ACPI/DSDT/Fixes.

ドキュメントによれば、FixHeadersというキーが重複しているために出るメッセージとのこと。ACPI/FixHeadersACPI/DSDT/Fixes/FixHeadersがあり、ACPI/DSDT/Fixes/FixHeadersは互換性のために残されているだけなので不要です。そのため、「ACPI/DSDT/Fixes側のFixHeadersを消した方がいいよ」と注意してくれているそうです。

ProductName

Warning : ProductName is not defined whole smbios dict is ignored at line 1194.

ドキュメントによれば、Cloverはモデル名に応じて残りのパラメーターを自動的に調整するため、設定作業を省略できるとのこと。ただし、Windowsをインストールするので、何でもいいです。とりあえず#を消してコメントアウトを解除します。

- <key>#ProductName</key>
+ <key>ProductName</key>
  <string>iMac13,2</string>

デフォルトでiMac13,2が設定されていますが、Windowsなので設定は無視されます。何でもいいので、そのまま残します。

結果

※2020/06/22追記

CrystalDiskmarkを使用してベンチマークテストを実施しました。
image.png
※Chromeタブ20個くらい、VirtualBoxでLinux1つ、リモートデスクトップ接続2つを立ち上げながら測定しました。本来もう少しいいスコアがでると思います。

※2021/03/29 追記

同機種PCでまた作業する機会がありましたので、載せておきます。
SSDはASX8200PNP-512GT-Cを使用しています。
Amazonでお買い求めの場合はこちら→https://www.amazon.co.jp/dp/B07MT89VLM
※SSDの性能が持てあまされております。
※アフィリエイトリンクではありません。
無題.png

※2021/07/13 追記

また作業する機会がありましたので、
型番など載せておきます。
SSD : ASX8100NP-512GT-C
Adapter : MHQJRH M.2 NVME SSD to PCIe 3.0 x4
CPU : Intel(R) Xeon(R) CPU E5-1620 v2
GPU NVIDIA Quadro 4000
chipset : Intel(R) C600/X79 series

 wmic MEMORYCHIP get BankLabel,DeviceLocator,Capacity,Speed
BankLabel  Capacity    DeviceLocator  Speed
           4294967296  DIMM1          1600
           4294967296  DIMM2          1600
After
PS $env:userprofile> winsat formal
PS $env:userprofile> Get-CimInstance Win32_WinSat
CPUScore              : 8.9
D3DScore              : 9.9
DiskScore             : 8.75
GraphicsScore         : 8.2
MemoryScore           : 8.9
TimeTaken             : MostRecentAssessment
WinSATAssessmentState : 1
WinSPRLevel           : 8.2
PSComputerName        :

無題.png
今回使用したSSDは前回の型落ち品なのですが、シーケンシャルリードで倍以上の速度が出ています。
やはり、CPUとマザボがしっかりしていないと、SSDだけ早くてもモッタイナイかもですね。

つまずきやすいポイント解説

つまづきポイントのおさらいです。

  • BIOSがLeagacyブートのみの場合はCloverEFIのサポート対象外
    • BIOSがUEFIブートに対応している必要がある
  • PCIeスロットにSSDを挿してWindowsをブートするとき
    • マザーボードがブート対応しているか確認
    • SSDにoption ROMが載っているか確認
  • NVMeでの起動のためにClover EFIを使用するとき
    • NvmExpressDxe.efiがONかどうか確認
  • SSDがClover EFIに認識されるのはWindowsインストール後から!!
  • BIOSでPCIeの現状接続情報にMassStrageってあればたぶん行ける
    • BIOSからは記憶域として認識できるけど、ブートドライブとしてだけ認識していない状態
    • CloverEFIやWindowsInstallMediaから認識できればOK

参考ページ

[Guide] NVMe-boot without modding your UEFI/BIOS (Clover-EFI bootloader method) | win-raid forum
https://www.win-raid.com/t2375f50-Guide-NVMe-boot-without-modding-your-UEFI-BIOS-Clover-EFI-bootloader-method.html
NVME非対応マザー(?)で改造無しにブートしようとした顛末 | CRES&ROCK3SIDEGUIDE WebLog
https://cresrock.wordpress.com/2017/05/17/nvme-boot_with_nvme-unsupported-uefi/
【誰得】NVMe非対応の環境でNVMe SSDからブートする【魔改造ではない】| 続:低速PC鈍行記。
https://row-thermit.blogspot.com/2019/02/nvmenvme-ssd.html
Boot Disk Utility
http://cvad-mac.narod.ru/index/bootdiskutility_exe/0-5

原典

Clover EFI bootloader
https://sourceforge.net/projects/cloverefiboot/
Clover EFI bootloader Wiki
https://sourceforge.net/p/cloverefiboot/wiki/Home/
Clover EFI Github
https://github.com/CloverHackyColor/CloverBootloader

Note : Clover EFI は Hackintosh の界隈で有名らしいです。Clover EFI の次に来るのは、その後輩の OpenCore なようです。

ちなみに

私はUSBメモリを挿しっぱなしにするのは嫌だったので、
もともと装備されていたHDDにClover EFIを配置しました。

Clover EFI が読み込まれるのは起動時なので、
USBメモリよりは起動が遅いかもしれません。
しかしデスクトップPCなので常時起動だから気になりません。

そもそも、マザーボードが新しければ、こんなに苦労しません。

もうひとつおまけ

SSDはGPT形式にフォーマットしたほうがいいです。
詳細は省きますが、Windowsインストールメディアでのインストール実行中に以下の手順を実行するだけです。

  1. Shift+F10でコマンドプロンプト起動
  2. diskpartコマンド
  3. list diskでインストール対象のSSDを確認
  4. 上で確認したdiskに対してselect disk
  5. cleanする
  6. convert gptする
  7. exit×2する

参考:Docs / Windows コマンド / サーバーの役割別のコマンド / diskpart

関連

まとめ

それでは、最後まで読んでくださった皆さんに感謝と幸運を。
ステキなSSDライフを満喫できますように!!!!!!!!

Windwos 11 の登場により、この記事の方法は旨味が無くなりました。Windows 11 に必要なTPM2.0に対応していない CPU が多いです。

Excelsior!

10
18
20

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
18

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?