Written by たちゃな@巫研 < tatyana at miko dot org >
=更新履歴=
公開。(Dec 1, 2009)
Gigabyte 製 MPC7A マザーボード GA-E7AUM-DS2H の BIOS にはバグがあり、
していると、FreeBSD が正常動作しない。(BIOS バージョン F4 にて確認)
といった方法で回避することもできるが、ここではソフトウェア的な解決を試みる。
根本的原因は、BIOS が返す SMAP 情報に問題があり、フリーエリア (100000:bfdf0000) にフレームバッファ (70000000:10000000) が重なる箇所が存在するため。
BASE | LENGTH | TYPE |
0 | 9e800 | 1 |
9e800 | 800 | 2 |
f0000 | 10000 | 2 |
100000 | bfdf0000 | 1 |
70000000 | 10000000 | 2 |
80000000 | 3fef0000 | 1 |
bfef0000 | 3000 | 4 |
bfef3000 | d000 | 3 |
ea000000 | 2000000 | 2 |
fec00000 | 1400000 | 2 |
100000000 | 40000000 | 1 |
* bfdf0000 は 6ff00000 でなければならない
よって、ブートローダにパッチを当て、重なり合いを解消した SMAP 情報を OS に渡すようにすれば問題を解決できる。
パッチ導入の手順としては、まずメモリを 2GB に落とすなどした状態で FreeBSD をインストールし、OS のソースにパッチを当てる。
$ mkdir ~/Sources
$ cd ~/Sources
$ wget http://miko.org/~tatyana/tech/FreeBSD/FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff
$ openssl rmd160 FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff
RIPEMD160(FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff)= 522615669719b4cac3a0f6a838fefdc00a93bcdb
$ cd /usr/src
$ sudo patch -p0 < ~/Sources/FreeBSD_8.2_GA-E7AUM-DS2H_Over2GB.diff
パッチ適用後、ブートローダをビルド&インストールする。
$ cd /usr/src/sys/boot $ sudo make clean $ sudo make obj $ sudo make depend $ sudo make $ cd i386/loader $ sudo make install $ cd ../.. $ sudo make clean
adidasprince's Chameleon patch に触発され、このパッチを作成した。