検索
連載

Windowsで[F8]キーが届かない理由と、「sos」オプションが届かない理由!その知識、ホントに正しい? Windowsにまつわる都市伝説(206)

WindowsはWindowsブートマネージャーがブート構成データからOSのブートエントリとその設定を読み取って、Windowsローダーによって起動します。Windows Vistaからのこの仕組みは、多数のカスタマイズオプションを提供しているのですが、誤解されているものや、今では全く使い物にならないものもあります。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「Windowsにまつわる都市伝説」のインデックス

Windowsにまつわる都市伝説

起動直後に[F8]キーが使えないのは「高速スタートアップ」のせいではない件

 Windowsにおけるブートの仕組みの大きな変更は、「Windows Vista」のときに行われました。「Windows XP」以前は、起動可能な「MBR(マスターブートレコード)」ディスクから「NTローダー(NTLDR)」が「Boot.ini」ファイルを読み取って起動するものでした。

 Windows VistaからはEFI(現在のUEFI)への対応、GPT(GUIDパーティションテーブル)ディスクへの対応、以前のWindowsや他のOS(Linuxなど)とのマルチブート環境への対応などのために、OS起動前に「Windowsブートローダー(Bootmgr)」と「ブート構成データ(BCD)」を挟む段階が追加されました。「Windows 8」では、タッチデバイスへの対応のための「モダンブートメニュー」の搭載、Hyper-Vハイパーバイザーへの対応などのために、さらに変更が行われています。

 Windows 8になって起動直後の[F8]キーによる「詳細ブートオプション」の開始ができなくなったのは、「『高速スタートアップ』が有効になったため」という記事を見掛けますが、これは関係ありません。理由は、「モダンブートメニューの採用」です。

 Windows 8で導入されたモダンブートメニューは、ペンやタッチデバイスでもOSの選択やトラブルシューティングメニュー、ツールを操作できるようにします。ペンやタッチの入力を受け付けることができるようになるブート後半でようやく利用可能になります。

 既定では、マルチブート環境でない限り、通常起動時に表示されることはありませんし、[F8]キーを受け付ける起動直後の時点では、まだモダンブートメニューの準備はできていません。

 マルチブート環境の場合、既定のエントリを選択するとすぐにログオン画面が表示されます。既定のエントリ以外を選択した場合は、そのOS(または異なるブート設定)で起動するためにBootmgrはWindowsを再起動するため、選択したOSが起動されるまでしばらく待たされることになります(画面1)。

画面1
画面1 Windows 8以降で既定で採用されているマルチブート環境のモダンブートメニュー

 Windows Vista以降では、管理者として開いたコマンドプロンプトで以下のコマンドラインを実行することで、Windows Vistaや「Windows 7」と同等のレガシーブートメニューに変更することができます(既定のモダンブートメニューに戻すには「bootmenupolicy」を「Standard」にするか、値を削除します)。

bcdedit /set {current} bootmenupolicy Legacy
(または、bcdedit /set {bootmgr} displaybootmenu true)

 レガシーブートメニューに切り替えると、マルチブート環境では起動直後にOS選択画面が表示され、どちらのエントリを選択しても、再起動を挟むことなくOSが起動します。マルチブート環境でない場合は、起動直後の[F8]キーで「詳細ブートオプション」に入ることができます(画面2)。

画面2
画面2 レガシーブートメニューに切り替えると、起動直後に[F8]キーを押すことでこの画面にアクセスできる

 そして、「コンピューターの修復」を選択すると、モダンブートメニューの「既定の起動設定やその他のオプションの変更」を選択したときと同じ、「オプションの選択」(「デバイスの使用」「トラブルシューティング」「PCの電源を切る」などの青い画面)に入ることができます。

Windowsローダーの「sos」オプションはとっくの昔に廃止

 構成可能なBCDオプションについては、以下の公式ドキュメントで詳しく説明されています。

 非常に多くのオプションが利用可能ですが、Windowsのバージョンによっては使用できるものと、使用できないものがあることに注意してください。

 例えば、デバッグオプションのIEEE 1394(FireWire)は、「Windows 10」のバージョン1607および「Windows Server 2016」を最後に、以降のWindowsでは利用できなくなっています(これについては注意書きがあります)。このオプションの一覧にありながら、説明なしで利用できなくなっているものもあります。例えば、「sos」オプションです。このオプションの説明は次のようになっています。

