[LinuxBIOS] Tyan s2892 the OLPC way

Myles Watson myles at pel.cs.byu.edu
Tue Oct 17 17:35:07 CEST 2006


>A quick writeup to the list of what you ended up doing would be great!
>thanks
>ron

Here it is.  Feel free to ask for clarifications.
Myles

Purpose: 
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.

Disclaimer: 
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

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 built it on my 32-bit system for convenience building the kernel.

I modified the Config.mk to include pciutils from  

http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/package/ 

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 had 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.

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.1 (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 and ext3, 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. 

I'd like to go one step further and use a 64-bit kernel so that any changes
I make to the kernel only need to be made once. Looking at mkelfimage, it
looks like the 64-bit file format is not supported.  It might be a simple
change, but I don't know how to do it.

Since I couldn't figure out how to make LinuxBIOS do without the Fallback
image, I configured it to have a zero size payload.

Now I have 
normal/linuxbios.strip (128K)
fallback/linuxbios.strip (128K)
normal/payload (732K)
fallback/payload (0K)
s2892vBIOS.bin (36K)

If I could get rid of the fallback it would make room for the 64-bit kernel
(50K bigger than the 32-bit kernel).  Then I'd just need to modify
mkelfimage and I'd be almost there :) I guess I could take out pciutils to
make up most of the difference (44K), but I like having them there for
debug.

-----------------------Config.lb----------------------

# Sample config file for
# the Tyan s2892
# This will make a target directory of ./s2892

target s2892
mainboard tyan/s2892

option ROM_SIZE	     =0xf7000

option CONFIG_ROM_STREAM=1

option CONFIG_CONSOLE_SERIAL8250=1
option CONFIG_CONSOLE_VGA=1
option FALLBACK_SIZE =0x20000
option ROM_IMAGE_SIZE=0x20000

# Tyan s2892
romimage "normal"
	option CONFIG_COMPRESSED_ROM_STREAM_LZMA=1
	option CONFIG_PRECOMPRESSED_ROM_STREAM=1
	option USE_FALLBACK_IMAGE=0
	option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal"
	payload ../olpc-payload.elf.lzma
end

romimage "fallback"
	option CONFIG_COMPRESSED_ROM_STREAM_LZMA=0
	option CONFIG_PRECOMPRESSED_ROM_STREAM=0
	option USE_FALLBACK_IMAGE=1
	option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback"
	payload ../payload.zero
end

buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback"








More information about the coreboot mailing list