今回の更新は Windows 用 PC のUEFIマザーの「PCが高速起動する部分」のお話です。Windows 8 以降、「高速スタートアップ」や「Fast Boot」という機能が登場した後では、理解するのが難しくなってしまった部分です。

これを言葉で説明するのがむずかしい。
図にするとこんな感じ。
UEFIマザーの「PCが高速起動する部分」
▲クリックで拡大
UEFIマザーが、「高速スタートアップ」と「Fast Boot」を無効にしてもレガシーBIOSのマザーより高速に起動するのは何故なのかを調べ、そこから自分の欲しい情報のみをまとめたページです。

まえがき(おことわり)

ちなみに、このページはサイト内の他ページと比べて雑です。
今までよく分かっていなかった部分を改めて調べてみたお話が大部分を占めるのですが、正直なところかなり難しく、また上手くまとめられませんでした。
間違った内容が含まれている恐れがあります。
まえおきも長めです。本題に入るのは、すこし後です。

このページの概要

UEFI マザー に GPT形式 でWindows 8以降をインストールすると、PCの起動、OSの起動がかなり高速化します。

2013年頃から散々言われている事ですが、

これらの現象について、何故なのか、どういう仕組みになっているのか?という疑問を解決するために色々と調べてみた内容が、今回のお話です。

UEFI で Windows の起動が高速になる箇所

UEFI Windows (8以降) の起動高速化は、大きく分けると

この5つに分ける事ができます。
※これは間違った表現なのだけど、あえてこう書いています。

2011年頃のチョット古めのマザーボードを利用していて、Windows7 をGPTでインストールしても起動に1分以上かかる・・・・というPCでも、Windows 10/8.1 ならその半分くらいの時間でPCが起動できるようになる可能性は十分にあります。

スポンサー リンク

このページを書くキッカケ

このページを書くキッカケになった体験は以下。

この体験をベースにこの記事を書き始めました。
今回の更新は正直なところ、すべてを理解し自分の言葉で表現する事に挫折しました。今回は、自分の分かっている部分、経験として知っている部分、新たに調べたお話の中からこのサイトに書き残しておきたい部分を記載していき、それ以外はスルーした内容になっています。

キチンと理解したい場合

以下で紹介するリンク先のような内容を理解する必要が出てきます。

Intelの資料ページ

Arch Linux JP Project-Wikik

IT系メディアサイト

個人サイト

  • 技術者見習いの独り言: What's UEFI
    私が読みたかった情報に近い内容が書いてあり、助かった。
    正しい情報を得たい場合は、私のこのページより、こういうページを読んでみる。

「UEFI ブートローダー」で検索すると欲しい情報が得られるのだ、という事に気が付くまで、何か月もかかってしまいました。

諸々のまえおき全部おわり。
以下が本題です。

このページで書きたい部分

このページで書きたい部分は、
UEFIマザー に GPT形式 でWindows 8以降をインストールした場合、
「マザーボードの Fast Boot」
「Windows の 高速スタートアップ」
この2つを使わなくても、PCの起動は十分に高速化する。
という部分です。

まず、レガシーなBIOS と UEFI-BIOS では、何が違っているのかを調べてみます。

レガシーなBIOSの場合

UEFIの話に入る前に、レガシーなBIOSを搭載したPCが起動する際のお話を少しだけ紹介。

レガシーなBIOSの場合、PCが起動する時以下のような処理が必要。 
(Basic Input/Output System - Wikipediaから一部抜粋しながら記載)

  • POST
    CPU、RAM、割り込み、DMAコントローラなどの搭載デバイスのほかに、チップセット、ビデオカード、キーボード、ハードディスク、光学ドライブその他の基本的なハードウェアによるシステム構成をテスト、認識、初期化する。
  • その次の段階(ブートストラップ / ブート)
    起動デバイスに設定された記憶装置を探し、ブートローダープログラムの場所を特定して実行する、し、PCのコントロールを委ねる。
  • その他、レガシーBIOSが遅い原因
    ※ここはWikipediaの抜粋ではない。
    レガシーなBIOSは16bit。メモリのアドレス空間が1MBしかない
    マルチタスク環境で利用するよう作られていない。
    USB機器など比較的新しいデバイスは、BIOSレベルで認識する場合は何らかのエミュレートが行われている。

これらのような設計の古い部分が原因で、BIOSの場合 PCの起動は長い時間がかかってしまう。

  • Intelの仕様書PDF でこの部分を見ると、こんな感じ。
    Intelの仕様書PDF -CSM有効時の起動フロー
    ▲クリックで拡大
    ※補足:上の図は「レガシーなBIOS」ではなく、UEFIマザーで「レガシー互換ブート」した場合のフロー図。
    ドライバやBIOSを一つずつ呼び出し、段階的に検証&初期化しながらブート処理を進めているのが分かります。

