OpenSolaris

You are not signed in. Sign in or register.

FLAG DAY: x86 users and developers

Date: Fri, 19 Jan 2007 11:29:20 -0500
From: Mark Johnson <Mark.Johnson at Sun dot COM>
To: onnv-gate at onnv dot eng dot sun dot com, on-all at eng dot sun dot com
Subject: FLAG DAY: x86 users and developers


GRUB Direct Boot

The putback for PSARC 2006/568 updates the GRUB based boot architecture for
x86 systems. If you run the latest x86 bits, maintain an x86 build server
or build ON on x86, please read the entire message.

* Information for SPARC Users *

This putback changes the kmdb / kernel interfaces.  Install kernels should
still boot, but not with kmdb, unless you build and include kmdb in your
Install tarball. Bfu does the right thing.

* Summary of x86 Changes *

Previously, GRUB loaded a binary named multiboot which would then
load unix. Direct boot eliminates the need for multiboot so GRUB now
directly loads unix. This means that existing /boot/grub/menu.lst
file must be changed to remove multiboot.

This putback also contains many changes in preparation for the
impending putback of an x86 hypervisor platform. The most obvious changes
are to clarify the distinction between platform (i86pc) and architecture
(intel) on x86.

* Building x86 workspaces *

Prior to doing a bringover of these changes, perform a 'make clobber'
in your workspace.  Incremental nightly builds do not work - execute a full
nightly build the first time after incorporating  these changes.

Building on x86 requires new versions of the onbld build tools.
Use 'nightly -t' to first build the tools; /ws/onnv-tools/onbld/ will
be updated shortly.  The new tools continue to build older workspaces.

* cap-Eye Install and BFU *

x86 Install kernels will not work across this flag day. Use bfu.

bfu will attempt to automatically update menu.lst, via a new option to
bootadm: '-m upgrade'. Should the resulting menu.lst modifications fail
to boot time, you should be directed to
http://www.sun.com/msg/SUNOS-8000-AK which contains information on how to
manually update the menu.lst file.

By default, 'bootadm -m upgrade' will warn about menu.lst entries not
created by bootadm(1M) or lu(1M). It does not update such entries.
If you have manually edited menu.lst, expect these warnings and fix
them before rebooting.  Refer to the * MORE menu.lst DETAILS * section
below for additional information.

One last thing: once you've bfu'd forward to dboot, bfu'ing backwards to
pre-dboot archives is not recommended nor guaranteed to work. Reinstall
and bfu pre-dboot archives if you need to do this.

* x86 build servers *

To build the kernel, both a recent version of ld(1) (at least snv_48) and
a new SUNWonbld package are required. The new SUNWonbld package will be
available after the next nightly build. Update your build server accordingly.

* Location of new x86 drivers *

As part of this putback, a large percentage of drivers have been moved from
uts/i86pc to uts/intel so that the same binary can be used on both i86pc and
the upcoming x86-based hypervisor platform.

As a general rule, all drivers should target uts/common or uts/intel going
forward.  Exceptions should only be made if the driver depends on platform
specific code which would not allow it to run on other x86-based platforms.

Currently only a few things will force a driver to be platform specific on
x86.  These includes mapping PFNs for DMA using non DDI-compliant routines
(some graphics drivers), certain core FMA logic which requires access to the
underlying CPU/Northbridge H/W, PCI/PCI-E nexus drivers, and paravirtualized
device drivers.

* Contact Information *

Should you have any questions, send email to matrix-eng at sun dot com.
Bugs should be filed the following category: solaris/kernel/boot-x86

-- The dboot team



*************** MORE menu.lst DETAILS *********************

The old default menu.lst entry was

title multiboot Solaris
     kernel /platform/i86pc/multiboot
     module /platform/i86pc/boot_archive

The new entry is:

title directboot Solaris
     kernel$ /platform/i86pc/kernel/$ISADIR/unix
     module$ /platform/i86pc/$ISADIR/boot_archive

For Install kernel tarballs, use an entry that has your glomname:

     kernel$ /platform/i86pc/<kernel-glomname>/$ISADIR/unix

The kernel$/module$/$ISADIR syntax is a new extension to GRUB. It
automatically expands $ISADIR to "amd64" on machines that support
64-bit kernels.


* Boot Archive Changes *

The boot archive in /platform/i86pc/boot_archive has been split
into different files, one composed of 32-bit modules and the other 64-bit
modules.  These boot_archives are no longer gzip-compressed as
a whole. Instead, the files within the archive are individually compressed.
This reduces boot time memory overhead and makes boot time faster.
If you have any scripts that manipulate /platform/i86pc/boot_archive,
they will need to be updated.


* eeprom, bootenv.rc and menu.lst *

The eeprom(1) settings on x86 are implemented via the file
/boot/solaris/bootenv.rc.  multiboot would read this file to determine
the settings for 'boot-file', 'boot-args' and 'console' properties.
With dboot, those settings must be specified on the /boot/grub/menu.lst
'kernel' line using the -B property=value[,property=value].

title directboot Solaris
     kernel$ /platform/i86pc/kernel/$ISADIR/unix -B console=ttya
     module$ /platform/i86pc/$ISADIR/boot_archive


We expect two usage models:

1 - The system boots from a default generated menu.lst entry.

In this case, the eeprom(1) command will manage, via bootadm(1), the
settings in menu.lst when invoked for boot-file, boot-args and console.

2 - The system administrator uses a custom, non-standard boot entry in
menu.lst.

When the default entry in menu.lst is a non-system supplied entry and
eeprom(1) is invoked to change one of the above settings, eeprom will
print a warning message and exit.