OpenSolaris

Printable Version Enter a New Search
Bug ID 6475349
Synopsis Boot Support for EFI and LinuxBIOS
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:boot
Keywords
Responsible Engineer Shudong Zhou
Reported Against
Duplicate Of
Introduced In
Commit to Fix snv_51
Fixed In snv_51
Release Fixed solaris_nevada(snv_51)
Related Bugs 6489977
Submit Date 26-September-2006
Last Update Date 25-October-2006
Description
This RFE is filed to explore Solaris x86 on alternative firmware implementations.
This is the initial step is to modify the kernel such that it can boot from
EFI and LinuxBIOS. Here are excerpts from PSARC 2006/340:


3.2 LinuxBIOS Loader

The LinuxBIOS firmware has two parts: hardware specific part and
hardware independent part. The two parts are combined and burned
into the ROM chip. This project modifies the hardware independent
part to support the Multiboot specification.

In our experimentation, we modified filo-0.4.2 (File Loader) to
support Solaris VTOC, Solaris ufs, gzipped modules, and the
ability to load multiboot kernel. Much of this work is similar
to Solaris enhancement to GRUB. This work will be contributed
back to the LinuxBIOS project.

The procedure to run Solaris on LinuxBIOS is as follows:
  - Install Solaris with default BIOS shipped with system.
  - Compile LinuxBIOS with modified filo and flash the BIOS ROM
    chip, following instructions on the LinuxBIOS website.
  - Reboot system. The command syntax at the filo boot prompt is:

Boot: hdc2,a:/platform/i86pc/multiboot -L -B module=/platform/i86pc/boot_archive
This has been tested successfully on VIA M10000 motherboard.
Bfu works on the setup.

3.3 EFI Loader

The open source ELILO bootloader is enhanced to support "Multiboot"
kernel. The work is based on elilo-3.6, which supports loading plain
elf binaries. We added a multiboot loading by detecting multiboot
header and building multiboot info from EFI information. This work
will be contributed back to the ELILO project.

The EFI experiment was performed on an Intel iMac, an ia32 system
with EFI firmware. We downloaded Intel's EFI toolkit and installed
it on iMac. We also put Solaris multiboot and ramdisk image on
the Mac HFS filesystem. After starting the EFI shell in the toolkit,
we use the following elilo command to load Solaris.

shell> elilo -i solaris.miniroot multiboot -E -B console=usb-serial

Since Solaris has no driver for the graphics card on the iMac,
a USB serial line must be used to see the Solaris console.
We have not performed full installation since the existing
install infrastructure does not work with EFI.

4. Future Work

For LinuxBIOS, there are two main tasks.

  - Modify Etherboot to support multiboot, so it is possible to
    boot Solaris from network.
  - Port the flashrom command (part of LinuxBIOS) from Linux to
    Solaris so it is possible flash BIOS ROM from Solaris.

To support LinuxBIOS on specific Sun platforms, modification to
the hardware specific portion of LinuxBIOS may be necessary. This
work is best carried out by platform groups because special
equipment are often needed to recover from firmware bugs.

For EFI, the scope of work is somewhat bigger.

  - Add support to get and set EFI variables. This involves kernel
    code to setup EFI runtime services (from EFI systab) and the
    userland equivalent of eeprom(1M).
  - Modify install/upgrade infrastructure to work with EFI firmware.

To support EFI firmware in a product, we also need to understand
Solaris filesystems in the firmware. The specifics of EFI firmware
enhancement are subject to future investigation.
Work Around
N/A
Comments
N/A