UEFIの場合

新しいシステムを採用したことで、上で書いたようなPC起動時に時間がかかる原因が、ガガーっと解決されている。大量のメモリ空間で一気にカタを付けたり、初期化や認識チェックなどで省略できる所はスキップしてしまう。

  • こちらを Intelの仕様書PDF で見てみるとこんな感じ。
    Intelの仕様書PDF UEFIネイティブな時の起動フロー
    ▲クリックで拡大
    広大なメモリ空間を利用して、ブートに必要な情報を boot script table として一気に呼び出し、一気に処理を行い、高速に起動する。
    • UEFIにネイティブに対応した Windows 8以降では、周辺機器も含め全てがUEFIに対応していればこの図のように処理される。
    • ちなみに。
      最初の図はめっちゃ簡単だけど、ここから先はすごく難しい。
      Intelの仕様書PDF UEFIネイティブな時の起動フロー
      ▲クリックで拡大
      「EFI Boot Service Table」とか「EFI Service Table」とか、そういう情報を元に色々な方法でハードウェアとの接続を確認し初期化している。
  • ここで注意
    • 上図の通りに起動させるには、CSMは無効にしておく必要がある。
    • GPTでインストールした場合でも、OSが Windows 7/Vista だったり、UEFIに未対応なハードが含まれていたり、CSMが有効だった場合、この図の通りには起動せず、部分的に「レガシーな起動手順」が入って来る。つまり遅くなる。
      ※ レガシーな時代の手順をどこまでエミュレートしているかまで調べていない。
      ※ あと最近のマザーはCSM有効でもそんなに遅くならない。

という訳で、ここから先は内容があやふやになって来ます。
(でも、ここからが本題です)

以下で述べるそれぞれの項目が「一気に処理しているから早い」のか、「処理をスキップしているから早い」のか、実はよく分かっていません。
たぶんマザー側では「Fast Boot」を有効にしなければ「省略する」という工程は発生しないと思うのだけど、明言する自信は得られませんでした。

  • POST通過部分
    OS、周辺機器、そのドライバなどのUEFIへの対応状況で、ブート時の挙動が変わってくる。
    恐らく、以下の4つに分ける事ができる。
    1. UEFI (GPT)でWindowsをインストールしただけでも高速化する部分
      • Windows7をUEFI インストールして高速化できるのはここまで。
    2. Windows側で対応したドライバをインストールして初めて高速化する部分
      • Windows7のドライバは、基本的にここには未対応。
        (ビデオカード やLANカードなどのドライバは対応しているかも?よく分からない)
      • Wndows7 からWindows10へアップグレードした場合などでは、ドライバも更新しなければここは早くならない。
      • アップグレードしたWindows10は通常、アップグレード後しばらく(数時間~1日)すると自動的に新しいドライバがインストールされる。(このタイミングで起動が早くなる)
      • Windows 8 以降の場合、(ドライバが対応しているためなのか) MBRでインストールした場合でも十分に高速起動する。
        • 手元のASRock Fatal1ty Z87 マシンはMBRでも 10秒以下で起動する。
        • GPTにしてFast Boot 使えば6~7秒、高速スタートアップ使えば4~5秒で起動する。
    3. CSM を無効にして高速化する部分
      • ↑これは 書き方が逆。
        CSM を有効にすると遅くなるが正解。
        CSM無効が本来のUEFIのブート処理。
      • 「2.」を満たしていれば、この CSM を無効にできる。
        マザーによっては起動は更に早くなる。
      • 有効にしていると、先ほど紹介した「レガシーBIOSのブート処理」が入る。
        マザーによってはこれが起動に時間がかかる原因となる。
        この場合、CSM 有効と無効では、UEFIの起動時のデバイス認識&初期化処理が大きく異なってくる。
      • さらに Windows 起動後のドライバの読み込み方法も変わってくる感じ。
    4. Fast Boot を有効にして高速化する部分
    • 「1.~3.」の部分について
      「Windows 8以降をインストールするだけでも高速化する」という情報を読む事があるけれど、それはこの「1.~3.」の部分のお話。
    • 「3.~4.」の部分について
      利用しているハードや利用目的に合わせてユーザーが自分で 有効・無効 を設定できる。
  • ブートストラップの部分
    • 今回調べていない。
  • OS起動部分
    • 前述「2.」と「3.」の部分はそれぞれ、POSTとブートストラップを通過した後の「Windows が起動する段階」にも影響がある。
      • ドライバも含め完全にUEFI対応したPCの場合、OS起動時のドライバの読み込みや初期化も早くなる。
      • Windows 側の「高速スタートアップ」が無効になっている場合でも早い。
      • マザーボードの世代や周辺機器のドライバによっては、CSMを無効にしなければここは早くならない。
        ※Windows8以降に登場したマザーの場合、気にしなくてもOK
    • さらに、OS起動時には以下が加わる。
      5. 高速スタートアップを有効にして高速化する部分
      • このページでは説明なし。
      • 「2.のドライバが古い場合」は、誤作動を起こしやすいので無効にするのが望ましい。
      • GPTでインストールしたWindowsの場合
        (ここはかなり あやふや)
        • ここで「CSM 有効」にするとさらに問題が起きやすい?
        • MBRインストールした場合はCSMは有効だけど気にしなくてOK?
        • 「CSM 有効」で悪影響が出るのはマザー側の「Fast Boot」のみで高速スタートアップは関係ないかもしれない。
        • いずれにせよ、Windowsを安定させるには、各種デバイス・ドライバがUEFIに完全対応しているかどうかが重要。
  • その他
    手元の ASRock Fatal1ty Z87 + Win8.1の場合
    • このページで紹介しているようなUEFI未対応なドライバ改造を行い、CSM有効にしても、起動は10秒以下。改造前はCSM無効で起動は6~7秒。
    • CSM有効の場合は確かに遅くなるが、Windows7時代の UEFIマザーと比較すると CSM 有効でも十分早い。
  • その他2(起動速度とは関係ない話)
    CSM 有効/無効 で「デバイスの認識結果」が変わってしまった例
    • Windows 10 Anniversary Update 以降、メインPCで利用しているUSB 無線LAN子機「KATANA GW-450D」が以下の状態になってしまった。
    • 無線LAN CSM 有効時
      マザーボードのUEFI設定で CSMを「Enabled」
      ▲クリックで拡大
      正常な状態・Wi-Fi として認識されています。何の異変もありません。
    • 無線LAN CSM 無効時
      マザーボードのUEFI設定で CSMを「Disable」
      ▲クリックで拡大
      ネット接続は「イーサネット」になり「VMware Virtual Ethenet Adapter」として認識されるようになってしまいまった。
      また、テキストベースの表示欄では通信量をモニタリングできていない。
      ※ 念のため、高速スタートアップやFast Bootは無効にして確認しています。
      ※ PCにVMwareはインストールしていますが、上図は Host側 の Windows の認識結果です。
      • そもそも KATANA GW-450D は少々古めの機種で、Windows10にドライバをインストールするには特殊な手順が必要。
      • このような、ドライバインストールに特殊な手順が必要な場合、CSM 有効/無効 で、Windows 上でのデバイスの認識結果に違いが出てしまうケースも発生する模様。

