UEFIでのブートの仕組み
1.システムが起動すると接続されているメディアを調査 2.読み込めるメディアの中にEFIアプリケーションが無いか調査 3.BIOSで設定されているブート優先順位にしたがってブートローダーを起動
EFIアプリケーションは、拡張子が「.efi」、32ビットまたは64ビットコードのWindows PEヘッダを持つバイナリ。 (でもWindows上では実行不可)
EFIアプリケーションは「EFIパーティション」に配置される EFIパーティションは、FATまたはFAT32にフォーマットされたディスクスペース。 デフォルトは一番若いIDのHDDの最初のパーティションに100MB程で確保される。 デフォルトでロードされるEFIブートローダーは /efi/boot/bootx64.efi
Windowsの場合、 /efi/boot/bootx64.efi の他にも /efi/Microsoft/boot/bootmgfw.efi もセットアップされる。 (同一バイナリ) まずは bootmgfw.efi (以降「ブートマネージャー」)が実行される。 ブートマネージャーはBCD(ブート構成データ)の設定を参照、メニューを表示しユーザーに選択させるか設定された優先順位にしたがってOSのローダーを決める OSのローダー(winload.exe)が実行され、OSのカーネルが読み込まれOSが起動。
Linuxの場合、MBR→GRUB/LiLoの代わりに直接GRUBなりeLiloのEFI版が実行される。以降の動きは従来のMBR版と同じ。
従来のMBRではディスクの最初のクラスタ(512バイト)に起動コード(機種依存性高し)が位置固定で配置されたが EFIではファイルシステム上に置かれた実行ファイルが実行されるので、より柔軟性が高くなっている。
MBRはフロッピーディスク時代の起動の仕組みを引きずっているので、扱えるディスクの容量に制限がある。 色々と小細工して生き延びてきたが根本的に2TBまでのディスクを扱うのが限界。
EFIは互換性確保のためMBRブートもサポートしている 大抵の場合、OS導入時にMBRで起動すると、OSもMBRで起動するように設定される。 Windows7のインストールDVD等は同一メディアにMBRとEFIブートローダが同居している。
WindowsからEFIパーティションは見えなくなっている。 管理ツールの「ディスクの管理」では領域は確認出来るが、ドライブ割り当てなどの操作は出来ない ただし、コマンドラインのdiskpartでは操作(作成・削除・ドライブ文字割り当て等)が可能。
LinuxからはVFATパーティションとしてマウントすれば操作可能。 ただし、GPTディスクとなるので「fdisk」コマンドでは無く、「partd」コマンドで操作する必要がある。
|
|