[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 メーリングリストの案内