Difference between revisions of "Tyan S2892"
| 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 | + | 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_PRECOMPRESSED_ROM_STREAM=1 | |
| − | + | option USE_FALLBACK_IMAGE=0 | |
| − | + | option LINUXBIOS_EXTRA_VERSION="$(shell cat ../../VERSION)_Normal" | |
| − | + | payload ../olpc-payload.elf.lzma | |
| − | end | + | end |
| − | + | ||
| − | romimage "fallback" | + | 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 | + | end |
| − | buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" | + | buildrom ./linuxbios.rom ROM_SIZE "normal" "fallback" |
Revision as of 16:00, 17 October 2006
Contents |
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"