Hello,
this was my first try to build a coreboot bios ever, for my tyan s2895 mobo. I get managed to build and burn the bios into a RD1 512KB bios savior chip. The computer is booting, and then crashing on Ubuntu logo (10.04 64bits version), so far so nice.
Here is what i have done:
My rom build computer is installed with Ubuntu 10.04 64bits version, with build-essential and some other packages (flex bison git-core g++ gdb libncurses5-dev doxygen iasl build-essential lzma-dev liblzma-dev) I downloaded latest available verszion of payload seabios, with command "git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios". Then i have adapted the config.h file as follow:
#define CONFIG_COREBOOT 1 #define CONFIG_DEBUG_SERIAL 1 #define CONFIG_VGAHOOKS 1
The make command has build the file => out/bios.bin.elf 1048716 bytes
Now i downloaded latest coreboot files, with a "svn co svn://coreboot.org/coreboot/trunk coreboot" But, on first "make", i run into troubles:
build/coreboot_ram.o: In function `__wrap___umoddi3': (.text+0x1223f): undefined reference to `__umoddi3' build/coreboot_ram.o: In function `__wrap___moddi3': (.text+0x1224a): undefined reference to `__moddi3' build/coreboot_ram.o: In function `__wrap___udivdi3': (.text+0x12255): undefined reference to `__udivdi3' build/coreboot_ram.o: In function `__wrap___divdi3': (.text+0x12260): undefined reference to `__divdi3' collect2: ld returned 1 exit status make: *** [build/coreboot_ram] Erreur 1
Then i find out (in some mailing list archive) that there is a integrated compiling toolchain in the coreboot files, under "coreboot/util/crossgcc". The command "./buildgcc" was succesfull even if it tooks some time, enought to drink a coffee.
On second "make" try, same compile errors. After some researches i find out that i need to do a "rm -rf build" and a new "make menuconfig", but it didnt solved my problem, same compilation errors :( I finnaly found out that i need to also delete the .xcompile file. So after the "rm -rf build", "rm .config", "rm .xcompile" and finally a "make menuconfig", the "make" was working (i am not a programmer), yes.
I burned the coreboot.rom into the RD1 chip, and restared the computer. I then saw briefly a message about pressing F12 for some configuration. After some other quick messages, which i coulnd read, i saw Ubuntu starting and then crashing on the graphical logo. This is not really a problem so far, as i was able to switch back to the original bios to get computer up and running.
Now i have a 3 questions for you:
Is the coreboot.rom 32bits only and is there any advantage to build a 64bits version of the coreboot bios, as i intend to run a 64bits OS ? I build the seabios with Ubuntu gcc 64bits version, it is compatible, can i mix it, with the coreboot.rom build with i386-elf coreboot toolchain ? The build seabios (bios.bin.elf) is about 1MB in size, how it is possible to put it into a smaller 512KB chip inside coreboot.rom ?
I didnt put VGA bios so far into the coreboot.rom.
In my opinion, it would be a good idea to mention, somewhere in the build howto, that there is a integrated toolchain in coreboot, and may be also mention not to forget to delete the .xcompile file after the toolchain was built.
What are your advice for the next steps ? Put VGA bios into coreboot.rom, change Ubuntu default start to non-graphical one ? I have attached the .config file for coreboot (btw i used lzma compression for payload).
Thank you very much, i really appreciate your help. Frédéric Stemmelin