調べてみて分かったこと

  • CSM 有効の時と無効の時では、POST 通過時の処理 (デバイスの認識方法や初期化方法) はおそらく全く違う。
    Windows 起動時の ドライバの初期化や読み込みも、異なった方法で行っている。
  • ただし、この考えで正しいのかどうか、自信を持てる所まで調べる事が出来なかった。

 

このページのお話はここまで。
書き上げてみると、書きたかった内容とがズレた感じなってしまったので、もう一度このページを書くキッカケを紹介すると、このページで書きたかったのは、

  • UEFIでインストールした Windows 10/8.1/8 は、「Fast Boot」や「高速スタートアップ」を使わなくても Windows7より高速になっている。それは何故なのか?
  • Windows 7 から 10/8.1 へアップグレードした場合、ドライバの更新を怠っているとOSの起動は早くならない。
  • UEFIの設定項目の中では「CSM」がすごく重要。

というお話。
「Windows 8 以降の方が起動が早くなるのは何故?」という部分まで詳しく勉強してみようと思ったら、想像以上に難しいお話でした。

余談&あとがき

ちなみに、Windows 10 TH1/TH2 時代は古いドライバでもそれなりに正常作動するケースが多かったけれど、Windows 10 Anniversary Update はドライバをちゃんと更新しないと Windows 10 は正常に作動しないケースが増えてしまいました。

ちょっと上の方で書いた「UEFIネイティブな起動」と「レガシーな起動」が混在するPCでWindows10を作動させるのは難しくなってきた・・・・という印象を受けています。

このページの情報は以上です。

サイト内 関連ページ

参考リンク

このページを書くにあたり (このページで書きたかった情報はなかったものの) 色々と参考にさせて頂いたリンク。
私の欲しかった情報は、あくまでもさわりの部分を解説している、という感じだけど、私がこのページに書いたものよりも正確だと思います。

魔獣帝国にようこそ」さん

分かりやすくかみ砕いた表現になっているのでお勧めです。

Wikipediaなど

Wikipedia は一部 引用させて頂きました。

ITメディア系サイトの記事

2003年に書かれた内容は、(Fast Boot や 高速スタートアップの情報が一切無いため)今回欲しかった情報に近く、とても参考になりました。