今回のテーマは久しぶりにハードウェア関連です。

古い PC (第3世代 Core i5) で NVMe の M.2 SSD をブートドライブにして OS を起動させて見ました。

ずっと放置していた NVMe のアダプタと空いている M.2 SSD を、いい加減使ってみようと思いました。

結論:やればできる

SATA の SSD でもアクセス速度が HDD よりも速いのでサクサク体験できるようになりますが、NVMe ならさらにサクサクするはずです。

古い PC でもディスクアクセスがそれだけサクサクしていると、ちょっとくらい古いプロセッサの PC でもなかなか快適です。

ということで、

  • 古い PC で NVMe をブートドライブにする仕組みと
  • 必要になるもの
  • インストール

という流れで実際にやって見ました。

古いPCでNVMeをブートドライブにする仕組み。

まず、NVMe についてサラッと説明しておきましょう。

NVMeとは「Non-Volatile Memory Express」を略した呼び名、直訳すると「メッチャ速い不揮発性メモリ」という感じです。

内部ストレージの代表的な規格として Serial ATA (SATA) が挙げられます。

現在もっとも普及している Serial ATA Revision 3.0 の転送速度は600MB/s (6Gbit/s, Selial ATA-600) と、とても高速なのですが HDD 用の規格だったためここらへんが上限になります。

一方の NVMe は、古い PC の場合 PCI Express (PCIe) を使って接続するため PCI Express の世代とレーン数 (リンク幅) に依存しますが、PCI Express Gen2 の1レーンあたりの実効データ速度は最大で片方向 500MB/s 、双方向 1GB/s となります。

なので、この NVMe をブートドライブとして使えば、めちゃ速くなるわけです。

考えるだけでワクワクしますね。

で、NVMe をブートドライブとして使うためには2つの条件があります。

条件① マザーボードが BIOS ではなく UEFI であること。

条件② UEFI に NVMe のデバイスドライバが組み込まれていること。

この2つの条件を満たしていなければ NVMe から OS を起動させることができません。

UEFI は BIOS 後継にあたるもので、NVMe は UEFI から使えるようになった規格です。

なので、基本的にはマザーボードが UEFI でなければいけません。

Windows 10 の場合、OS 自体には NVMe のドライバが組み込まれているため Windows 10 が起動してしまえば NVMe を使うことができます。

ですが、OS が起動する前に起動する UEFI に NVMe のドライバが組み込まれていないと、そこにインストールされている OS を読み込む事ができないため、結果として OS を起動させる事ができません。

つまり古い世代の PCは、データ保存用として OS が起動したあとなら NVMe が使えてもブートドライブとして使うための条件のいずれか、または両方を満たしていないためブートドライブとして使うことができません。

ですが、コレを使えるようにするというのが、今回の動画の趣旨です。

○実験機

今回用意したマシンは HP Compaq Pro 6300 SFF です。

詳細スペックはコチラ。

HP Compaq Pro 6300 SFF 改

  • CPU: Intel Core i5-3550 (3.30GHz)
  • RAM: 16GB
  • Storage: 120GB SSD (SATA III)

Intel Core i シリーズの第3世代にあたる機種です。

この頃くらいの機種からマザーボードが UEFI に対応するようになってきています。

もともとは Core i3 搭載機でしたが、コチラの動画でプロセッサを交換してました。

普段は Ubunt や MX-Linux, Manjaro をインストールして使っているものです。

で、この Compaq Pro 6300 SFF も UEFI に対応しています。

なので、NVMe をブートドライブとして使うための条件①はクリアしていますが、残念なことに条件②のデバイスドライバはクリアしていません。

ちなみに、せっかくならもっと古い PC でも試そうと思っていたのですが、あると思いこんでいた Core i シリーズ第2世代以前のマシンはどっかのタイミングで全部処分してしまってました…。

また、BIOS なのか UEFI なのかわからない場合、Windows 10 であればメニューボタンで右クリックしたときに表示される一覧から「ファイル名を指定して実行(R)」で「msinfo32」を実行し、表示された「システム情報」の「BIOS モード」で確認できます。

BIOS モードが「レガシー」なら BIOS (MBR)、「UEFI」なら文字通り UEFI (GPT) で動いています。

いずれにせよ、このままだと NVMe をブートドライブにできないので条件をクリアしていきましょう。

準備。

古い PC で NVMe をブートドライブとして使うための、条件2つをクリアしていくためには