ドライバーがブートプロセス中に読み込まれるときのドライバーの名前の表示を制御します。名前を表示するにはsos onを使用します。表示を抑制するには、sos offを使用します。

 現在のWindowsでブートエントリにこのオプションを設定したとしても、実は何も起きません。正確には、利用できたのはWindows VistaとWindows 7の2つだけでした(および対応するサーババージョンである「Windows Server 2008」と「Windows Server 2008 R2」)。

 Windows VistaやWindows 7で「sos」オプションを有効にすると、起動時にロードされるドライバが画面上を流れ、その後、OSのバージョン(ビルド、サービスパック)、プロセッサ数、搭載メモリ容量、カーネルの種類といった情報が表示された後、デスクトップ(ログオン画面)が表示されます(画面3)。

画面3
画面3 Windows 7で「sos」オプションを有効にした場合のOS起動の様子。あっという間に消えてしまうので、役に立つ機能なのかどうかは疑問

 画面に情報が流れるだけで、途中で止めることはできません(ドライバに問題があれば途中で出力が止まるのかもしれませんが、そういった使い方を想定したものかどうかは分かりません)。

 Windows 8以降で「sos」オプションを有効にしても、「BCDEdit」コマンドは正常に設定を完了します。しかし、再起動しても何も変わりません。実は、Windows VistaやWindows 7で「sos」オプションを有効にすると、「\Windows\System32\winload.exe」のコマンドラインパラメーターに「/sos」が追加され(起動直後の[F10]キーで表示できる「ブートオプションの編集」で確認可能)、このような動作をするようになっています。

 しかし、Windows 8以降で「sos」オプションを有効にしても、「\Windows\System32\winload.exeまたは.efi」のコマンドラインパラメーターに「/sos」が追加されることはありません。レガシーブートメニューにして[F10]キーを使って「/sos」を手動で追加しても、動作が変わることはありません。

 以下の画面4は、バイナリファイルから3文字以上のUnicodeまたはASCIIの埋め込み文字列を検索できる「Windows Sysinternals」の「Strings.exe」(https://docs.microsoft.com/ja-jp/sysinternals/downloads/strings)を使用して、「Windowsローダー」(Winload.exe、Winload.efi)内の文字列「sos」を検索した結果です。

画面4
画面4 Windows 7(画面左)のWinloadには文字列「/sos」が埋め込まれているが、Windows 10(画面右、Windows 8以降同じ)には確認できない

 左のWindows 7の「Winload.exe」には、文字列「/sos」が確認できますが、右のWindows 10(Windows 8以降)の「Winload.exe」と「Winload.efi」では確認できません。つまり、Windows 8の時点で「/sos」オプションは既に廃止されていたのです。

 Windows VistaやWindows 7の「sos」オプション相当の機能を利用したいのであれば、「bootlog」オプションを使う手があります。「bootlog」オプションを有効(YesまたはTrue)にすると、起動時にロードされたドライバの一覧が、Windowsのビルド情報とともに「C:\Windows\Ntbtlog.txt」に記録されます(画面5)。

画面5
画面5 ブート時にロードされるドライバの一覧を確認したいのであれば「bootlog」オプションを利用できる

 正常起動できないシステムの場合は、「Windows回復環境(Windows Recovery Environment:WinRE)」のコマンドプロンプトでブートボリュームから「\Windows\Ntbtlog.txt」を取り出せばトラブルシューティングに役立ちます。画面上を流れてしまう「sos」よりも、こちらの方が本来の役に立つ機能です。

筆者紹介

山市 良(やまいち りょう)

岩手県花巻市在住。Microsoft MVP 2009 to 2022(Cloud and Datacenter Management)。SIer、IT出版社、中堅企業のシステム管理者を経て、フリーのテクニカルライターに。Microsoft製品、テクノロジーを中心に、IT雑誌、Webサイトへの記事の寄稿、ドキュメント作成、事例取材などを手掛ける。個人ブログは『山市良のえぬなんとかわーるど』。近著は『Windows版Docker&Windowsコンテナーテクノロジ入門』(日経BP社)、『ITプロフェッショナル向けWindowsトラブル解決 コマンド&テクニック集』(日経BP社)。


Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る