See the documentation about coreboot, and why it needs a payload. So far I have only used filo.

+

See the documentation about coreboot, and why it needs a payload.

+

+

=== filo ===

Copy your /boot/grub directory to /boot/filo. This stops any interaction between grub and filo. Your future BIOS will boot according to /boot/filo/menu.lst, and the hard disk will boot according to /boot/grub/menu.lst.

Copy your /boot/grub directory to /boot/filo. This stops any interaction between grub and filo. Your future BIOS will boot according to /boot/filo/menu.lst, and the hard disk will boot according to /boot/grub/menu.lst.

Line 387:

Line 389:

Build your filo.elf and copy it into /boot. Boot it via the grub command line and make sure it works.

Build your filo.elf and copy it into /boot. Boot it via the grub command line and make sure it works.

+

+

=== Grub2 ===

+

+

There are hints and a wiki page, but no proper documentation.

+

+

Grub2 did not work for me. It did show a help screen, but did not boot the system, If you embed a menu into the grub2 payload, it just reboots the machine, after showing the "Grub2 Welcome" message

+

+

Since you get the source via svn, I probably caught it on a bad day; hopefully they will get it to work soon.

+

+

+

=== A Linux Payload ===

+

+

This was a lot easier than I thought it would be. You need to buy some SST49LF160C chips, So 16 M Bit gives you 2M bytes. There do not seam to be any bigger chips.

+

+

You need a system with a small kernel. The first system on this machine is "Linux from Scratch", and with careful pruning I have got the kernel down to around 1.8M bytes.

The payload

See the documentation about coreboot, and why it needs a payload.

filo

Copy your /boot/grub directory to /boot/filo. This stops any interaction between grub and filo. Your future BIOS will boot according to /boot/filo/menu.lst, and the hard disk will boot according to /boot/grub/menu.lst.
Get and compile filo-0.5. Here is my configuration file

Then copy the kernel.elf file into /boot, and check that it works on grub's command line

You can use this as a payload now, and change the size of BIOS chip in your build parameters from 4 M bit to 16 M bit. Then put in a new chip and flash it.

You should build a static kexec and add that to the coreboot build, I am working on it. But this boots my system; and I kexec into other systems from that.

Null Modem Cable

If you have two machines you can see the output from coreboot. Get a good quality Null Modem cable and test it by running minicom on both machines. The only change that I made was to use ttyS0, instead of minicom's default of ttyS1.

You can now take a copy of the factory BIOS. First read the factory BIOS into a file

sudo flashrom -V -c Pm49FL004 -r -o factory

And then verify it

sudo flashrom -V -c Pm49FL004 -v factory

You now have a verified copy of the factory BIOS, ready to reprogram new chips.
.

The next step is to use that file to flash a brand new chip. To hot swap the BIOS chip I found it best to lay the machine on its back so you can put the chip out vertically. So gently extract the BIOS chip and put it into an anti-static bag. Get one of your new chips and locate it very carefully into position, note the bevel on one corner. Gentle pressure will now push the chip home. Put the computer back onto its feet, and check that the chip is there.

You can now reboot the machine and check that it works. You will need to interrupt the BIOS, read the optimized setting, reset the boot order, then write the settings back.

Repeat this procedure until you have two backup copies, then put those two copies away somewhere safe. You now have an emergency recovery procedure.

You may like to repeat this so that you have a spare factory BIOS chip to keep near the machine,

Coreboot

You can now build coreboot, check that the payloads are your working filo.elf, and just follow the build instructions. Set minicom working on the second machine, you might like to capture the data into a file. Write the coreboot image to the flash chip, after erasing first, then verify it.