<div dir="ltr"><div class="gmail_default" style="font-family:'courier new',monospace"><span style="font-family:arial">On 16 January 2014 10:05, James Courtier-Dutton </span><span dir="ltr" style="font-family:arial"><<a href="mailto:james.dutton@gmail.com" target="_blank">james.dutton@gmail.com</a>></span><span style="font-family:arial"> wrote:</span><br>

</div><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">

<span style="color:rgb(34,34,34)">I think UEFI bios has made things worse in this area. UEFI is so large</span><br></div>
and difficult to decompile.<br>
I think the BIOS code would be much simpler if it was a small as<br>
possible, and the user would install into flash their boot image. I.e.<br>
vmlinuz and initrd.img<br>
</blockquote><div><br></div><div><div class="gmail_default" style="font-family:'courier new',monospace">​That's essentially what UEFI is -- it gets the system from an empty shell to a point where the hardware is in a state to be used, then it reads a series of instructions from the primary boot device as to what to do next. There's no point in "flashing" it to an EEPROM as you want to update it fairly regularly, so there's usually a reserved "EFIBOOT" area or similar with a simple set of instructions that tell the system what to do next.</div>

<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">This is essentially the same as a modern "BIOS", and GRUB stages 1/1.5/2 all wrapped into one, with some additional functionality built in too.</div>

<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">UEFI isn't bad by itself, but as you rightly say it has been very poorly implemented by a number of companies. </div>

<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">There's a very interesting talk by Matthew Garrett on this: <a href="http://www.youtube.com/watch?v=V2aq5M3Q76U">http://www.youtube.com/watch?v=V2aq5M3Q76U</a>​</div>

</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">The BIOS would then only need the code to switch on the CPU, have a<br>


hardware description table, and then load the next boot stage from<br>
flash.<br></blockquote><div><br></div><div><div class="gmail_default" style="font-family:'courier new',monospace">​That's exactly what a BIOS does today -- except it still has to expose all (ok, almost all) the stuff it had to do back in the 8086 era, interrupts and all: <a href="http://en.wikipedia.org/wiki/BIOS_interrupt_call">http://en.wikipedia.org/wiki/BIOS_interrupt_call</a>​</div>

<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">What I would like to see is more openness from hardware manufacturer.<br>


E.g. A motherboard manufacturer should publish a standards based<br>
computer readable description of their motherboard.  I.e. Which CPU,<br>
which interface chips, over-clocking registers etc.<br>
</blockquote><div><br></div><div><div class="gmail_default" style="font-family:'courier new',monospace">​It already exists. It's called a BIOS, along with the information that you can pull out using "dmidecode" that are stored in other registers.</div>

</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">The open source community could then write their own BIOS that used<br>


the manufacturers "description" to compile a BIOS that was certain to<br>
boot that motherboard.<br></blockquote><div><br></div><div class="gmail_default" style="font-family:'courier new',monospace">I know <a href="http://en.wikipedia.org/wiki/OpenBIOS">http://en.wikipedia.org/wiki/OpenBIOS</a> tried to do some work on this, I'm not sure how far they got.</div>

<div class="gmail_default" style="font-family:'courier new',monospace"><br></div><div class="gmail_default" style="font-family:'courier new',monospace">An interesting topic, nonetheless.</div><div class="gmail_default" style="font-family:'courier new',monospace">

<br></div><div class="gmail_default" style="font-family:'courier new',monospace">M​​</div></div></div></div>