2013-02-02

UEFIとLinuxの現状

mjg59 | The current state of UEFI and Linux

Matthew Garrettが、UEFIの実装の現状と、一部の悲惨な実装について語っている。

まとめ:大方、問題なく動く。

既知の問題:

いくつかのサムソンのラップトップ。サムソンのラップトップのドライバーはちょっとばかりヘンテコになっている。問題のラップトップが出荷された2010年では、大半のベンダーは、ファームウェアに、ACPIにしろ、WMIにしろ、何らかのアブストラクション機構を作っていた。サムソンはいまだに時代遅れの手法を使っていた。特定のアドレス領域が与えられており、そのアドレスを読み込んでオフセット集を取得する。そして、そのオフセットを元にマジックナンバーをマジックシステムIOポートにオフセットを元になんとかすれば何かが起こる。その書き込みはシステム・マネジメント・モードを発動させる。これは特別なx86 CPUモードであり、プロセッサーがOSからは見えず、OSのあずかり知らぬまま、メモリー上のコードを実行するのだ。これ自体は特に目新しいことではない。(システム・マネジメント・モードは1990年に386slとして初出している)。しかし、これはシステムベンダーがインターフェースを変更しないことに依存している。どうやら、サムソンはUEFIに移行する際、プラットフォームのインターフェースを変えたらしいのだが、昔のドライバーの挙動から保護するはからいはしなかったらしい。モダンなサムソンのラップトップでこれらの操作を行うと、修復不可能なマシンチェック例外が発生し(結果的にはラップトップを文鎮化してしまう)。まあ、サムソンの前科を考えれば、驚くにはあたらない。

吉報としては、この問題はセキュアブート以前にも発生していたのであり、セキュアブートの問題ではないということだ。

いくつかの東芝製は、Linuxをブートできない。これは、東芝内か、あるいは東芝のサードパーティベンダーの技術力不足によるものだ。東芝は署名鍵をバイナリを検証するデータベースに入れたままにしておき、ホワイトリストとブラックリストのアップデートにつかうデータベース用の署名鍵もそのまま残しておくという失態をしでかしたのだ。吉報としては、これは明白にMicrosoftのWindows 8認証ガイドライン違反であり、おそらく東芝側にBIOSを修正するよう圧力がかかるだろう。凶報としては、いま世の中に出回っているコンピューターはいまだに壊れたままで、東芝はどうも出回ったハードウェアにファームウェアアップデートを提供したくないようなのだ。

いくつかLenovo製は、WindowsやRed Hat Enterprise Linuxしかブートしない。私は大いに痛飲することを推奨する。というのも、Lenovo側に修正する動きはいまだもってまったく見られないからだ。

まあ、あまり嬉しくない既知の問題だが、私の知る限り、これで問題は全部だ。いくつかのサムソン製と、一時期の東芝製と、一時期のLenovoデスクトップを除いては、Linuxは問題がないはずだ。もし、他にFedora 18をインストールできないUEFIシステムがあれば、教えてくれれば、我々は問題を検証する。

Lenovo製のコンピューターがUEFIブートで、WindowsとRed Hat Enterprise Linuxしかブートしないというのは、クソなファームウェア実装によるものだ。本来ファームウェアがパースすべきでないブートエントリの表示名としての文字列をパースして、WindowsやRed Hatでデフォルトで使われている文字列と一致しなければブートを拒否するというタコな実装になっている。詳しくは本の虫: LenovoのUEFIのアホくさい実装を参照。

また、サムソンの前科の例としては、Slashdotに詳しいコメントがある。

Linux: Booting Via UEFI Can Brick Samsung Notebooks - Slashdot

サムソンのeMMCファームウェアにバグがあり、セキュア削除コマンドを発行した際、ウェアレベリングが正しく動作せず、ハードウェアが動作不能になってしまうという問題で、サムソンはいまだにこの問題を積極的に修正していないというものだ。

まあ、これは、セキュアブートの問題と言うよりは、規格通りに正しく実装していないハードウェアベンダーのファームウェア上のバグと、問題が発覚したにもかかわらず修正をしない無責任なハードウェアベンダーの問題である。さらに、UEFIの規格がやたらと複雑なのも、規格違反の実装を出す一因になっているだろう。もっとも、BIOS時代だって規格違反、不具合だらけの実装が修正されずに出回り、OS側での対処を余儀なくされているのだから、問題は変わっていないのだが。

追記:ハードウェアベンダーがLinux対応を謳っているかどうかは関係がない。UEFI規格違反であり、したがってUEFI対応を謳っているにも関わらず規格違反の実装をしている欠陥品ということになる。

No comments: