GSoC

From coreboot
Jump to navigation Jump to search

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to https://doc.coreboot.org/. Contributions welcome!

Google Summer of Code 2007

Booting Windows and other Operating Systems in LinuxBIOS

The goal of this sub project is to figure out how to boot Windows Vista/XP/2003. There are three approaches that might proof successful:

  • using a dedicated LinuxBIOS loader (ie. adapting ReactOS FREELDR)
  • booting Windows on top of Linux using kexec/kboot
  • fixing ADLO so that it boots Vista/XP and removing the mainboard dependencies in it's code.


Port Grub2 to work in LinuxBIOS

Grub2 is going to be _the_ bootloader of choice in the forseeable future. As such, it could replace both Grub legacy and FILO, the LinuxBIOS hack for grub compatibility. FILO lacks many features that come with grub2 with no extra effort.

This task splits into four sub-problems:

  • Add a target i386-linuxbios, next to i386-pc and i386-efi to the configuration process
  • Add an IDE driver that does direct access instead of intXX calls
  • Make the build process generate a single static ELF image, like it is done on Sparc
  • Add support for reading the memory size from the LinuxBIOS table.


SCSI booting in LinuxBIOS

Currently LinuxBIOS can not boot from an arbitrary SCSI controller. There are two solutions for the problem:

  • Use Linux and Kexec. This requires to keep the SCSI driver in the flash chip.
  • Use x86emu/vm86/ADLO and the int13 method. This would allow to use the PCI option rom available on all modern SCSI controllers.

So we obviously need a solution based on the later. This could as well be implemented as a Linux program, as an intermediate payload, or as a shared library.

The code you are going to write needs to catch the int13 interrupt vector that the SCSI option rom installs and make it available to arbitrary (firmware/payload) code trying to load something from disk. This

This is a LinuxBIOSv3 project.


CMOS Config / Device Tree Browser Payload

Unlike other BIOSes, Linux has no such thing as a "CMOS setup". This does not mean that you can not configure it. There is a nice and small Linux command line utility called lxbios for that purpose. But people are often asking for a builtin config tool. Such a config tool could feature VGA graphics (maybe even VESA?), it should be easy to use, allow to browse information from LinuxBIOS' central structure: the device tree, and provide lxbios functionality with some sex appeal.

This is a LinuxBIOSv3 project.


LinuxBIOS graphical port creator

In LinuxBIOSv2, every port to a new mainboard requires that you touch a lot of source files with only minimal changes. In version 3 we try to fix this issue and pack all mainboard specific information into a configuration file that we call the Device Tree Source (DTS). This Device Tree config file is a simple text file describing what static (non-detectable and/or soldered on) devices are used on the mainbard and how they are wired (SPD-ROM, Interrupt Routing, SuperIO, Northbridge, Southbridge, Hypertransport,..). It is mostly organized as a tree (with some special cases, Hypertransport allows cycles for instance)

The idea is to create a tool, based on the [www.eclipse.org/ Eclipse IDE], Swing, or your favourite portable toolkit, which allows you to drag and drop those components together and describe how they are wired.

This would be a great help for mainboard vendors that build mainboards of already supported components. No more reading of LinuxBIOS code would be required, but rather only the understanding of the hardware, and probably the mainboard schematics.

This is a LinuxBIOSv3 project.

Contact

If you are interested in becoming a GSoC student, please contact Stefan Reinauer or Ronald Minnich