Your OS as BIOS replacement
Posted: Thu May 05, 2011 10:10 am
Good day!
I'm one of the coreboot users/developers. This is FOSS alternative to legacy BIOS/EFI. It let boot any elf image, or SeaBIOS (which provide legacy bios services).
And it's pretty small. So, as usually modern BIOS flash chips are big, you can place your tiny own OS in ROM.
As example, i'm working on booting KolibriOS from coreboot. Now it booting oveer SeaBIOS, but i'm hope exclude SeaBIOS stage from booting.
First of all - please, read our wiki http://www.coreboot.org/
Found supported hardware http://www.coreboot.org/Supported_Motherboards
and decide which you have to try coreboot, or you can use QEMU.
1. Download&configure&build:
You need to choose targets->QEMU for producing image for qemu. Then run
2. Output will be in coreboot.rom inside build directory.
3. Download vgabios image for qemu from http://www.coreboot.org/images/0/0d/Vgabios-cirrus.zip
4. You need latest qemu (0.14 or from git)
3. Copy coreboot.rom in working directory, rename it into bios.bin
Copy vgabios-cirrus.bin here also.
4. Run qemu with
where kolibri.iso is kolibrios image, but can be your own OS image. "-L ." option point qemu to directory where bios.bin and vgabios-cirrus.bin files.
here is my example image:
Also you can pack OS image in rom:
I'm using kolibri.img (floppy image):
where cbfstool in build directory of coreboot tree.
you can check now result with:
Now you can also rename coreboot.rom into bios.bin for your working directory and try boot with qemu.
Also, coreboot let you boot:
http://www.coreboot.org/FAQ
For debugging this on real hardware you can use SerialICE http://www.serialice.com/
I'm attaching ready image and some files from libpayload to show how-to work with coreboot specifics
Here is configs + images http://rghost.net/5482306
I'm one of the coreboot users/developers. This is FOSS alternative to legacy BIOS/EFI. It let boot any elf image, or SeaBIOS (which provide legacy bios services).
And it's pretty small. So, as usually modern BIOS flash chips are big, you can place your tiny own OS in ROM.
As example, i'm working on booting KolibriOS from coreboot. Now it booting oveer SeaBIOS, but i'm hope exclude SeaBIOS stage from booting.
First of all - please, read our wiki http://www.coreboot.org/
Found supported hardware http://www.coreboot.org/Supported_Motherboards
and decide which you have to try coreboot, or you can use QEMU.
1. Download&configure&build:
Code: Select all
svn co svn://coreboot.org/coreboot/trunk coreboot
cd coreboot
make menuconfig
Code: Select all
make
3. Download vgabios image for qemu from http://www.coreboot.org/images/0/0d/Vgabios-cirrus.zip
4. You need latest qemu (0.14 or from git)
3. Copy coreboot.rom in working directory, rename it into bios.bin
Copy vgabios-cirrus.bin here also.
4. Run qemu with
Code: Select all
qemu -L . -cdrom kolibri.iso -serial stdio
here is my example image:
Code: Select all
coreboot.rom: 4096 kB, bootblocksize 1504, romsize 4194304, offset 0x0
Alignment: 64 bytes
Name Offset Type Size
cmos_layout.bin 0x0 unknown 1159
fallback/romstage 0x4c0 stage 12720
fallback/coreboot_ram 0x36c0 stage 27797
fallback/payload 0xa3c0 payload 40596
(empty) 0x142c0 null 4110104
I'm using kolibri.img (floppy image):
Code: Select all
lzma -zc kolibri.img > kolibri.img.lzma
./build/cbfstool coreboot.rom add kolibri.img.lzma floppyimg/Kolibri.lzma raw
you can check now result with:
Code: Select all
./build/cbfstool coreboot.rom print
Also, coreboot let you boot:
- directly boot 32-bit code
- have no bugs usual for BIOS (see http://www.coreboot.org/Security)
- Have support from AMD ( http://blogs.amd.com/work/2011/02/28/te ... -coreboot/ + http://blogs.amd.com/work/2011/02/28/amd-coreboot/ )
- Its faster and smaller. See http://www.coreboot.org/Benefits
http://www.coreboot.org/FAQ
- http://www.coreboot.org/Developer_Manual
- http://www.coreboot.org/Payloads
- http://www.coreboot.org/SeaBIOS
- http://www.coreboot.org/FILO
- http://www.coreboot.org/Libpayload
- http://www.coreboot.org/Payload_API
For debugging this on real hardware you can use SerialICE http://www.serialice.com/
I'm attaching ready image and some files from libpayload to show how-to work with coreboot specifics
Here is configs + images http://rghost.net/5482306