Written by Tatyana Hiko < tatyana at miko dot org >
=ChangeLog=
Initial Release (Dec 1, 2009)
Gigabyte technology's MPC7A Motherboard GA-E7AUM-DS2H has a bug in its BIOS. (This bug still exists in the latest BIOS, version F4)
Due to this problem this motherboard cannot drive FreeBSD stably if
You can avoid this problem by
though, here I tried to find some software workaround.
This BIOS returns an incorrect SMAP information which has an overlap area during a free area (100000:bfdf0000) and the frame buffer (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 should be 6ff00000
So, we can fix this issue by patching the FreeBSD boot loader to convert the incorrect SMAP information into a correct one which hasn't any overlapping area.
To patch and rebuild the FreeBSD boot loader, first of all, you have to decrease the RAM to 2GB because you have to make FreeBSD work properly. After that you can patch the source tree like the following.
$ 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
After the patching, try to build and install the boot loader.
$ 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
That's it! ;-)
Thanks to adidasprince's Chameleon patch.