Difference between revisions of "Board:tyan/s2892"

From coreboot
Jump to: navigation, search
(The procedure: Link to the patch in the mailing list archives.)
m (The procedure)
Line 46: Line 46:
* s2892vBIOS.bin (36K)
* s2892vBIOS.bin (36K)
If you want to simplify the build process and just do what I did:
If you want to simplify the build process and don't want to customize it too much:
* Use this [http://www.openbios.org/pipermail/linuxbios/attachments/20061031/18edb8e8/attachment-0001.obj buildrom2_noacpi.tar.bz2] [http://www.linuxbios.org/pipermail/linuxbios/2006-October/016537.html original post]
* Or this [http://www.openbios.org/pipermail/linuxbios/attachments/20061031/7e7a6632/attachment-0001.obj buildrom2_amd64_1031.tar.bz2] [http://www.linuxbios.org/pipermail/linuxbios/2006-October/016558.html original post]
# git clone git://dev.laptop.org/users/jcrouse/buildrom
# apply this patch [[64-bit buildrom patch]]
# apply this [http://www.openbios.org/pipermail/linuxbios/attachments/20061030/09109ba7/attachment.obj resolve.S patch] ([http://www.linuxbios.org/pipermail/linuxbios/2006-October/016523.html original post]) from yhlu
# make  
# make  
# use payloads from deploy directory.
# use payloads from deploy directory.

Revision as of 14:16, 1 November 2006


Customize the system to allow me to play with memory mappings and large devices. I wanted to minimize intermediate steps from LinuxBIOS to Linux to minimize the areas of expertise I needed to develop. I also wanted to be able to use the SATA drives as my boot drives.


There are several places where my solutions are not as elegant as I wished them to be. Suggestions are welcome.

Current set up

  • Tyan s2892
  • LinuxBIOS with Linux 2.6.18-tiny as a payload

The procedure

I started by installing LinuxBIOS on the system and using FILO and Etherboot to boot to a kernel. This allowed me to try the different payloads without flashing every time.

Next I downloaded the OLPC buildrom

git clone git://dev.laptop.org/users/jcrouse/buildrom

I modified the Config.mk to include pciutils from


and took out the graphical boot menu. I also modified buildrom/skeleton/devices.txt to add lines for my hard drives. I just copied the lines for sda and sda1 and made hda hda1 hda2 and sda2. The important thing is to make sure that the major and minor numbers are correct.

I modified buildrom/skeleton/linuxrc so that the device files were created earlier, /dev/null didn't become a text file, and my drives got mounted in read-only mode.

I then modified buildrom/skeleton/bin/boot.functions so that doboot() called my script on the hard drive for the kexec. That's nice to avoid flashing the BIOS for booting different kernels.

I downloaded Linux (2.6.18-rc4 had some problems with SATA) and patched it with the tiny patches that came with OLPC. 12-tiny-tiny-crc.patch fails, but was easy to apply by hand.

I configured the kernel to include support for ext2, SATA, and IDE.

I ran make and copied the payloads from the buildrom/deploy directory to my s2892 to be used. olpc-payload.elf.lzma (732K) is used for booting directly from LinuxBIOS, and olpc-payload-uncompressed.elf (1.7M) was useful for testing it with FILO and Etherboot.

mkelfImage wouldn't work with the vmlinux file, so I changed the Makefile to get it to use the bzImage instead.

Now I have

  • fallback/linuxbios.strip (88K)
  • normal/payload (860K)
  • s2892vBIOS.bin (36K)

If you want to simplify the build process and don't want to customize it too much:

  1. make
  2. use payloads from deploy directory.

WARNING: I have a bios savior so that when I mess up I can get my machine back. If you don't have one, you might not want to do the fallback only boot.


# Sample config file for
# the Tyan s2892
# This will make a target directory of ./s2892
target s2892
mainboard tyan/s2892
option ROM_SIZE      = 0xf7000 # 8Mbit - 36K for VGA BIOS
option ROM_IMAGE_SIZE = 0x16000
# Tyan s2892
romimage "fallback"
        option USE_FALLBACK_IMAGE=1
        option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback"
        payload ../olpc-payload.elf.lzma

buildrom ./linuxbios.rom ROM_SIZE "fallback"


Because the kexec tools that are included with OLPC's buildrom are stripped down for 32-bit kernels, I built kexec statically linked (read "large file") and put it on the hard drive with the kernel to be loaded. I use kexec to boot my kernel which has been combined with initrd into an elf with mkelfImage:

mkelfImage --comand--line="ro root=/dev/hda1 console=tty0" --kernel="vmlinux" --initrd="initrd" --output="mylinux.elf"

I have to use

kexec -f mylinux.elf 

because otherwise kexec calls shutdown and there is no shutdown in the OLPC initrd. I guess that's a half truth, because when I call kexec without the -f it reboots the machine completely instead of a kexec when shutdown is available.


My machine boots LinuxBIOS, then linux-, then kexecs into linux- It takes a little longer than going through elfboot and FILO, but it is a simpler path.


This document was written by Myles Watson <myles at pel dot cs dot byu dot edu>