Board:gigabyte/m57sli: Difference between revisions

From coreboot
Jump to navigation Jump to search
Line 18: Line 18:


This wiki page is maintained by Ward Vandewege (ward at gnu dot org).
This wiki page is maintained by Ward Vandewege (ward at gnu dot org).
===Payload===
LinuxBIOS requires a [http://linuxbios.org/index.php/Payloads Payload] to boot an operating system.
If you want to boot from the network, you will need to use [http://www.etherboot.org Etherboot].
If you want to boot from an IDE drive, SATA drive, USB stick or CDROM, you can use [http://linuxbios.org/index.php/FILO FILO].
===Building the payload===
In order to boot from a SATA disk, we use FILO.
Once you've downloaded FILO, you will need to put a file 'Config' in its root tree. An example can be found in the distribution, called 'defconfig'.
You can configure FILO to load Grub. Here's my Config, which does that:
  # Use grub instead of autoboot?
  USE_GRUB = 1
  # Grub menu.lst path
  MENULST_FILE = "hda1:/grub/menu.lst"
  # Driver for hard disk, CompactFlash, and CD-ROM on IDE bus
  IDE_DISK = 1
  # Add a short delay when polling status registers
  # (required on some broken SATA controllers)
  IDE_DISK_POLL_DELAY = 1
  # Driver for USB Storage
  USB_DISK = 1
  # VGA text console
  VGA_CONSOLE = 1
  PC_KEYBOARD = 1
  # Enable the serial console
  SERIAL_CONSOLE = 1
  # Serial console; real external serial port
  SERIAL_IOBASE = 0x3f8
  SERIAL_SPEED = 115200
  # Filesystems
  FSYS_EXT2FS = 1
  FSYS_ISO9660 = 1
  # Support for boot disk image in bootable CD-ROM (El Torito)
  ELTORITO = 1
  # PCI support
  SUPPORT_PCI = 1
  # Enable this to scan PCI busses above bus 0
  # AMD64 based boards do need this.
  PCI_BRUTE_SCAN = 1
  # Loader for standard Linux kernel image, a.k.a. /vmlinuz
  LINUX_LOADER = 1
In order to get serial output from Grub, you will also need to add something like this to your menu.list:
  # serial port 0
  serial --unit=0 --speed=115200
  terminal --timeout=15 serial console
Now execute 'make', which will generate a filo.elf file that will be your payload. You will need to refer to this file to build LinuxBIOS as explained below, because it gets included in the LinuxBIOS ROM image.


===Current status of the LBv2 tree===
===Current status of the LBv2 tree===
Line 60: Line 116:
date
date
</pre>
</pre>
You will need to update the LBROOT variable to be correct for your system.


===This is Work-In-Progress!===
===This is Work-In-Progress!===

Revision as of 19:15, 19 March 2007

Before you begin

The Gigabyte M57SLI-S4 seems to exist in at least 2 versions: one with a PLCC socket for the BIOS chip (socketed BIOS), and one with the PLCC BIOS chip soldered onto the board (soldered BIOS). The former might be a pre-production board since nobody has so far (2007/03) confirmed the purchase of a M57SLI-S4 board with socketed BIOS.

The fact that the BIOS is soldered onto the board complicates matters considerably, because it means that one flash of a faulty BIOS will 'brick' your board.

It is possible to desolder the BIOS chip, and replace it with a PLCC socket. You will need some good tools (heat gun/pencil, good soldering iron, etc) and soldering experience to do that. There has also been some speculation about the paths that are visible on the board for a second PLCC chip, and whether it would be possible to put a PLCC socket on there and switch between the on-board BIOS and the socketed BIOS.

If you're going to work on this board, I suggest you put a socket on it, or ask a friend to do so. It's just too risky otherwise.

Once you put a socket on the board, you will also discover that the RD1-PMC4 BiosSavior does not work with this motherboard: the RD1's built-in chip seems to be incompatible with the mainboard. This means you will need to hot-swap BIOS chips until you have a working LinuxBIOS chip. Plugging your BIOS chip into the RD1 and switching it to 'ORG' does work though. I have used the BiosSavior to ease hot swapping; it's a lot easier to pull out the BiosSavior and replace the chip plugged into it than to replace the ROM chip on the board.

Finding a BiosSavior can be a little tricky - most resellers seem to be out of stock, and the rumor is that IOSS has stopped producing them. This is the list of resellers:

 http://www.ioss.com.tw/web/English/WheretoBuy.html

I was able to purchase a couple (2007/03) from Eksitdata in Sweden.

This wiki page is maintained by Ward Vandewege (ward at gnu dot org).

Payload

LinuxBIOS requires a Payload to boot an operating system.

If you want to boot from the network, you will need to use Etherboot.

If you want to boot from an IDE drive, SATA drive, USB stick or CDROM, you can use FILO.

Building the payload

In order to boot from a SATA disk, we use FILO.

Once you've downloaded FILO, you will need to put a file 'Config' in its root tree. An example can be found in the distribution, called 'defconfig'.

You can configure FILO to load Grub. Here's my Config, which does that:

 # Use grub instead of autoboot?
 USE_GRUB = 1
 # Grub menu.lst path
 MENULST_FILE = "hda1:/grub/menu.lst"
 # Driver for hard disk, CompactFlash, and CD-ROM on IDE bus
 IDE_DISK = 1
 # Add a short delay when polling status registers
 # (required on some broken SATA controllers)
 IDE_DISK_POLL_DELAY = 1
 # Driver for USB Storage
 USB_DISK = 1
 # VGA text console
 VGA_CONSOLE = 1
 PC_KEYBOARD = 1
 # Enable the serial console
 SERIAL_CONSOLE = 1
 # Serial console; real external serial port
 SERIAL_IOBASE = 0x3f8
 SERIAL_SPEED = 115200
 # Filesystems
 FSYS_EXT2FS = 1
 FSYS_ISO9660 = 1
 # Support for boot disk image in bootable CD-ROM (El Torito)
 ELTORITO = 1
 # PCI support
 SUPPORT_PCI = 1
 # Enable this to scan PCI busses above bus 0
 # AMD64 based boards do need this.
 PCI_BRUTE_SCAN = 1
 # Loader for standard Linux kernel image, a.k.a. /vmlinuz
 LINUX_LOADER = 1

In order to get serial output from Grub, you will also need to add something like this to your menu.list:

 # serial port 0
 serial --unit=0 --speed=115200
 terminal --timeout=15 serial console

Now execute 'make', which will generate a filo.elf file that will be your payload. You will need to refer to this file to build LinuxBIOS as explained below, because it gets included in the LinuxBIOS ROM image.

Current status of the LBv2 tree

As of 2007-03-19, the v2 tree does not yet have all the necessary patches to build a working LinuxBIOS for the M57SLI-S4. For now, we have to work from the patches that Yinghai Lu sent to the LinuxBIOS list on January 18. Download all three archives and extract them into a directory on your system:

 Patch 1
 Patch 2
 Patch 3

The code comes with a script called 'nsf', which, out of the box, is quite dangerous. NEVER run this script as root without any arguments - it will wipe out half of your system. I suggest you replace it with this version instead:

#!/bin/bash
MBVENDOR=$1
MBMODEL=$2
LBROOT=/home/yhlu/xx/xx/xx/
if [ "$MBVENDOR" = "" ] || [ "$MBMODEL" = "" ]; then
        cat ./readme_mcp55.txt
        echo
        echo "ERROR: Not enough command line arguments"
        exit 1
fi
echo $MBVENDOR/$MBMODEL
date

cd "$LBROOT/freebios2/targets"
rm -rf "$MBVENDOR/$MBMODEL/$MBMODEL"
./buildtarget "$MBVENDOR/$MBMODEL" &> "$LBROOT/x_b.txt"
cd "$MBVENDOR/$MBMODEL/$MBMODEL"
#make clean
eval make &> "$LBROOT/x_m.txt"
        if [ $? -eq 0 ]; then
                echo "ok."
        else
                echo "FAILED! Log excerpt:"
                tail -n 20 "$LBROOT/x_m.txt"
                exit
        fi
cat ./normal/linuxbios.rom ./fallback/linuxbios.rom ./failover/linuxbios.rom > "$LBROOT/rom/"$MBMODEL"_linuxbios.rom"
ls -l "$LBROOT/"$MBMODEL"_linuxbios.rom"
date

You will need to update the LBROOT variable to be correct for your system.

This is Work-In-Progress!