The End of Realmode Boot

I've already mentioned two great new features in our current development release; ACPICA and USB hotplug.

But there's one change that's much more far reaching than that: Newboot.

Most Solaris x86 users will be familiar with the blue screen/device configuration assistant/boot sequence and how ancient some of that feels. Perhaps few are aware that the DCA is actually a realmode DOS like environment where each boot device requires its own realmode driver. These drivers needed to be compiled with a 16 bit compiler and 16 bit MASM, not available for ready money anywhere. While the official build environment required NT, I managed to build it on environments ranging from MS Windows 98 and 2000 on actual PCs to Caldera DOS 7 on a SunPCi card (which allowed for automatic building which was great fun). Now that this piece of shameful history lies in the past, I am not afraid to confess.

But as of last Sunday, April 17th, 2005, we have "legacy free" newboot. Newboot uses grub with ufs support so we now have native grub support and a menu we can edit from inside Solaris. Device enumeration completely done using ACPI

Because it skip the device configuration assistant and boot a single large file with all kernel device drivers which makes startup quite a bit quicker and allows us to boot from any bootable device as long as we also support it in the kernel so we can mount root.

And we've reverted back to white on black consoles; this again takes some getting used, surprisingly enough.

One thing to note is that before you may had to disable ACPI in the kernel and the BIOS; with Newboot + ACPICA, you actually stand a much better chance of the system working with all the default settings: ACPI on, ACPI 2.0 enabled. Even legacy USB enabled now has a much better chance of working than before.

But this is a radical change an PC BIOSes and hardware being like it is, interesting times ahead. SO please test drive when this hits Solaris Express in a few months time.

As of this writing, it's a bit in the balance whether you'll get to see the source first as part of OpenSolaris or the binaries as part of a Solaris Express.

just curious (as an OF implementor), how does that affect /devices generation and the other pseudo openboot things (prompt etc)?

Posted by Patrick Mauritz on April 27, 2005 at 03:08 AM MEST #

There is not longer a "interpreter" at boot time; instead you pass arguments to the kernel by either making new menu items in grub or by editing the existing once prior to boot. It's slightly more cumbersome to do "boot -v" or "boot -k" unless you create the appropriate menu items.

Devices are new enumerated through ACPICA but this really doesn't matter much for the /devices generation. If anything, writing device drivers is now easier; you no longer have to give real mode drivers any thought.

Posted by Casper Dik on April 27, 2005 at 04:52 AM MEST #

Casper-- one minor addendum to your comment about bootability-- we need both drivers for the device you want to boot from (let's say a USB memory stick, which we can usually drive without a problem) as well as BIOS support for booting from the device in question. Some BIOSes can boot from USB, some (like the one on my laptop) cannot, sadly.

Posted by Dan Price on April 27, 2005 at 05:20 AM MEST #

Hi Dan, that was probably my usual terseness in writing. I'm wondering how much of Solaris I can get on the a 512MB SD card. I should be able to boot from it on my ASUS PC and possibly even my Ferrari (both have a cardreader).

Even my old vaio can boot from a USB device, but it seems it only wants to boot from a Sony USB floppy.

Posted by Casper Dik on April 27, 2005 at 08:48 AM MEST #

One of the things of interest to me is how it will handle multiple boots with Solaris 10 already installed.. (Upgrade path). Currently I use DCA to boot off my other OS partions and everything seems to work fine. Solaris Express typically doesn't support upgrades and hence my worry on how it will impact systems where GRUB is not preinstalled.

Posted by Jignesh Shah on April 27, 2005 at 11:03 AM MEST #

Yes it is possible to multiboot several different OSes; you're not likely currently using the DCA but rather the bluescreen bootlader. The Grub install allows for that though I'm not sure how well we deal with upgrade (one manual step may be required)

Posted by Casper Dik on April 27, 2005 at 03:42 PM MEST #

[Trackback] Casper Dik blogged about the Solaris x86 new boot architecture . It's quite nifty, gone is the old boot environment of real mode drivers, replaced with the quite useful GRUB booting the Solaris kernel via multiboot, pulling in drivers and miniroots ...

Posted by Paul Jakma's Weblog on May 12, 2005 at 12:06 AM MEST #

Any idea when power management will make it into Solaris?

Posted by Azeem Jiva on May 23, 2005 at 01:36 PM MEST #

Wouldn't it be a good idea to implement OpenBoot on x86 boxes from Sun. I guess, Sun owns required rights on th F-code, and, anyway, there is OpenBIOS. That simplyfies the booting sequence, doesn't it?

Posted by Vladimir Ivanov on May 24, 2005 at 02:18 PM MEST #

No,that would not be much simpler because we need to support both our own and other people's boxes. So that means a dual-mode BIOS for our boxes so it can run Windows/Linux/etc and a dual mode kernel so Solaris can run on both types of platforms.

So that would basically be twice the amount of work for the kernel and twice the amount of work for the BIOS; the economics of that do not look good.

Posted by Casper Dik on June 01, 2005 at 04:01 AM MEST #

Grub, eeek, but OK. But would you please consider putting the color back to black on gray like on Suns? This is Solaris after all, and white on black just reeks of DOS/Windows/Linux... and it's not very nice to look at. Solaris is at least different in that respect, besides, gray is the easiest color on the eyes (much less eye strain).

Posted by UNIX admin on June 07, 2005 at 08:57 AM MEST #

Hi, being late to this thread, I am curious about how Sun integrates grub with Solaris.

Does Sun write a stage 1.5 loader for grub to understand Solaris ufs, and zfs in the future? Or /boot is needed to be on a partition in file systems currently supported by grub?

And is grub2 used in the new boot scheme or grub?


Posted by Ivan Wang on June 14, 2005 at 06:55 AM MEST #

The new boot loader contains a stage 1.5 UFS loader; I'm not sure about the plans for zfs at this time.

Grub is used, not grub 2.

Posted by Casper Dik on June 28, 2005 at 02:24 PM MEST #

re your comment on "dual boot kernel" - openbios (as well as the old boot method?) can provide OF in the bootloader stage, so it works like:

OF system: OF -> loading kernel, passing control
legacy system: PC BIOS -> loading boot loader -> OF -> loading kernel, passing control

it will be enough fun implementing OF (for sparc), EFI (for some x86 boxes) and PC BIOS support (for other x86 boxes) soon enough. (or did intel drop their EFI plans again?)

And _maybe_ sun (both as the initiator of OF and one of its biggest users, as well as a big client of AMD) could convince those people at AMD that OF is a more sensible standard than EFI (and pcbios). (>10 years track record, multivendor, crossplatform, open, less bloat -- 300 pages of specs instead of 3000)

we already got some favorable responses and interest there, but "who's openbios?"

Posted by Patrick Mauritz on June 29, 2005 at 04:26 AM MEST #

Post a Comment:
Comments are closed for this entry.



« July 2016