[FreeBSD-users-jp 95788] Re: GPT and EFI
Tomoaki AOKI
junchoon @ dec.sakura.ne.jp
2016年 4月 19日 (火) 12:41:30 UTC
青木@名古屋です。
既に野中さんがコメントを付けておられますので、若干の補足のみ。
野中さんご紹介のUEFIの部分に加え、下記もご参照下さい。
https://ja.wikipedia.org/wiki/GUID%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB
とはいえ、物理ドライブのパーティション管理が乱立すると「修復の名の下の
破壊」の元になりますので、MBR形式の制約からの逃げ場としてEFI以外にも
採用されるのは極めて合理的ですが。
ちなみに、ブートマネージャの類には、
・MBRの基本区画1個を専有するもの(例:OS/2 ブートマネージャ)
・パーティション境界がシリンダ境界で整列しており、(ある容量以降で)
最初のパーティションの前にそれなりの量の空きがあるのを利用して、
MBR本来の部分からPartitionBootRecordではなく空き部分にインストール
した拡張ブートコートを呼び出すもの(例:MBMやFreeBSDのboot0ext)
も存在します。 OS/2ブートマネージャからはFreeBSDの起動ができず、
boot0extからFreeBSDを起動するかOS/2ブートマネージャを起動するかを
選んでいたこともありました...。
なお、実装されているかどうかはファームウェア依存ですが、本来、UEFIでは
ファームウェア側でブートマネージャを用意し、EFIパーティション内の任意の
ローダを選択できるようにもなっています。
※UEFIファームウェアから見ると、ローダもUEFIアプリケーションの一種。
同じOSを複数インストールするのを許すかどうかはOS自体のライセンスにも
関係するため、UEFIファームウェアとしては起動したローダが複数パーティ
ションからの起動選択をサポートするかどうかは管轄外です。
個人的には、メニュー選択可能なのが優、属性をbootonce→bootmeの順で
チェックし、最初に引っ掛かったパーティションを起動するのが良、
とにかく最初に見つかったのだけでも起動できるのが可、というところ
でしょうか。
なお、UEFIの場合、GPTスキームを理解し、EFIタイプのパーティションから
ローダを起動するのは標準機能なのでそれ以外のブートレコードは不要な筈、
非UEFIの場合、MBRの位置にあるPMBRが次段のローダ(FreeBSDのものの場合、
freebsd-bootタイプのパーティション)を探して起動する仕組みのため、
BIOSとしては普通にMBRを読み込んで制御を渡したのと変わりません。
※これはそのまま、Windoze等がMBRを見た時「壊れている」と認識して
自前のもので上書きしてしまい、FreeBSDが起動できなくなるリスクも
MBR時代同様に存在することを意味します。
おまけですが、UEFIファームウェアによっては規格どおりのGPTだとLegacy
での起動を許さないもの(Lenovo等)があり、PMBRパーティションテーブルの
GPTを示すエントリを2番め以降にずらす(gpartでlenovofix属性を付けると
こうしてくれます)なりタイプを0xeeから0xefその他に変えるなり(当初、
そのためのパッチを作って対応しました)しないといけなかったりします。
UEFI非対応のBIOSなら無用の苦労でしょうけど。
On Tue, 19 Apr 2016 00:50:45 +0900
maruyama at ism.ac.jp (丸山直昌) wrote:
> 統計数理研究所の丸山です。
>
> 発端となった問題は既に解決したと思いますが、Subjectを変えて GPT と EFIの
> 関係について考えてみたいと思います。私が気になったのは野中さんの
>
> >GPTスキームは元々(U)EFI規格の一部として作成されたのですが、現状では
> >Legasy BIOSとGPTの組合せも(の方が?)多用されており、
>
> という部分です。そのあたりの歴史は知らないので、まずは何か参照できる文献
> があればご教示願いたいと思います。
>
> それはともかく、GPT を少し知って、 UEFI のことは殆ど知らない私から見ると、
> 歴史はどうであれ、GPTはこれまで広く普及していた「(Microsoft slice)+(BSD
> label)」の方式(今ではMBRスキームを呼ぶようになったが)がはらんでいた問題
> を解決しており、例え UEFI規格が無くても、UEFIモードがなくBIOS boot しか
> できないマシンであっても、MBRは捨ててGPTに移行すべき、と思えるのです。で
> すから、
>
> >現状ではLegasy BIOSとGPTの組合せも(の方が?)多用されており、
>
> は起るべくして起っている現象であって、そこに敢えて UEFI boot モードの話
> を持ち出す必要もないし、また GPTの規格はLegacy BIOS, UEFIの起動モードと
> は独立の規格であるべきだと思うのです。
>
> 皆様のご意見を伺いたい。
>
> なお、一応「(Microsoft slice)+(BSDlabel)の方式がはらんでいた問題」の中で
> 特に重大なものをここに書いておくと、
>
> 1. Microsoft slice のアドレス指定は 32ビットであって、2TBを越えるストレー
> ジでは、アドレス指定が不可能になる。(/usr/include/sys/diskmbr.h 或いは
> /usr/src/sys/boot/i386/boot0/boot0.S 参照)
>
> 2. stage 1 boot code の大きさが 15 sector(7680バイト)に制限されていて、
> 自由が効かない。
>
> 3. (2と実質同じ意味だが)boot manager を特定のOSパーティションの中に埋め
> 込まざるを得ず、その OSパーティションを削除すると、他のOSパーティショ
> ンまで起動困難になる。
>
> --------
> 丸山直昌@統計数理研究所
> _______________________________________________
> freebsd-users-jp at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
> To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe at freebsd.org"
>
--
青木 知明 [Tomoaki AOKI]
junchoon at dec.sakura.ne.jp
freebsd-users-jp メーリングリストの案内