いくつかの準備が必要です。

  • 準備① NVMe アダプタと M.2 SSD
  • 準備② CLOVER Bootloader
  • 準備③ OS のインストールメディア

以上が必要になります。

さっそく揃えていきましょう。

準備① NVMe アダプタと M.2 SSD

まず、当然ではありますが古い PC では NVMe のスロットがありません。

そこで、 PCI Express を使います。

以前であれば PCI Express に直接接続する NVMe もありましたが、現在ではアダプタを使って M.2 規格の SSD を接続するのが一般的です。

ちなみに、形がよく似ている mSATA という規格もありますが、端子部の形が違うのと、最大転送速度の違いがあるので全くの別物です。

また、マザーボードの PCI Express のリビジョンを超えることができないため、スピードは古い規格の方に限定されてしまいます。

例えばマザーボードが Gen2 で SSD が Gen3 の場合、マザーボード側の Gen2 の速度が上限となります。

逆に SSD が Gen2 でマザーボード側が Gen3 だった場合にも、速度の上限は Gen2 になります。

もしも購入する際は、マザーボードのレーン数や PCI Express のリビジョン、アダプタと SSD の世代をよくチェックしてください。

ちなみに、今回のマシンのチップセットを調べてみると、Intel Q75 Express チップセットということで PCI Express のリビジョンは 2.0 でレーンの最大数は x8 でした。

以前、アダプタを購入する際に下位互換はあるだろうと思い「せっかくなら」とアダプタのレーン数は x16 で、SSD は Gen3 を買っておきました。

EZDIY-FAB NVME PCIeアダプタ+ ヒートシンク付き
PCIe Gen3およびPCIe Gen2 M.2 NGFF 80mm、60mm、42mm SSDをサポート

https://amzn.to/3oVfN4t

Patriot SSD 256GB SCORCH M.2 2280 PCIe Gen.3 x 2 (NVMe 1.2)

https://amzn.to/3wyNFql

この SSD の最大読み込み速度は 1,700MB/sで、最大書き込み速度 780MB/s という

理論上 SATA SSD の3倍近いスピードです。

ということで、準備①はクリアです。

準備② CLOVER Bootloader

次は条件②

UEFI に NVMe のデバイスドライバが組み込まれていること。

をクリアするために CLOVER Bootloader (CLOVER Boot Manager) を用意します。

コレは何者かと言うと、UEFI をエミュレーションして OS を起動させるものです。

Apple 以外のマシンで macOS を起動させる「Hackintosh」に興味を持ったことがある方なら、いちどは耳にしたことがある名前ではないでしょうか。

古い PC で NVMe を使うのにも役立ってくれます。

PC は電源を入れた際にまずは BIOS なり UEFI を読み込んで、それから OS を起動させます。

NVMe は UEFI から使えるようになったものなので、BIOS 環境では起動用に使うことができません。

また、今回のマシンのように UEFI でも NVMe のドライバが組み込まれていないため、NVMe をブートドライブとして使うことができない場合があります。

でも、どちらの場合でも USB メモリから起動させる事はできますよね?

※それ以上古いのは今回の対象外です。

つまり、USB メモリから CLOVER Bootloader を起動させ、NVMe をサポートしている UEFI で起動させたフリをさせるわけです。

ということで、CLOVER Bootloader をダウンロードして起動メディアを作りましょう。

https://github.com/CloverHackyColor/CloverBootloader
https://sourceforge.net/projects/cloverefiboot/

最新版は GitHub にて配布されているので、そちらからダウンロード。

7z 形式のをダウンロードして展開します。

あとは Rufus で書き込みます。

んで、ここから一手間加えます。

CLOVER を書き込んだだけだと、まだ NVMe のドライバが組み込まれていない状態なのでドライバを組み込む必要があります。

まず、CLOVER Bootloader を書き込んだ USB メモリにアクセスします。

「EFI」⇒「CLOVER」⇒「drivers」⇒「off」⇒「NvmExpressDxe.efi」

「NvmExpressDxe.efi」を「EFI」⇒「CLOVER」⇒「drivers」⇒「UEFI」以下に移動またはコピーします。

コレで準備が整いました。

出来上がった CLOVER Bootloader の USB メモリから起動させれば、CLOVER Bootloader が UEFI のフリをして NVMe をブートドライブとして認識してくれるので、ここから OS 起動させることができます。

準備③ OS のインストールメディア

