借り初めのひみつきち

仮ブログです。

はりぼてOSをUEFIで起動する/3日目

昨日の奴、というかそれ以前から致命的なバグがあったので修正しました。

BootServices->GetMemoryMap の呼び出しを勘違いしていてパラメタが不正だったので、うまく動かない機種があったようです。
むしろ動いていた機種の方がおかしかったのですが。。。UEFI ってほんと機種ごとに挙動の違いが激しいです>_<

昨日の記事では UEFI-Aware 対応にしたいと言ってましたが、よく考えたら UEFI は 64bit ではりぼてOSは 32bit で直接呼び出すことができないので何らかのブリッジが必要でした。いきなりヘビーになりました。。


さて、 32bit カラーに対応して UEFI から起動できそうなはりぼてOS系OSは結局見つからなかったので自分で改造することにしました。
とりあえず起動してそれっぽい画面が拝めるようになりました。

github.com

ベースになったのはここにあったやつです。

あと個人的な事情でこれも適用してあります。


ちなみにはりぼてOSのメモリ容量を認識する方法は突っ込みどころが多いのですが*1、加えて最近の数GB積んでるマシンだとメモリの認識だけで結構な時間がかかるので公開しているバージョンは認識できるメモリ量をわざと減らしてあります。
真面目にメモリマップを調べるのもめんどくさいし、スマートに解決できる方法を思いついたらどうにかしたいです。


はりぼてOSをいじるのが主な目的ではないので、いいところで区切りをつけたいところです。。

*1:端的に言うとやっちゃいけない方法です