Difference between revisions of "Board:tyan/s2892"

From coreboot
Jump to: navigation, search
 
Line 1: Line 1:
Purpose:
+
== Purpose ==
 
Customize the system to allow me to play with memory mappings and large
 
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
 
devices.  I wanted to minimize intermediate steps from LinuxBIOS to Linux to
Line 5: Line 5:
 
able to use the SATA drives as my boot drives.
 
able to use the SATA drives as my boot drives.
  
Disclaimer:
+
==Disclaimer ==
 
There are several places where my solutions are not as elegant as I wished
 
There are several places where my solutions are not as elegant as I wished
 
them to be.  Suggestions are welcome.
 
them to be.  Suggestions are welcome.
  
Current set up:
+
== Current set up ==
Tyan s2892
+
 
LinuxBIOS with Linux 2.6.18-tiny as a payload
+
* 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
 
I started by installing LinuxBIOS on the system and using FILO and Etherboot
Line 19: Line 22:
 
Next I downloaded the OLPC buildrom
 
Next I downloaded the OLPC buildrom
  
git clone git://dev.laptop.org/users/jcrouse/buildrom
+
git clone git://dev.laptop.org/users/jcrouse/buildrom
  
 
I built it on my 32-bit system for convenience building the kernel.
 
I built it on my 32-bit system for convenience building the kernel.
  
I modified the Config.mk to include pciutils from
+
I modified the Config.mk to include pciutils from http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/package/
 
+
http://buildroot.uclibc.org/cgi-bin/viewcvs.cgi/trunk/buildroot/package/
+
  
 
and took out the graphical boot menu.  I also modified
 
and took out the graphical boot menu.  I also modified
buildrom/skeleton/devices.txt to add lines for my hard drives.  I just
+
''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
+
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
 
important thing is to make sure that the major and minor numbers are
 
correct.
 
correct.
  
I modified buildrom/skeleton/linuxrc so that the device files were created
+
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.
+
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
+
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
 
my script on the hard drive for the kexec.  That's nice to avoid flashing
 
the BIOS for booting different kernels.
 
the BIOS for booting different kernels.
Line 42: Line 43:
 
I downloaded Linux 2.6.18.1 (2.6.18-rc4 had some problems with SATA) and
 
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.
 
patched it with the tiny patches that came with OLPC.
12-tiny-tiny-crc.patch fails, but was easy to apply by hand.
+
''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 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
+
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
+
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
+
from LinuxBIOS, and ''olpc-payload-uncompressed.elf'' (1.7M) was useful for
 
testing it with FILO and Etherboot.
 
testing it with FILO and Etherboot.
  
Line 60: Line 61:
  
 
Now I have
 
Now I have
normal/linuxbios.strip (128K)
+
* normal/linuxbios.strip (128K)
fallback/linuxbios.strip (128K)
+
* fallback/linuxbios.strip (128K)
normal/payload (732K)
+
* normal/payload (732K)
fallback/payload (0K)
+
* fallback/payload (0K)
s2892vBIOS.bin (36K)
+
* s2892vBIOS.bin (36K)
  
 
If I could get rid of the fallback it would make room for the 64-bit kernel
 
If I could get rid of the fallback it would make room for the 64-bit kernel
Line 74: Line 75:
 
-----------------------Config.lb----------------------
 
-----------------------Config.lb----------------------
  
# Sample config file for
+
# Sample config file for
# the Tyan s2892
+
# the Tyan s2892
# This will make a target directory of ./s2892
+
# This will make a target directory of ./s2892
 
+
target s2892
+
target s2892
mainboard tyan/s2892
+
mainboard tyan/s2892
 
+
option ROM_SIZE      =0xf7000
+
option ROM_SIZE      =0xf7000
 
+
option CONFIG_ROM_STREAM=1
+
option CONFIG_ROM_STREAM=1
 
+
option CONFIG_CONSOLE_SERIAL8250=1
+
option CONFIG_CONSOLE_SERIAL8250=1
option CONFIG_CONSOLE_VGA=1
+
option CONFIG_CONSOLE_VGA=1
option FALLBACK_SIZE =0x20000
+
option FALLBACK_SIZE =0x20000
option ROM_IMAGE_SIZE=0x20000
+
option ROM_IMAGE_SIZE=0x20000
 
+
# Tyan s2892
+
# Tyan s2892
romimage "normal"
+
romimage "normal"
        option CONFIG_COMPRESSED_ROM_STREAM_LZMA=1
+
        option CONFIG_COMPRESSED_ROM_STREAM_LZMA=1
        option CONFIG_PRECOMPRESSED_ROM_STREAM=1
+
        option CONFIG_PRECOMPRESSED_ROM_STREAM=1
        option USE_FALLBACK_IMAGE=0
+
        option USE_FALLBACK_IMAGE=0
        option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal"
+
        option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal"
        payload ../olpc-payload.elf.lzma
+
        payload ../olpc-payload.elf.lzma
end
+
end
 
+
romimage "fallback"
+
romimage "fallback"
        option CONFIG_COMPRESSED_ROM_STREAM_LZMA=0
+
        option CONFIG_COMPRESSED_ROM_STREAM_LZMA=0
        option CONFIG_PRECOMPRESSED_ROM_STREAM=0
+
        option CONFIG_PRECOMPRESSED_ROM_STREAM=0
        option USE_FALLBACK_IMAGE=1
+
        option USE_FALLBACK_IMAGE=1
        option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback"
+
        option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Fallback"
        payload ../payload.zero
+
        payload ../payload.zero
end
+
end
buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback"
+
buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback"

Revision as of 16:00, 17 October 2006

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

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

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"