I like parts of this idea, but it unnecessarily ties together too many
things.
EFI & BIOS address system boot-strapping. They have nothing to do with
what happens after an OS is up and running. Design issues like
micro-kernel vs. monolithic are NOT something that EFI should be dealing
with. A bootstrap system should not mandate any specific kernel design.
Flash memory is now big enough to contain an entire boot loader and
nearly everything it needs. Personally, I would like to see “boot
sectors” on hard drives go away. We should have a flash memory module
soldered to the motherboard, and it should contain the equivalent of
NTLDR, NTDETECT.COM, BOOT.INI, and even NTBOOTDD.SYS if necessary. It
should also contain a simple read-only implementation of whatever
filesystem the OS is stored on, be it FAT, NTFS, whatever.
This would solve all sorts of problems, like which drive/partition is
the system disk (it’s stored in BOOT.INI in flash memory), boot device
drivers, etc. The boot code could also allow you to try to boot
arbitrary partitions, or boot from removable media, etc. It’s also an
ideal place for diagnostics code, such as the “recovery console” (which
kicks ass!) in recent versions.
The Linux people are already doing this. They simply write an entire
compressed Linux kernel into existing 2M flash modules, including
default command-line arguments. Boot-times are astonishingly low.
There are lots of problems with this, of course – since you’ve blown
away the system BIOS, you don’t have any control over chipset-specific
features. But it’s still a good idea.
– arlie
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of
xxxxx@ieee.org
Sent: Wednesday, December 31, 2003 9:10 AM
To: Windows System Software Devs Interest List
Subject: RE: [ntdev] An interesting artibcle on EFI
With the current Flash memory sizes, you don’t need to boot from
an I/O device any longer. Just burn a microkernel into the Flash.
That microkernel could include a dispatcher, a basic messaging
system, and an embrio of a directory capability, and it would of
course include all the boot drivers, at least their lowest level: the
rest of the drivers can sit on upper layers in the driver stack.
A natural extension of this way of thinking is, the microkernel could
come pre-burned into the processor module from the processor
manufacturer. Anything that runs in Ring 0 would be required to be
in that module - updates would use the flash programmability and
could be done automatically without user intervention.
A further thought would be, well, let’s make an ANSI standard for a
flash-resident microkernel, so that any hardware manufacturer can
implement their own, no more massive involutions hogging ring 0
functionality. That would become a common engine spec for all
processor manufacturers, and it would move the rest of the OS to
where it belongs: outside ring 0 and into a collection of processes
interacting with each other through the microkernel message
passing subsystem.
I don’t know, it may be that I’m getting old, but I have the distinct
feeling that OS technology has frozen in the year 1970 or so. Just
about everything I see today in our contemporary OS’s I remember
having seeing it in Multics or in some vintage 1970’s mainframe.
It’s about time we move forward !
Alberto.
===============
On 30 Dec 2003 at 23:26, Jake Oshins wrote:
All of it is true up until the statement "… this would eliminate the
need for many hardware specific drivers in the OS." The EFI drivers
are merely there to bootstrap the OS. You can’t boot unless you can
read the disk, or the net, or the fabric, etc.
Please remember the experience of the people who invented I2O. They
were trying to make disk (and other) subsystems more independent,
offloading all the work onto dedicated processors. In the process,
they were moving most of the storage driver into firmware, making the
OS more portable, etc. Some of their ideas were very good, and the
average throughput of disk subsystems (if my memory serves) went up
when the companies involved incorportated some of the constraints of
I20 (like avoiding most interrupts, etc.) But in the end, no company
ended up investing in the firmware interfaces, simply because they
leveled the playing field. This wasn’t solely a Microsoft phenomenon.
All of the RAID vendors realized that they could squeeze more
performance out of their devices when the OS-native drivers talked
directly to the hardware, simply because they got to plug into the OS
in a way that was suited to them. When they used the I2O firmware,
they had yet another layer to conform to, restricting design
flexibility. In the end, all of these “I2O-ready” hardware designs
shipped without actual I2O compliance, since it didn’t serve their
market.
All of this applies even more strongly when you’re trying to use
system firmware, rather than firmware in a RAID subsystem, since you
have to use the main processor to run system firmware. This tends to
have to happen with interrupts either disabled or deferred, as no
firmware system is easily re-entrant. (Even if it is designed to be
re-entrant, the people developing it can rarely test it with all
imaginable OS behaviors.) The consequence of this would be running
the firmware-driven devices at what amounts to IRQL = HIGH_LEVEL,
which strongly restricts how the OS can use it. All of the people
interested in performance would reject it. And even for devices which
are low-bandwidth, the real-time world would reject it because the RT
scheduler wouldn’t be able to work.
–
Jake Oshins
Windows Base Kernel Team
This posting is provided “AS IS” with no warranties, and confers no
rights.
-----Original Message-----
From: Jamey Kirby [mailto:xxxxx@storagecraft.com]
Sent: Tuesday, December 30, 2003 11:09 PM
To: ‘Windows System Software Devs Interest List’
Cc: Jake Oshins
Subject: RE: [ntdev] An interesting artibcle on EFI
Thanks for the posting. Maybe my impression of EFI is something
different. I was under the impression that hardware developers would
write EFI drivers for the hardware; like video and SCIS. EFI then
provides an interface to these devices through a common mechanism. I
was also under the impression that this would eliminate the need for
many hardware specific drivers in the OS; making the OS more portable.
From what I have read, EFI drivers are a new form of a PE executable.
I will be very disappointed if my assessment of EFI and its future is
wrong. One project I was going to consider working on was a mechanism
to allow Windows SCSI miniport drivers to be ported to EFI drivers. I
though that an EFI iSCSI client driver would be useful thing to have
as well.
Regards,
Jamey Kirby, Windows DDK MVP
StorageCraft Inc.
xxxxx@storagecraft.com
http://www.storagecraft.com
-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Jake Oshins
Sent: Tuesday, December 30, 2003 10:24 PM To: Windows System Software
Devs Interest List Subject: Re:[ntdev] An interesting artibcle on EFI
Arlie and Mark are closer to the truth. EFI is mostly about boot
firmware. The EFI runtime services are largely equivalent to what you
would find in a typical server BIOS, except that they are far less
tied to traditional PC architecture.
I imagine that some of the people on this list have writen BIOS option
ROMs for PCI or (E)ISA adapters. If so, you’ve experienced the pain
that that involves, what with trying to cram your ROM into the
PC-legacy memory, discovering your adapter on secondary PCI root
busses, figuring out the machine’s memory map, etc. EFI rationalizes
those.
Now, with that said, BIOS companies, including Intel, are always
looking to expand what the BIOS does, simply because it’s way easier
for them to deliver services within a medium that they control
completely. This is the same market force that will continue to cause
my employer to try to deliver services that are purely a part of the
OS.
Full disclosure: No Microsoft lawyer has read this post. So it may
come to pass that these views are regarded as something other than the
company party line. It is true, however, that I’m involved in many of
the decisions that Microsoft makes with regard to BIOS, EFI, ACPI and
firmware in general. I wrote significant sections of the NT boot
loader, both for x86 and for the now-dead PowerPC port of NT, where I
actually made NT boot from Open Firmware, an EFI competitor. The guy
who currently does all of the boot code, including all the EFI stuff,
sits directly across the hall from me.
–
Jake Oshins
Windows Base Kernel Team
This posting is provided “AS IS” with no warranties, and confers no
rights.
“Jamey Kirby” wrote in message
> news:xxxxx@ntdev…
> > The connection has to do with drivers and hardware abstraction done
> > in
> the
> > BIOS and not in the OS. This makes the OS more portable and achieves
> some
> of
> > the functionality that is achieved with VMWare via its hardware
> > virtualization/abstraction layer. VMWare uses OS drivers on the HOST
> (which
> > are machine dependent) and it has is own proxy interfaces to
> communicate
> > with these drivers via their own VGA, SCSI, etc… driver.
> >
> > EFI is not going to provide CPU and machine virtualization (as-is),
> but
> goes
> > a long way to making the OS hardware independent. This will be a
> god-send
> > for backup and restore applications. There are tons of opportunities
> in
> the
> > world of EFI. As I said in my first posting from last week, EFI will
> help
> > virtualization products like VMWare.
> >
> > Jamey Kirby, Windows DDK MVP
> > StorageCraft Inc.
> > xxxxx@storagecraft.com
> > http://www.storagecraft.com
> >
> >
> >
> >
> >
> > -----Original Message-----
> > From: xxxxx@lists.osr.com
> > [mailto:xxxxx@lists.osr.com] On Behalf Of David J.
> > Craig Sent: Tuesday, December 30, 2003 3:07 PM To: Windows System
> > Software Devs Interest List Subject: Re:[ntdev] An interesting
> > artibcle on EFI
> >
> > I think things like encryption of the boot disk will be possible.
> > You can put anything in EFI from diagnostics to solitaire if you
> > want.
> You
> > probably need access to the Intel examples and maybe how Microsoft
> plans
> > to interface with EFI during boot to know what it can or will do for
> > [to] you. Blow the EFI and you may have a good brick until you can
> > restore it.
> >
> > “Mark Roddy” wrote in message
> news:xxxxx@ntdev…
> > > >
> > > > Well, EFI will provide the hardware abstraction layer that is
> > > > currently provided by products like VMWare.
> > > >
> > >
> > > I must be as dense as Arlie ![:slight_smile: :slight_smile:](/images/emoji/twitter/slight_smile.png?v=12)
> > >
> > > EFI is a bios replacement and does little if anything after
> > > booting
> to
> > a
> > > real OS. VmWare is a minimal but real OS that provides sets of
> > ‘virtual
> > > machines’ that in turn run various flavors of operating systems.
> > Microsoft
> > > is busy rolling out their Virtual PC competition for VmWare. Are
> > > you
> > sure
> > > there is much of any connection between EFI and virtual machine
> > technology?
> > >
> > >
> > >
> > >
> >
> >
> >
> > —
> > Questions? First check the Kernel Driver FAQ at
> > http://www.osronline.com/article.cfm?id=256
> >
> > You are currently subscribed to ntdev as: xxxxx@storagecraft.com To
> > unsubscribe send a blank email to xxxxx@lists.osr.com
> >
> >
>
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@storagecraft.com To
> unsubscribe send a blank email to xxxxx@lists.osr.com
>
>
> —
> Questions? First check the Kernel Driver FAQ at
> http://www.osronline.com/article.cfm?id=256
>
> You are currently subscribed to ntdev as: xxxxx@ieee.org To
> unsubscribe send a blank email to xxxxx@lists.osr.com
—
Questions? First check the Kernel Driver FAQ at
http://www.osronline.com/article.cfm?id=256
You are currently subscribed to ntdev as: xxxxx@sublinear.org To
unsubscribe send a blank email to xxxxx@lists.osr.com