Windows 8 を搭載した PCが発売され始めた2012年の冬以降、そのPCには従来のBIOSに代わるUEFI BIOSが実装されているようです。また、自作PC市場でも、2011年より発売が開始された Intel 6シリーズのマザーボードから、本格的にUEFI BIOSの導入がスタートしました。しかしながら、このUEFI BIOSに関しては、歴史が浅いのかネット上でも情報が少ないようです。ですので、自分なりにまとめてみました。また、説明をわかりやすくするために、CPUがx64でOSにWindows 8 - 10 64 bit 版がインストールされたPCのUEFI BIOSに 限定して解説しています。以降の記述でWin10と記載した場合は64 bit 版のWin8 、8.1、10を意味すると解釈してください。
注意事項
その1 表記について。2017/1/29に記事を修正するまでは、単にUEFIと記述していました。従来のBIOSと区別するためにUEFIと表記した方がわかりやすいと思いました。しかし、大手マザーボードメーカーはその表記にUEFI BIOS ,Dual BIOS ,Click BIOS などBIOSの名を残して使用しています。また、UEFIの役割自体はBIOSと変わりありません。そこで、弊ブログではUEFI仕様のBIOSであるとしてその表記をUEFIからUEFI BIOSに改めます。
その2 UEFI は基本的な仕様は標準化されていますが、その実装はPCハードウェアに依存するために、仕様で定義されていない部分はPCハードウェアにより異なります。一般的にメーカー製の市販PCのUEFI BIOSはキャラクターベースでWindowsを起動することが前提に設計されているようです。一方、自作PC向けのマザーボードのUEFI BIOSはグラフィカルで多機能です。Windows以外のLinuxも起動できるようチューニングされているものあります。
その3 Windows OSをUEFI BIOSで利用するには、Windows Vista SP1以降の64bit版が必要でしたが、Windows 8/ 8.1からは、32bit版でもUEFI BIOSを利用可能となり、タブレットPCなどのOEM向けのWindows 8.1 32bit版はUEFI BIOS環境を利用しているようです。しかし、パッケージ版やDSP版のWindows 8/8.1の32bit版はUEFI BIOSには対応せずBIOSのみ利用可能のようです。
UEFI BIOSとは
PCに接続しているデバイスの機能を調整したり、PCよりOSを起動させるための組み込みプログラム(x86命令マシン語)、ソフトウェアと言えると思います。UEFI自体は標準仕様を指します。UEFI BIOSが導入される前のBIOSをLegacy(レガシ) BIOSと呼びます。このUEFI BIOSの組み込みプログラムはあらかじめ、マザーボード製造時にそのハードウェアに最適化され、その基盤上の部品に格納されています。また、PCの電源を入れると自動的にそのプログラムが実行されるようになっています。
なぜBIOSからUEFI BIOSに移行したのか
とにかくBIOSは古い仕様で作られているようで様々な制限があり、そこでUEFIが登場したようです。その導入のメリットはBIOSに比べ柔軟性/拡張性/信頼性がを得られることにあります。具体的には、起動が早い、起動ディスクの容量制限の緩和などがあるようです。
PCのBIOSがLegacy BIOSかUEFI BIOSかを調べる方法
Msinfo32を実行し、BIOSモードがレガシであればLegacy BIOS、UEFIであればUEFI BIOSとなります。
UEFI BIOSの構成要素
組み込みプログラム + NVRAM
組み込みプログラム
ソフトウェアである組み込みプログラムはマザーボード(以降 M/B)上の書き換え可能なフラッシュROMチップに記憶されています。電源をONした場合はそのROMチップより、組み込みプログラムが実行され、OS起動につながります。その起動直後に、Deleteキーなどの特定のキーを押下することで、UEFI BIOSセットアッププログラムを起動できます。このプログラムで様々な設定をします。
マザーボード ASUS H170M-PULSでのUEFI BIOSセットアッププログラム画面
NVRAM
UEFI BIOSは各種ハードウェアを制御するための設定情報持っています。その情報はM/Bのチップセット内にあるSRAM (Static Random Access Memory) に保存されています。このSRAMは揮発性メモリなので電源を落とすと、情報が消えてしまうので、ボタン電池でバックアップしています。また、このSRAMをNVRAM(Non-Volatile RAM)、またはCMOSとも呼びます。このNVRANに保存されている情報はNVRAM変数と呼ばれており、UEFI BIOSセットアッププログラムにより情報が書き込み・参照されます。また、その一部の変数はWindowsからも参照・更新が可能です。このNVRAMの設定情報を強制的に消去することをCMOSクリアと呼びます。
NVRAM変数には、システムが終了しても値を保持するものNV(Non Volatile)、 OS起動後に利用可能なものRT( RunTime ) 、OS起動前に利用可能なものBT( Boot Time ) の3つの属性があります。
OSの起動に関係する主なNVRAM変数は次の2つです。
2017/11/05追記
このNVRAMの実装については、アーキテクチャに依存するため、UEFI仕様では規定されていません。しかし、Windows PC はIBM PC/AT互換機ですから、RTC /RTC CMOS RAMの仕様に準じます。したがって、従来BIOSではこのRTC CMOS RAMに設定情報を保存していました。しかし、この
RAMの記憶容量はわづか数百バイト程度であるため拡張性がありません。そこで、Windows 10 PC のUEFI BIOSでは BIOSコードが格納されているフラッシュROMの一部の領域を確保し、NVRAMとしています。昔のROMは製造時等にROM全体を書き換えしかできませんでしたが、近年のフラッシュROM関連技術の向上でデータも保存可能になっています。フラッシュROMのNVRAMについて調べてみた記事のリンクを下記に貼っておきます。
Boot####( NV+RT+BS ) UEFI BIOSブートマネージャーが起動するデバイス(SSD/HDD)など登録情報(以降、ブートエントリー)
BootOrder( NV+RT+BS ) ブートエントリーの起動順序リスト(以降、ブート順序リスト)
マザーボード ASUS H170M-PULSの例
Windows インストール時にインストーラによって作成されるUEFI BIOS関連要素
Windows はPCのHDD/SSDなどのドライブにインストールします。このとき、そのドライブにEFI システム パーティション(以降 ESP)が作成されます。このESPには、Windows Boot Manager 本体とBCDが作成されます。Windows Boot Manager 本体とは
Windowsを起動するUEFIアプリケーションで、ESPの \EFI\Microsoft\Boot\bootmgfw.efiに作成されます。ESPは、Windows の一部ではなく、UEFIの仕様によるものです。このESPはUEFI BIOSからもアクセスできるようFAT32でフォーマットされています。また、インストールが終わると、 NVRAMに「Windows Boot Manager」というブートエントリーが登録され、そのブート順序リストの1位に設定されます。
NVRAMブートエントリーの「Windows Boot Manager」 とは
この「Windows Boot Manager」は、Windows Boot Manager本体そのもではなく、それがどのディスクのどのパーティションにあり、そのパーティション内のどの位置にあるのかという情報が設定されます。Windowsでいうところの「ショートカット」のようなものです。これにより、UEFI BIOSはWindows Boot Manager本体を読み込み起動することができます。この「Windows Boot Manager」 が従来のBIOSにない仕様でここをよく理解することがUEFI BIOSでWindowsを起動させるポイントになります。従来のBIOSでは起動ドライブにCD/DVDドライブやHDDの物理的なドライブを直接指定しました。
NVRAMブートエントリーの「Windows Boot Manager」の例
従来BIOSでの起動ドライブ設定例
UEFI Bootのプロセス
自作PCでOSがWindows 8-10の場合
ASUS PRIME H270-PLUS BIOS Ver 0311 UEFI Spec Ver 2.50
BIOS Boot 設定
Fast Boot Disabled
CSM Disabled
で確認
UEFI Specification 2.5 の [ 3.1 章 Firmware Boot Manager ]を参照
UEFI BIOSのBoot Manager(プログラム)はLoad Optionを読み込む。
Load OptionはBoot####のNVRAM変数に設定されている。
起動時に
BootOrderの順でBoot####をロードする。
読み込んだLoad Optionの実行が成功したら、次のOptionは実行しない。失敗した場合は次のOptionを読み込む。
Boot####は次の内容を保持する。
Load Option の名称
例 Windows Boot Manager
実行するOS起動プログラム(UEFI アプリケーション)のファイルパス
例 \EFI\Microsoft\Boot\bootmgfw.efi
UEFI BIOSのBoot Managerは初期化時にBoot Option をメンテナンスする。
Boot Optionが設定されているデバイスが存在しないときは、Boot####を削除し、BootOrderからその順位を洗い替えする。
新規デバイスが存在するときもBoot#####を登録し、BootOrderからその順位を洗い替えする。
Load Optin Boot####例1(自作PC ASUS H270-PLUS)
Load Optin Boot####例2(市販PC)
ASUS M/B PRIME H270-PLUS BIOS では次の実装がある。
Windows 8-10をインストールしたドライブにESPがありその中に\EFI\Microsoft\Boot\bootmgfw.efiが存在し、それに対応するBoot###が存在しない場合、UEFI BIOSのBoot ManagerはWindows 起動用のBoot####を作成し、BootOrderの順位を1位にする。
(お詫び)
2017/02/06 当初の記載ではBCDの定義情報に基づき、Boot####を作成するとしていましたが誤りでした。
また、Windows 8-10起動時に起動プログラムがその起動ドライブのESP内BCDの定義情報に基づき、Windows 起動用のBoot####を作成し、BootOrderの順位を1位にする。
このように、UEFI 環境下ではNVRAMブートエントリーに「Windows Boot Manager」が消えてしまうと、Windowsが起動できなくなってしまうため、回避策がとられているようです。
BCDとは
Boot Configuration Dataの略でブート構成データと呼ばれるバイナリ・ファイルで、ESPの \EFI\Microsoft\Boot\BCDに作成されます。UEFIサポートのために導入されたが、UEFIの仕様ではなくWindows固有の仕様のようです。主な用途は2つ。1:従来のBOOT.INIのように起動オプションの設定値を格納する 2:NMRAMの起動変数を抽象化し、そのキャッシュをBCD内にオブジェクトとして保持する。UEFI環境下では、Windows起動時にNVRAMの起動変数がBCDにキャッシュされるようです。インストールが終わると、定義要素がBCDに作成されます。主な要素としては
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description Windows Boot Manager
timeout 30
Windows ブート ローダー
--------------------------------
identifier {current}
device partition=C:
path \WINDOWS\system32\winload.efi
description Windows 10
osdevice partition=C:
systemroot \WINDOWS
などがあります。
Windows Boot Manager 本体であるbootmgfw.efiがこのWindows ブート ローダーの要素を読み取り、それにより指定されているC:\WINDOWS\system32\winload.efi(Windows OS ローダー)を起動します。異なる複数のWindows のバージョンを選択して起動する場合は、このWindows ブート ローダーを複数作成します。
Windows の起動フロー
電源オン
ROMチップからUEFI BIOSのファームウエアが起動
CPUやチップセットの初期化やUEFI用のドライバのロード
UEFI BIOS Boot Manager(ROMチップ内の) が起動
ブートエントリー・ブート順序リスト(NVRAM内の)基づき、Windows Boot Maneger (ESPの\EFI\Microsoft\Boot\bootmgfw.efi )がUEFI上で実行される。これを実行にするためにUEFIプログラムが起動ドライブへファイルアクセスする。
bootmgfw.efi はBCDを読み込み、どのWindows OS ローダーを起動するかを決定する。通常、Windows Boot Maneger はOSパーティション・NTFSのC: \windows\system32\winload.efi をUEFI上で実行する。
winload.efiはカーネルをメモリーにロードし、様々な処理を行いWindowsに制御を移す。
UEFI BIOS関連要素概念図(クリックで拡大)
起動ドライブのパーティション基本構成
Windows 10 では回復(Win RE)、ESP、Microsoft 予約パーティション (以降 MSR)、Windows パーティションとなる。場合によって、OEMパーティション、回復イメージパーティションが作成される場合もある。MSRはBitLocker暗号化やシステムの回復ツールなどが作業用として利用する隠しパーティションとなっていて、ディスクの管理ツールでは表示されないので、DISKPARTで確認する。
EFI システム パーティション (ESP)の詳細
GPT、FAT32
PARTITION ID -> PARTITION_SYSTEM_GUID ( c12a7328-f81f-11d2-ba4b-00a0c93ec93b )
GPT 属性 -> GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER ( 0x8000000000000000 )
DISKPART/set id="c12a7328-f81f-11d2-ba4b-00a0c93ec93"
DISKPART/gpt attributes=0x8000000000000000
GPTとは
GPTとはUEFIのために作られたパーティション管理方法で、2テラバイト超えのディスクも取り扱え、柔軟性/拡張性/信頼性があるとされています。UEFI環境でWindows 10 をインストールした場合、パーティション管理は必ずGPTとなります。
BCDEDITコマンド/BCDの参照と編集
BCDEDIT /enum firmware
NVRAMの起動変数をBCDにキャッシュし、表示する。つぎの動作を行います。
まず、NVRAM ブートエントリと BCD のエントリを比較し、NVRAM ブートエントリのうち BCD に存在しないものが、BCD に追加し、そのエントリーを表示する。つぎにBCD のブート マネージャ エントリのうち NVRAM ブートエントリに存在しないものが NVRAM ブートエントリに追加される。Windows起動時にも同様の動作をするようです。
[ファームウェアのブート マネージャー]UEFIブートマネージャーのことです。識別子は{fwbootmgr}になります。displayorderとはNVRAM変数BootOrderを表し、ブート順序リストが表示されます。timeout はNVRAM変数timeoutの値を表示します。UEFIブートマネージャーが起動順位1位に設定されたブートエントリーの実行を待機する時間を表示します。PCによっては画面になにも表示されない場合があります。[Windows ブート マネージャー]上述したESPにあるbootmgfw.efiのことです。識別子は{bootmgr}になります。基本的に「ファームウェアのブート マネージャー」のdisplayorderの第1順位に設定されています。device とpath とは上述の通りです。timeout とはbootmgfw.efiがWindows OSローダーを選択する際の待機時間を表示します。通常、1つのWindows OSをインストールしている場合は選択画面は表示されません。[ファームウェア アプリケーション]NVRAM変数Boot####として登録されているブートエントリーで{bootmgr}以外を表します。下の例ではUSBメモリを指しています。BCDEDIT /enum firmware の出力例 始まり↓ファームウェアのブート マネージャー
--------------------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{a5271530-eb93-11e6-983b-806e6f6e6963}
{a5271531-eb93-11e6-983b-806e6f6e6963}
timeout 1
Windows ブート マネージャー
--------------------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume2
path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description Windows Boot Manager
locale ja-jp
inherit {globalsettings}
default {current}
resumeobject {253500b1-e5e7-11e6-9fd8-a20390192bf9}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
ファームウェア アプリケーション (101fffff
--------------------------------
identifier {a5271530-eb93-11e6-983b-806e6f6e6963}
device partition=F:
description UEFI: JetFlashTranscend 8GB 1100, Partition 1
ファームウェア アプリケーション (101fffff
--------------------------------
identifier {a5271531-eb93-11e6-983b-806e6f6e6963}
device partition=E:
description UEFI: UFD 2.0 Silicon-Power4G 1100, Partition 1
BCDEDIT /enum firmware の出力例 終わり↑
BCDEDIT /set {fwbootmgr}
このコマンドはBCDの値を書き換えると同時にNVRAM変数の値も書き換えます。UEFIのセットアプで変更せずとも、Windowsから変更できる。
UEFI BIOSブートマネージャーが既定のエントリーを実行をするまでの待機時間を変更する。NVRAM変数Timeoutが更新される。(単位:秒)
BCDEDIT /set {fwbootmgr} timeout 10
NVRAM変数BootOrderの変更・削除、ただし、追加はできない。対応するNVRAM変数Boot####には影響なし。
BCDEDIT /set {fwbootmgr} displayorder ID /addFirst ←変更
BCDEDIT /set {fwbootmgr} Default ID は上記と同じ結果になる。
BCDEDIT /set {fwbootmgr} displayorder ID /remove ←削除
1 回限りの起動項目の順位を定義する。NVRAM変数BootNextを作成する。
BCDEDIT /set {fwbootmgr} bootsequence ID ID
BCDEDIT /set {bootmgr}
このコマンドはbcdedit /set {fwbootmgr} コマンドとよく似ていますが、対象がWindows Boot Managerになっています。間違いやすいので注意が必要です。
BCDEDIT /set {bootmgr} description "新エントリ文字列" NVRANのWindows Boot Manager エントリーの名前を変更します。
BCDEDIT /set {bootmgr} displayorder ID /addfirst Windows ブート マネージャーの Windows ブート ローダー アプリケーションの起動順位を設定します。
BCDEDIT /delete
起動関係では、ファームウェアアプリケーションが対になるNVRAM変数Boot####は存在しないが、BCDには存在している場合にこのコマンドを使用します。
BCDEDIT /delete ID 指定したエントリーを削除し表示順序からエントリーを除外 /nocleanup の指定がない場合は/cleanup指定となる。
BCDBOOTコマンド/Windows起動環境の作成と修復
Windowsが起動できなくなった場合、回復環境コマンドプロンプトなどからこのコマンドを使用し、起動環境を修復します。以下の修復が実行されます。
ESPの初期化(BCDもリセットされる。) BCDの修復
NVRAMに「Windows Boot Manager」ブートエントリーが作成され、ブート順序リストが1位に設定されます。
\EFI\Microsoft\Boot\bootmgfw.efi などブートファイルが作成される。
コマンド構文
BCDBOOT [OSのドライブレター]\windows /l ja-jp /s [ESPのドライブレター] /f UEFI
各ドライブレターはdiskpartなどで調べておく
例) BCDBOOT C:\Windows /l ja-jp /s Z: /f UEFI
ESPにドライブレターをつける方法は、ESPを選択し、DISKPART/ASSIGN LETTER=Z
その後、Zドライブにコマンドプロンプトで移動し、操作可能であるが、GUIのエクスプローラーでは参照すらできない。
ドライブレターはDISKPART/REMOVEで削除できる。
Windows API GetFirmwareEnvironmentVariableでUEFI BootOrder変数にアクセス
http://dxr165.blog.fc2.com/blog-entry-365.html
UEFI シェル(UEFI Shell )UEFI シェルはコマンドラインツールです。UEFIシステムをメンテナンスするためのコマンドを実行できます。詳しくは、UEFI Shell を使ってみよう!をご覧ください。UEFI シェルを実行するにはUEFIセットアップユーティリティーの"Launch EFI Shell from filesystem device"から起動します。その前に、UEFI シェルを入手し、FAT32でフォーマットしたUSBメモリのルートディレクトリにShellx64.efi(64bit機の場合)にリネームし配置します。起動しない場合はUEFIの設定をデフォルトに戻してみてください。使用頻度の高いコマンドmap 認識しているブロックデバイスの一覧表示ブロックデバイスとは、ハードディスクドライブ/CD-ROMドライブ/USBメモリなどのアドレス指定可能な機器のようです。drivers EFIドライバの一覧を表示しますdmpstoreUEFI のNVRAMに格納されている変数はdmpstore コマンドで参照・削除・バックアップ・レストアが可能。bcfg boot dump コマンド(Shell Version 2.0以上)によりブートエントリーの追加、ブート順序リストの参照・変更が可能です。詳しくはbcfg -? -v -b
LinuxとUEFI話しはWindowsから離れますが、Linux系のコマンドでブートエントリーの追加、ブート順序リストの参照・変更が可能です。SystemRescueCD入手し、ISOから展開し、中身をFAT32のUSBメモリーにコピーする。UEFIでブートする。起動したら、ターミナルより以下のコマンドを打つ。NVRAM変数の参照efivar -lブートエントリー・ブート順序リストの表示efibootmgr -vブートエントリーの追加例efibootmgr -c -d /dev/sda -p2 -l/EFI/Microsoft/Boot/bootmgfw.efi -L "Windows Boot Manager"-c | --createCreate new variable bootnum and add to bootorder-d | --disk DISKThe disk containing the loader (defaults to /dev/sda)-p | --part PARTPartition number containing the bootloader (defaults to 1)-l | --loader NAMESpecify a loader (defaults to \\elilo.efi)-L | --label LABELBoot manager display label (defaults to "Linux")
EASYUEFIブートエントリー・ブート順序リストの追加・参照・変更が可能なフリーソフトです。Windows上で動作します。(注意)NVRAMだけでなく、BCDの内容の一部も変更するようです。
トラブルシューティング
「Windws Boot Manager」ブートエントリーとブート順序リストへの設定がCMOSクリアで削除されてしまうことによるトラブルが多いと思われます。この場合は最近発売された自作PCのM/Bであれば、そのUEFI BIOSファームウエアにより、起動ドライブにESPが存在するなどの所定の要件を満たせば、「Windws Boot Manager」ブートエントリーとブート順序リストへの設定が自動修復される仕様となっている場合があります。(ASUS PRIME H270-PLUSで検証済み。)もし、この仕様がなければ、自分で回復環境などを用い、BCDBOOTコマンドにより「Windws Boot Manager」ブートエントリーとブート順序リストへの設定を復旧するしかありません。この作業は、自作PCユーザーでもそれを行うにあたりハードルが高いと思われます。レガシーBIOSを経験してきた自作PCユーザーであれば、CMOSクリアーは困ったときの最終手段として広く浸透しています。しかし、自作PCのM/BがほぼUEFI BIOSとなりOSもUEFI起動が当たり前となった今、自作PCユーザーはこのCMOSクリアーにより、「Windws Boot Manager」ブートエントリーとブート順序リストへの設定は一旦は消えてしまうということを知っておくべきと思います。
こんなときは...
Win 10 のインストールについて
これから、自作PCでWin10をインストールする場合は、そのマザーボードがUEFIに対応していれば、上記の解説からWin10をUEFIモードでインストールすることを強く推奨します。
UEFI BIOSセットアップでのBOOTメニューで下図のように、デバイス名の前に「UEFI :」と表示されるのは、そのメディアがUEFIブート対応の場合で、ルートに\efiというフォルダがありその中に~.efiというUEFIのブート・コードがあれば、UEFIメニューを表示しています。このUEFIが先頭についたメディアを選択しないとUEFI環境となりません。
BootメニューにBBS Prioritiesの設定項目がある場合がありますが、UEFI環境下ではこの設定はBootに関係しません。
Windows インストーラはブートエントリーのプリフィクスのUEFI: を調べUEFI Boot かMBR Boot のいずれで構築するかを決めているようです。
UEFIメニューの例(USBメモリ) 画像クリックで拡大
参考資料/URL
技術者見習いの独り言 / What's UEFI
テクニカルな視点からコンパクトにUEFIについて解説されています。
https://orumin.blogspot.jp/2014/12/whats-uefi.html
一方、ふうえんさんちでは…/UEFIについて
UEFI を取り扱ったブログ記事です。記事の量も多くとその出典も明記されており、UEFI情報元ブログでは草分け的存在です。
syuu1228's blog / BIOSとUEFIの歴史,GPTとMBRはどのように違うのか?
Linux開発の見地よりUEFIのブート原理を解説されています。
http://syuu1228.hatenablog.com/entry/20130102/1357096671
http://syuu1228.hatenablog.com/entry/20130103/1357165915
UEFI時代のブートローダ(スライドです。NVRAM変数を解説)
http://www.slideshare.net/syuu1228/uefi-boot-loaders
新世代 BIOS "UEFI" の 構造と実装
菅原清文 インテル(株) ソフトウェア&サービス統括部 ソフトウェア技術部
UEFIの概要について解説されている。
openSUSE:UEFI
UEFI BIOSについてコンパクトに解説されています。
https://ja.opensuse.org/openSUSE:UEFI
Unified Extensible Firmware Interface Archlinux Wiki(日本語、UEFI環境下でLinuxをブートするために必要な知識が記載されている)
https://archlinuxjp.kusakata.com/wiki/Unified_Extensible_Firmware_Interface
BIOS/EFI(関連リンクが豊富)
http://mcn.oops.jp/wiki/index.php?BIOS%2FEFI
BIOS/UEFI 完全攻略 [Windows 8/7 対応] [Kindle版] 松永 融 技術評論社 2013年12月25日 初版(BIOS/UEFIを専門に解説した数少ない本です。初心者でも非常に分かりやすく書かれています。)EFIフレームワークの導入で変わるBIOS(元麻布春男の週刊PCホットライン)/2003年9月19日 元麻布春男http://pc.watch.impress.co.jp/docs/2003/0919/hot280.htm(読み物としても面白い)UEFI Specification Version 2.3.1 (Errata D) 本家本元、ただし当然英語です。http://uefi.org/specificationsWindows Boot Environment ,Microsoft (英語ですがパワポ資料なので分かりやすい)http://www.uefi.org/sites/default/files/resources/UEFI-Plugfest-WindowsBootEnvironment.pdfNEC Express5800 シリーズ (UEFI BOOT SETTINGの解説が詳しい。327ページ)
http://support.express.nec.co.jp/usersguide/a1080a_a1040a/A1080a_UG_2_J_R9_2.pdf
UEFIアプリケーション/ドライバー開発の話、メモ、その他
http://orumin.blogspot.jp/2014/01/uefi.html
Solid State Life / TX-50開発キットで遊ぶ その6
UEFI Shellコマンドの活用例があります。
http://solidstatelife.blogspot.jp/2011/10/tx-50_2875.html
HP UEFI シェルユーザーガイド - 日本HP
h50146.www5.hp.com/lib/products/servers/.../744994-191a_ja.pdf
HPビジネスノートブック/デスクトップにおけるEFIプリブートのガイドラインおよびWindows 8のUEFIセキュアブート
貴重なPC向けUEFI資料です。
https://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB4QFjAA&url=http%3A%2F%2Fh20566.www2.hp.com%2Fhpsc%2Fdoc%2Fpublic%2Fdisplay%3FdocId%3Demr_na-c03774279&ei=_JJfVbG9IaSlmQW2l4LADw&usg=AFQjCNHlcB6gBPTlvNzSRzF9s7AhX6ZRCg&sig2=yQZ2SPc7AJL18_RBhlBCQg&bvm=bv.93990622,d.dGY
2009年の古いマイクロソフトのホワイトペーパーです。UEFI BIOSがソフトウエアとしてOSとどのように異なるのかがわかります。
UEFI and Windows
http://download.microsoft.com/download/9/c/5/9c5b2167-8017-4bae-9fde-d599bac8184a/uefi_windows.docx
DOS/Vパワーレポート 2006年6月号/PC自作 ウワサの検証 完全版/ウワサその12 Mac編/次世代BIOS「EFI」の仕組を探る 塩田紳二
Intel MacのEFIの解説ですが、GPTの説明がわかりやすい。
http://www.dosv.jp/feature/0606/20.htm
本当に知っている?Windowsの基礎 / Windowsはどうやって起動するのか?(Vista編) 中島 省吾
UEFIが導入される前のBIOS時代の記事ですが、Windowsのブート概略がわかり参考になります。
http://itpro.nikkeibp.co.jp/article/COLUMN/20090113/322746/
Microsoft Building Windows 8
Windows エンジニアリング チームによるブログ
Windows の起動のエクスペリエンスを再構築する
UEFIとWindows 8Boot とのかかわりが解説されています。
https://blogs.msdn.microsoft.com/b8_ja/2011/09/22/windows-2/
修正履歴
2015/03/10 とりあえず、わかったことを公開
2015/03/29 だいたい内容がまとまる
2015/05/10 UEFI Shellの記事を追加
2015/05/12 「Windows Boot Manager の起動エントリー」の詳細の内容を修正
2015/05/16 bcdeditの内容を修正
2015/05/17 参考資料を追加
2015/05/22 しくみの解説を修正
2015/05/26 概念図を変更
2015/05/27 トラブルシューティングを追加
2015/05/30 用語を統一
2015/10/25 要所各所で補足
2015/12/13 内容をWin10に書き換え、その他追記
2015/12/21 SMBOS解説を追加・要所各所で補正
2016/05/05 細かな点を修正
コメント
へんなおじさん
2016/05/12 URL 編集
DXR165
今後も気軽にコメントいただければと思います。
2016/05/12 URL 編集
lip
文章もわかりやすく助かりました。
2016/08/18 URL 編集
DXR165
2016/08/19 URL 編集
てつ
2017/06/18 URL 編集
DXR165
私は仕組みがわかないとなかなか先に進めない性分で…、ほんと困ったもんです。
少しは何かのお役にたったのでしょうか?また、気軽にコメントをお願いします。
2017/06/18 URL 編集
ktj
パナのノートを、HDD→SSDにクローン換装した後、一度「Checkingedia presence…」が表示されてから、正常に起動するという症状になっていて、いろいろ調べてる内に本記事にたどり着きました。
UEFI firmwareのuefi起動オプションからWindows boot Managerが消えて、Ipvのみになっている。efiファイルはクローンされている。
記事によると、
efiファイルに対応するBootオプションが存在しない場合が想定されているのですね…未だオプションにはWindows boot Managerは存在しませんが、正常に起動する理由がわかりました。ありがとうございます!
2017/12/04 URL 編集
DXR165
UEFI環境でのドライブコピーは様々なハードルがありますね。このあたりの内容も記事にしたと思っています。
2017/12/05 URL 編集
Dewayne
paragrapһ i thougjt i could also make commentt due to this ɡood paгagraph.
2019/04/02 URL 編集
hvac san jose
2019/04/12 URL 編集
通りすがり
色んなサイトを見ても分からなかったことがここだけで分かりました。
最高の解説です。ありがとうございます。
2021/09/30 URL 編集
DXR165
コメントありがとうございます。
お褒めの言葉をいただき、嬉しい限りです。
また、ご指摘事項がございましたら何なりと申し出ください。
2021/09/30 URL 編集