CoreBoot (LinuxBIOS) Can Boot Windows 7 Beta
billybob2 writes "CoreBoot (formerly LinuxBIOS), the free and open source BIOS replacement, can now boot Windows 7 Beta. Videos and screenshots of this demonstration, which was performed on an ASUS M2V-MX SE motherboard equipped with a 2GHz AMD Sempron CPU, can be viewed on the CoreBoot website. AMD engineers have also been submitting code to allow CoreBoot to run on the company's latest chipsets, such as the RS690 and 780G."
Written in C, contains virtually no assembly code
What is the benefit of writing a BIOS in C over assembly code? Is it for transparency? Easier to catch bugs? Does compiling from C to machine assembly protect you from obvious errors in assembly? Is it for reusability of procedures, modules & packages?
Oftentimes I have wished I knew more assembly so I could rewrite often used or expensive procedures to fit the target machine and try to optimize it. I don't know assembly well, however, and therefore don't mess with this. Doesn't handwritten assembly have the potential to be much faster than assembly compiled from C? I thought often run pieces of the Linux kernel were being rewritten into common architecture assembly languages because of this?
I'm confused why mainboard companies don't write their BIOS in C if this is an obvious benefit--or is it that they do and all we ever get to see of it is the assembly that results from it?
Can anyone more knowledgeable in this department answer these questions?
My work here is dung.
I'd really like to see the buggy vendor bioses get the boot and be replaced by this. The BIOS on my motherboard has all sorts of quirks, like missing one stick of my ram during detection randomly, to really laggy page switches. Windows support is what CoreBoot needs to get accepted.
Obligatory blog plug: http://www.caseybanner.ca/
There may be SOME architecture specific code, even a lot of that can probably be written in C. 99% of the Linux kernel is C and that has to interact with hardware too.
As far as efficiency goes, in the old days it was true that a coder with an intimate knowledge of the architecture could usually hand code more efficient assembly. Modern C compilers however can do a LOT of optimization and generally the resulting code is faster than anything that could be coded by hand, or at least AS fast. Even if it is microscopically slower it is still a LOT easier to use C. Plus if hardware abstraction is done properly even a low level driver back end should be portable for the most part.
Manufacturer BIOS may be written in Assembly since they are A) targeting a specific board which is going to obviously only run that one family of chip and B) probably have a lot of legacy assembly code they would rather not bother to port to C. Neither of those would apply to Coreboot.
"Malo periculosam, libertatem quam quietam servitutem." -- Jefferson
What's more important to you? OSS graphics drivers or OSS BIOS? And by the way, if you need a decent graphics card, you're gonna need ATI or nVidia anyways, Intel doesn't make really high performance cards.
As long as there are slaughterhouses, there will be battlefields.
Also, ATI has open source 2D drivers and just yesterday released specs that should allow for good open source 3D drivers. Sometime in the next 6 months, their graphics cards should support OpenCL, too. ATI is the way to go for open hardware support at the moment.
Sign on a Google desk:
"The chair stops HERE"
Seven puppies were harmed during the making of this post.
My view is .. "it ain't done till Windows 7 doesn't run"
I think they should tweak it so that Windows 7 boots, but every 30 mins or so it crashes. Call it ... Karma!
Agent K: A *person* is smart. People are dumb, stupid, panicky animals, and you know it.
I wish we in the OSS world had "Open Source" printer chips and toner formula. These would enable anyone with the ambition, to build "free" printers instead of shelling dough to these greedy companies.
Excuse my ignorance but is it already possible to have a fully working computer that doesn't perform a single unknown operation?
Possible? Yes. Feasible for an enthusiast? Not in the first quarter of 2009. Intel and AMD CPUs contain secret microcode. There exist Free CPU cores such as the MIPS-compatible Plasma, but as far as I know, none are commercially fabricated in significant quantities.
Booting Linux (and other free operating systems) is relatively simple: They quite robust against quirks in the BIOS, as they're usually not part of the testsuite of the BIOS vendors.
It's also possible to boot Linux (and a smaller set of other free operating systems) without any PCBIOS interface (int 0x13 etc), as they don't rely on that.
Windows does. There has been, for a couple of years, a useful, but very fragile hack called ADLO, which was basically bochsbios ported onto coreboot, to provide the PCBIOS.
Recently, SeaBIOS (a port of bochsbios to C) appeared and was a more stable, more portable choice (across chipsets) in that regard.
So yes, we're proud that we can run the very latest Microsoft system, simply because it's less a given than booting Linux. ;-)
Even VirtualBox (commercially backed, and all) seems to require an update (very likely to its BIOS!) to support Windows 7. "We were first"
Looking at the CoreBoot site, it seems there best support is for the AMD Geode chips. It is ironic that this Slashdot article is one after the article saying AMD has no successor planned for the Geode line and it may fade away.
Learning HOW to think is more important than learning WHAT to think.
EFI is useful in the same way Open Firmware on PowerPC and Sparc is useful. It gives you an extensable system that can do different things with devices. This is great on a system where you don't know what the hardware may be (i.e. Workstations).. but starts to fall down when you get to servers, blades or embedded systems.
On most systems these days BIOS or any type takes between 3 and 30 seconds to boot to the OS. This is simply not acceptable to many blade and embedded system designs.. (Even some server designs this isn't acceptable.)
I can boot a system with coreboot in a second or less to the OS. This is really the most important part of coreboot. (For embedded systems, most of the time our target is in the .2 to .5 range from power on to OS start... this almost all but excludes ia32 from many embedded applications today.)
ATI's binary drivers actually work, too. They had problems in the past, but I've recently bought a new card from ATI to replace my Nvidia card and I can say easily that they both work very well with the binary drivers.
That's beside the point, though. We're talking about open drivers.
It deserves praise and support previously reserved for deities. I'm only overstating this a little.
The benefits of CoreBoot are many:
1. Cheaper motherboard manufacturing. TPM chips are expensive components when mass producing motherboards.
2. CoreBoot gives hardware manufacturers a viable market that Microsoft and Apple cannot touch.
3. Keeps the hardware open for all operating sytems and devices. This simple fact cannot be stressed enough. As the world slowly migrates to 64-bit everything. Microsoft has locked hobby driver developers out of Vista in 64-bit land.
TPM BIOS modules have the capacity to lock out unapproved operating systems, devices, etc. Are they widely implemented? No. Is it possible to the point of being well documented? Yes.
http://www.maxineudall.com/2010/02/should-economists-be-sued-for-malpractice.html
EFI allows lightning-fast boot.
First, you can put your kernel in EFI (if there's enough flash) and boot it directly from there.
Second, EFI itself is pretty much efficient - you have access to lots of RAM, CPU works in protected mode, etc.
It's quite possible to have 1 second until kernel startup with EFI. Almost like on my 166Mhz MIPS board :)
Specialized instructions (MMX, SSE, etc) can provide substantial speed boosts with certain code. Unfortunately no C compiler really takes full advantage of those features (if at all) despite them being widely available nowadays.
So in those cases it may be a whole lot faster to use assembly. Usually this is just embedded within a C function because of the specialized nature.
What is Linux BIOS?
We are working on making Linux our BIOS. In other words, we plan to replace the BIOS in NVRAM on our Rockhopper cluster with a Linux image, and instead of running the BIOS on startup we'll run Linux. We have a number of reasons for doing this, among them: ... [LinuxBIOS.org, Aug. 2000, at the bottom of the page]
You're wrong.
Put identity in the browser.
Actually, Coreboot is faster. The record from power on to Linux login is, according to their FAQ, 3 seconds. Writing it in C speeds up development compared to writing it in assembly and allows compilers to optimize it.
Spelling/grammar nazis welcome (English is not my first language and I am trying to improve my spelling/grammar)
... every program could then be further reduced to the single empty program, which would still contain at least one bug.
Which in turn means that all programs are the same, thus - assuming deterministic execution - all exhibit the same behaviour.
Or in other words: Linux is Windows.
Then I read there's even a "Flashrom Live CD". < 185MB. Instant and spontaneous ejaculation!
Then it came to me:
This page is a work in progress. There is no ISO yet. This is just a plan for now.
This is exactly like a fine woman looking at you. Saying she will give it to you. Eventually. Maybe. Cock teaser.
Still a beautiful woman I like having around.
Now please excuse me. I'll be off masturbating.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
As another poster pointed out, Coreboot (which is written in C now) already boots Linux in 3 seconds, which is far faster than normal BIOSes. So obviously, performance isn't a problem here.
Custom assembly language routines, written by an expert, may be helpful for certain things which are executed a lot. However, BIOS code is NOT executed a lot: it's executed just before booting the OS, and that's it. After the OS boots, BIOS code is never seen again. So if you're trying to eke out every bit of performance on your computer, writing custom assembly language code for your BIOS is probably the biggest possible waste of time. Instead, you should concentrate on things like OS interrupt routines, or certain software libraries which demand high performance (video codecs for example). Of course, even then it's debatable how well your asm routines will perform compared to well-written C code that's compiled by a good compiler with optimization.
Coreboot by itself is initialization firmware only. That means, it doesn't provide any callable interfaces to the operating system or its loader. So you cannot ask coreboot to load a block from disk. That's were BIOS, OpenFirmware and (U)EFI come into play to fill the gap. They don't define the firmware, but its interface.
I haven't read the article, but I'm quite sure that they're using SeaBIOS - running on top of coreboot - to boot Windows. In this setup, coreboot performs hardware initialization and SeaBIOS provides the required BIOS routines for Windows to boot.
So why not (U)EFI, you ask? Well, it just takes someone to place an EFI implementation on top of coreboot. I think GnuFI used to be able to run off coreboot, but I think the project is dead. TianoCore is probably a better option. Actually, I know that TianoCore is the better option and that it can be done, but certain legal obligations prevent me from porting TianoCore to coreboot at the moment.
I don't know either, but I would guess that Coreboot has a menu you could bring up when you power up which would allow you to choose your boot device order. However, many modern motherboards have many settings in BIOS for things you mention, like RAM timings, voltages, CPU multipliers, etc., and it seems like most of those would be board-specific.
AMD engineers have also been submitting code to allow CoreBoot to run on the company's latest chipsets, such as the RS690 and 780G."
Now that would freakin' rock!!!
Until now, CoreBoot has been really hampered by the fact that it has mostly been supported on server boards, with little to know support on Desktop and Laptop chipsets. This is mostly the fault of the chipset/mobo manufacturers, who have zealously guarded their legacy BIOS crap for reasons that are pretty unfathomable to me.
I would love to be able to run CoreBoot on my Desktop and laptops. It would help to fix soooo many of the legacy BIOS issues that people tear their hair out over: booting USB devices, suspend/resume support, wake-on-LAN support, network booting.
So, go AMD. I've been a loyal fanb^H^H^H^H, uh, customer for years and I'm really glad to see them moving in the direction of open-sourcing their video drivers and now releasing chipset docs. Excellent news.
My bicyles
3 seconds should be enough for anyone.
People using html in email should be shot.