2012-11-17

LenovoのUEFIのアホくさい実装

mjg59 | More in the series of bizarre UEFI bugs

UEFI自体の問題ではなく、実装の問題。

なぜかLenovo Thinkcentre M92pをUEFIモードにして使うと、インストールしたFedoraがブートできない。インストールは可能だが、なぜかブートできない。Windowsは正しくブートする。

Windowsのブートエントリと比較してみても、なぜか違いがわからない。最終的に、Windowsのブートエントリを変更してみることにした。するとWindowsのブートにも失敗した。

変更箇所は、ユーザーにブートメニューを表示する際の項目名。なぜか。"Windows Boot Manager"でなければブートしない。しかし、この項目はファームウェアがパースすべき部分ではない。なぜここが影響するのか。しかし、この現象は、ファームウェアがブートエントリの項目名をパースしているとしか思えない。

ファームウェアをダウンロードして解析してみると、まさにこのとおりだった。Lenovo Thinkcentre M92pのファームウェアは、ブートエントリの項目名をパースするようになっていた。そして、特定の項目名でなければブートしないようになっている。興味深いことに、Windowsだけではなく、Red Hatも通すようになっていた。しかし、当然ながら、Fedoraは通さない。

一体どこのアホがこんな実装にしたのだ。

ハードウェアとそのファームウェアには、相当に多くのバグがある。主要OSはその尻拭いをさせられているのだ。たとえば、あるマザーボードでは、OSに処理を明け渡した後も、特定のメモリ領域に読み書きをするなどだ。そのような場合、OS側で個別に汚いハックを用意し、このマザーボードはクソなので特定のメモリ領域にアクセスしないように特別なはからいを設けなければならない。

この問題はPhoronixの該当記事のフォーラムでも議論されているが、なかなか興味深い。

Lenovo UEFI Only Wants To Boot Windows, RHEL

Microsoftはこの手のバグが出ることが分かっているから変な規格を提案するんだという意見まである。というのも、Microsoft Windowsなら、たまたまバグに引っかからず動作するから問題ない。他のOSのことなんて知るものかというスタンスで、事実上MS以外のOSの動作を妨害しているという意見だ。まあ、ハンロンの剃刀なのか邪悪なのかは知らないが。

No comments: