ミッションインポッシブルじゃない?
とあるPCを「HDDにOSがインストールされた状態」から
「SSDにOSがインストールされた状態」に変更するミッションを行いました。
対象となったPCのマザーボードは、「NVMeにインストールしたOS」でブートすることに対応していません。
それなのにやろうとするなんて、無茶です。しかし、やってのけます。メーカーサポート対象外です。
なぜやるのか?
ボトルネック
ストレージの動作がボトルネックになっていたからです。
下記はウィンドウズ・エクスペリエンス・インデックス
(WEI : Windows Experience Index)のビフォーアフターです。
今回のミッションの結果を数値化してみました。
測定値の変化
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 :
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での起動に必要な要件として、
- SSD側にOption ROMを搭載しているか?
- マザー側がPCI Expressからのブートに対応しているか?
という条件のいずれかに対応している必要があるといいます。
ところが、わたしの前においてあるPCはどちらも満たしていませんでした。
エウレカ!した最初のタイミングは?
長いこと死んだ魚のような目をしていました。
「option ROM ってなんだよ!買う前に教えろよ!」とか思っていました。
改めて様々なSSDを再度調査しました。
「OptionROM」搭載の SSD ってどのくらいあるの?って視点です。
ところが、Amazon や価格ドットコムなどの商品仕様、
さらには製造元の詳細仕様にも「OptionROM」なんて言葉は見つかりません。
どうやらマザーボード側で対処するのが推奨なようです。
ところが、このデバイスドライバの問題を回避するために、
Clover EFI というものをUEFIとWindows10との間に挿む方法を発見したのです。
その瞬間から、水を得たように手が動き出しました。
これであとはブートするだけ?
手順はたったこれだけです。
- CloverEFIを用意
- インストールメディアを通常どおりUEFI形式でブートさせます。
- そのままWindowsをSSDにインストールします。
- そして上手いことインストール完了直後の自動再起動を止めます。
- そしてClover EFI 経由にてUEFI形式でWindowsを初回ブートします。
- それ以降はずっとClover EFI 経由でWindowsをブートさせます。
Clover EFI を配置
※Clover EFI は ここ ここからISOをダウンロードして、USBメモリやSSD移行前のHDDに焼いてください。ISOを焼く細かい手順は省きます。ISOファイルを更に圧縮していてファイル名も良く変更になりますが、ダウンロードするときのファイル名にISOが含まれるものを何度か解凍するとISOファイルになります。
※2021/07/12 追記 書き忘れてましたが、プロジェクトリポジトリが移動したようですね。ここが最新です。
Rufus で書き込む
画像だけ載せておきます。USBメモリなどのリムーバブルメディアからEFIをブートする場合はrufusで書き込むといいと思います。
▼
▼
ESPモードにすると、隠しドライブになるのでオシャレです。ただし、ESPモードは一度取り外すと、Windowsからは見えなくなるので、
初めての場合はトラブルシューティングがしやすいようにイメージモードにすることをオススメします。
また、rufus は chocolatey によるバージョン管理が簡単です。
bootdiskutilityで書き込む
HDDからEFIをブートする場合はRufusではなく、bootdiskutilityを使うのも良いかもしれません。
公式ページもSSL未適用だし心もとないですが、機能は優秀です。
HDDを選んであげると、Format Disk ボタンを押すだけで、CloverISO のダウンロードも、パーティション設定も勝手にやってくれます。
古い HDD を Clover EFI Boot 用にするときの Tips
Clover EFIのISOを焼く時、HDD を SATA でつなぐのは手間がかかります。
そのため、変換ケーブルなどを使ってUSBドライブとして認識させています。
また、ISOを焼くときに、USBやCD/DVDドライブしか認識されないという問題を挙げているブログが散見されます。
これはChocolateyにて26万回のダウンロードを誇る Rufus を利用すれば解決します。カタカナ読みすると「ルーファス」だそうです。公式サイトはここです。
画像の中で赤枠で囲んであるように、詳細なドライブプロパティがあります。この中に、「USB接続のHDDを一覧表示」というチェックボックスがあります。
ISOを焼くときにもとに戻したい!
RufusなどでISOを焼くと認識しなくなってしまうことがあります。これは、Bootドライブとして認識されているためです。正しい動作なので、HDD や USB メモリが壊れたわけではありません。しかし、焼くと元に戻せないのは困ります。
そんな時は、次の手順を実行します。
- 管理者権限でcmdかpowershellを開く
-
diskpart
コマンドでディスク管理CLIに入る -
list disk
でディスク一覧を表示し、それっぽいのを探す -
select disk
で対象のディスクを選ぶ -
clean
コマンドでパーティション削除 -
exit
でCLIを出る
これで、Rufusから書き込めるようになります。
接続方式による違い
ちなみに、SSDをSATA接続しても大して速くならないのでお金がもったいないです。
なぜかというと、SATA の最大速度が 6 Gb/s で激遅だからです。
SSDにするなら、M.2直刺しか、PCIe刺しでNVMe接続しましょう。
もう一つ、M.2でも、切り欠き1つのほうが速いです。切り欠き2つのやつは遅いです。
図解
図内のHDDは、USBメモリに置き換えたり、SSDのパーティションに置き換えたりすることができます。
なぜオフになっている?
さっそく、Windowsをブートしてみましたが、なんと起動しません。
Clover EFI の画面にあるブートディスク一覧のいずれを選んでも、
ずっと画面は真っ黒。そして頭は真っ白。
なんと、この一覧の中にSSDは表示されていなかったのです。
SSDがClover EFIのブートメニューに表示されなかったのは、
Cloverの初期設定で、NVMeドライバーが無効になっていたからでした。
Clover EFIが入ったブート用HDD内のディレクトリ構成は以下のようになっています。
/
├─??
├─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だと、下記のような感じになります。
これにより追加される項目と同列に「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/FixHeaders
とACPI/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を使用してベンチマークテストを実施しました。
※Chromeタブ20個くらい、VirtualBoxでLinux1つ、リモートデスクトップ接続2つを立ち上げながら測定しました。本来もう少しいいスコアがでると思います。
※2021/03/29 追記
同機種PCでまた作業する機会がありましたので、載せておきます。
SSDはASX8200PNP-512GT-Cを使用しています。
Amazonでお買い求めの場合はこちら→https://www.amazon.co.jp/dp/B07MT89VLM
※SSDの性能が持てあまされております。
※アフィリエイトリンクではありません。
※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
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 :
今回使用した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インストールメディアでのインストール実行中に以下の手順を実行するだけです。
- Shift+F10でコマンドプロンプト起動
-
diskpart
コマンド -
list disk
でインストール対象のSSDを確認 - 上で確認したdiskに対して
select disk
-
clean
する -
convert gpt
する -
exit
×2する
参考:Docs / Windows コマンド / サーバーの役割別のコマンド / diskpart
関連
まとめ
それでは、最後まで読んでくださった皆さんに感謝と幸運を。
ステキなSSDライフを満喫できますように!!!!!!!!
Windwos 11 の登場により、この記事の方法は旨味が無くなりました。Windows 11 に必要なTPM2.0に対応していない CPU が多いです。
Excelsior!