水月記

積みと消化との戦いの日々

【日記リンク】
穂谷屋さんSizさん】 【尚侍さん】 【いかぷろさん】 【ゆうにさん】 【いつきさん】 【T.Endoさん】 【雪見酒さん】 【氷上うなぎたん

スケジュール

[ Index | 掲示板 ]
■ 2011年04月04日
お天気:
本日のゲーム:[]
本日の懐具合:[]
WindowsでのEFIブートセットアップ方法

インストールメディアからEFIブートする
インストールするHDDをGPTパーティションにする(何も無い状態)
パーティションが無い状態で物理ドライブを全部使用する設定でインストールを始めると、EFIパーティション他を自動的に作成してインストールを行う。

パーティション1:100MB FAT32 EFIパーティション
パーティション2:128MB 不明 MSR(Microsoft予約)
パーティション3:残り全部 Windowsパーティション
※環境により確保される容量は前後します。

パーティション1には
/efi/Boot/bootx64.efi
/efi/Microsoft/Boot/bootmgfw.efi
/efi/Microsoft/Boot/bootmgr.efi
/efi/Microsoft/Boot/memtest.efi
/efi/Microsoft/Boot/(BCD管理ファイル、各国語対応ファイル、フォントファイル)
等がセットアップされる


■ 2011年04月03日
お天気:
本日のゲーム:[]
本日の懐具合:[]
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」コマンドで操作する必要がある。


■ 2011年04月02日
お天気:
本日のゲーム:[]
本日の懐具合:[]
uEFIによるOSブート

目的:GPTパーティション上のEFIブートローダーからOSを起動する。最終的にはUEFI環境でのマルチブート環境を構築する。
戦績:
1.UEFIでのブートの仕組みを調査

2.EFIブート対応のWindows(Windows Server 2008 / Windows Server 2008R2 / Windows Vista / Windows 7 各64ビット版)のEFIブートローダーによるブート。
→WindowsのブートとWindows限定のマルチブートには成功(BCDによるマルチブート管理)、Linuxのブートは成功せず

3.Linux(Fedora14 64ビット版)のgrubのEFI版を使ってのブート&マルチブート
→Linuxのブートは成功、Windowsブートローダーの起動も成功。ただしWindowsカーネルのローダ辺りで沈黙。失敗

4.Linuxのeliloを使用
→grubと結果一緒

5.Linuxでgrub2(grub-1.98.tar.gz)をビルドして使用
→grubと結果一緒

6.Linuxでgrub2(grub-1.99~rc1.tar.gz)をビルドして使用
→ブートメニューが出ないでgrub shellに制御が移ってしまう。
→解決:ビルドする時にモジュールも盛りすぎたため衝突を起こしてたのと、ビルド時に設定ファイルを読み込む場所を指定していなかったため
→grub shellからテスト
boot /efi/Microsoft/Boot/bootmgfw.efi は同じ症状
chainload /efi/Microsoft/Boot/bootmgfw.efi はエラーになった


■ 2011年04月01日
お天気:
本日のゲーム:[]
本日の懐具合:[]
すっかり放置だったのですが、そろそろ復帰させようかと思ってます。取りあえずは日記とゆうより日々のメモですかね〜本当はblogとかwikiの方が良いのですが、自力で作る時間は無いし、出来合いのもここで動くように改造するの大変だし・・・

[ Index | 掲示板 ]

連絡などの宛て先は[掲示板] または[ kenrow@ny.airnet.ne.jp ]まで〜