SeaBIOS: Difference between revisions
Hailfinger (talk | contribs) (Use cases) |
KevinOConnor (talk | contribs) (PCIBIOS should not be disabled; OPTIONROMS_DEPLOYED should be disabled; Fix gitweb link; AVOIDCOMBINE now autodetected.) |
||
Line 32: | Line 32: | ||
</source> | </source> | ||
Alternatively, the released versions of SeaBIOS can be found at http://linuxtogo.org/~kevin/SeaBIOS/. There's also a [http://linuxtogo.org/ | Alternatively, the released versions of SeaBIOS can be found at http://linuxtogo.org/~kevin/SeaBIOS/. There's also a [http://git.linuxtogo.org/?p=kevin/seabios.git;a=summary gitweb] facility to browse the latest source code online. | ||
Edit '''src/config.h''' and set the following values: | Edit '''src/config.h''' and set the following values: | ||
Line 39: | Line 39: | ||
#define CONFIG_COREBOOT 1 | #define CONFIG_COREBOOT 1 | ||
#define CONFIG_DEBUG_SERIAL 1 | #define CONFIG_DEBUG_SERIAL 1 | ||
#define | #define CONFIG_OPTIONROMS_DEPLOYED 0 | ||
</source> | </source> | ||
Line 45: | Line 45: | ||
<source lang="bash"> | <source lang="bash"> | ||
$ make | $ make | ||
</source> | </source> | ||
The final SeaBIOS payload file is '''out/bios.bin.elf''', which can be used with coreboot v2 or v3. | The final SeaBIOS payload file is '''out/bios.bin.elf''', which can be used with coreboot v2 or v3. |
Revision as of 16:52, 7 March 2009
SeaBIOS (previously known as LegacyBIOS) is an open-source legacy BIOS implementation, which can also be used as coreboot payload.
Use cases
Any software requiring 16-bit BIOS services benefits from SeaBIOS.
Windows XP
Windows XP has been booted on real hardware with coreboot and SeaBIOS. Some patches are required.
Windows Vista
Windows Vista (64/32 bit) has been booted on real hardware with coreboot and SeaBIOS. Some patches are required.
Windows 7 Beta
Windows 7 Beta (?? bit) has been booted on real hardware with coreboot and SeaBIOS. Some patches are required.
GRUB
GRUB works with coreboot and SeaBIOS on real hardware and boots Linux just fine.
Building
SeaBIOS
You can download the latest version of SeaBIOS through a git repository:
<source lang="bash"> $ git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios $ cd seabios </source>
Alternatively, the released versions of SeaBIOS can be found at http://linuxtogo.org/~kevin/SeaBIOS/. There's also a gitweb facility to browse the latest source code online.
Edit src/config.h and set the following values:
<source lang="C">
- define CONFIG_COREBOOT 1
- define CONFIG_DEBUG_SERIAL 1
- define CONFIG_OPTIONROMS_DEPLOYED 0
</source>
Then:
<source lang="bash"> $ make </source>
The final SeaBIOS payload file is out/bios.bin.elf, which can be used with coreboot v2 or v3.
coreboot
Finally, you have to build coreboot (v3 in this example) with SeaBIOS as payload:
<source lang="bash"> $ cd .. $ svn co svn://coreboot.org/repository/coreboot-v3 $ cp seabios/out/bios.bin.elf coreboot-v3/payload.elf $ cd coreboot-v3 $ make menuconfig </source>
Now enter the Payload menu and select Payload type and then An ELF executable payload file. Now exit the menu, save your settings, and build coreboot:
<source lang="bash"> $ make </source>
The file build/coreboot.rom (or build/bios.bin) is your final coreboot v3 image, which also contains the SeaBIOS payload.
Running SeaBIOS in QEMU
For running coreboot+SeaBIOS in QEMU, you need a patched version of vgabios-cirrus.bin in your build directory first:
<source lang="bash"> $ cd build $ wget http://www.coreboot.org/images/0/0d/Vgabios-cirrus.zip $ unzip Vgabios-cirrus.zip $ cd .. </source>
You can now run SeaBIOS in QEMU:
<source lang="bash"> $ qemu -L build -hda /dev/zero -serial stdio </source>
Ready-made SeaBIOS QEMU image
TODO
I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
In case this is not legally possible: |