あとは OS のインストールメディアを用意します。

今回は、CrystalDiskMark を使ってストレージの速度を計測したいので Windows 10 をインストールします。

なので、Windows のインストールメディアが必要になります。

Windows 10 のインストールメディアはチョット前の動画になりますが、Rufus を使ったコチラを参考にしてみてください。

んで、Windows 10 のインストールメディアの作成の際に MBR 形式ではなく GPT 形式での書き込みです。

Linux の場合、ディストリビューションやインストーラーにもよりますが、インストールの際に MBR か GPT を選べたりします。

Windows の場合、イントールメディアのパーティション構成によって自動的に決められてしまうので、Rufus の設定は GPT にしておくと良いです。

ということで、Windows 10 のインストールメディアを GPT で作成します。

インストールメディアが出来上がったら USB メモリから起動できるようにして、さっそく Windows 10 のインストールを行います。

ちなみに、CSM (Compatibility Supported Module) は無効にしておく必要があります。

NVMe へOSをインストール。

Windows 10 のインストールメディアをマシンにセットして起動させます。

インストールの際の注意点として、今回のマシンには Ubuntu がインストールされている SATA 接続の SSD と NVMe が混在する状況になるのでインストール先に注意です。

「ドライブ 0」が SATA の方で、「ドライブ 1」が NVMe です。

イロイロな Linux でもテストしていたので、パーティションがいくつかに分割されていました。

これらを全部初期化して、インストーラーにおまかせします。

んで Windows 10 の場合、インストールが終了すると自動的に再起動しますが、今回のマシンには SATA 接続の SSD に Ubuntu がインストールされるため、再起動の際にブルースクリーンが表示されました。

ちなみに、NVMe にしか OS が入っていない場合には、延々とインストーラーが起動します。

なので、一旦強制終了してインストールメディアと CLOVER Bootloader とを差し替えます。

CLOVER Bootloader が起動すると、インストールされている OS の一覧が表示されます。

この中から、NVMe にインストールした OS 今回の場合は Windows 10 なので、いちばん左の Windows のロゴが書いてある「Boot Microsoft EFI boot from EFI」を選択します。

右にある「Boot Windows from Legacy HD2」は違うので、コチラはスルーしてください。

Windows の初回起動設定は、通常通り設定しておきます。

ちなみに、今回はテストなのでオフラインアカウントで設定してます。

動作確認

で、さっそく CrystalDiskMark で、ストレージの速度を計測しました。

なんと3倍近いスピードです!

起動もとても速くなり Window のは測り損ねてしまいましたが、Linux の場合は電源ボタンを押してからのトータルで40~50秒くらいで起動します。

電源ボタンを押してから20秒ほどで一旦 CLOVER が表示され、CLOVER の画面からは15~20秒くらいなので相当速く感じます。

こうなると、もう現役のメインマシンとして使えますね。

今回のまとめ。

ということで、今回は古い NVMe 非対応の PC に NVMe アダプタを使って M.2 規格の SSD から OS を起動させました。

NVMe をブートドライブするためには、2つの条件をクリアしなければいけませんでした。

条件① マザーボードが BIOS ではなく UEFI であること。

条件② UEFI に NVMe のデバイスドライバが組み込まれていること。

古い PC でこれらの条件をクリアするために、CLOVER Bootloader という UEFI のフリをするプログラムを使ってNVMe をブートドライブとして認識させ、そこから OS を起動させました。

今回の HP Compaq Pro 6300 SFF は、PCI Express が Gen2 でしたが最大レーンは x8 で、

M.2 SSD が Gen3.0 x2 だったため、ほぼほぼ最大転送速度が出たと思います。

3倍も転送速度が違うと、やっぱり「速い」って感じますね。

ただ一つ気になるのは、毎回 CLOVER Bootloader が必要になること。

つまりは USB メモリ挿しっぱなしです。

目立たないように小型で、しかも耐久性の高い USB メモリを使いました。

背面のポートを使えば全く気になりませんが、それでも USB メモリは内部ストレージに使われる HDD や SSD よりも壊れやすいのでチョット心配です。

でもまぁ、それを差し引いてもこの速度には満足です。

今までも SATA SSD という環境でも不満はありませんでしたが、NVMe の速度を知るとダメですね。

特に Linux だと NVMe の速度が体感できてしまい、SATA SSD が遅く感じます。

ウチのデスクトップ PC の NVMe 化が加速しそうな気配がします…。