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