dan_g wrote:While looking for something entirely else for my motherboard at work, I stumbled onto a Coreboot BIOS image for exactly that motherboard. What are the chances for that?
Ready-made coreboot images are rare because everyone wants different features. Where did you find that image and what's the exact name of your board? Not every board is supported perfectly.
dan_g wrote:The native Asus flasher didn't want to flash it and neither did Uniflash, but there's some Linux utility as well.
Usually you can flash almost every BIOS/firmware image (yes, coreboot as well) with the Linux/BSD/OSX utility flashrom. Make sure you get the latest version (0.9.1) because it has builtin paranoid checks and will warn you if anything goes wrong (and thus you can recover easily).
cp wrote:back to the BIOS from HDD thing: the job of a BIOS is the initial setup of hardware like writing registers, testing stuff and detecting various add-ons. the problem with external (=on any other medium than the bios chip) is that the external medium has to be attached to the mainboard permanently and the hardware has to be initialized so that it can read the external medium.
Agreed. And even if the external hardware was initialized automatically (which it isnt) and if all buses between CPU and that external hardware were initialized automatically (no way), the CPU still wouldn't be able to fetch its first instructions from said external hardware (how should it know where to look?). Even if somebody solved all the problems above (thousands line of C firmware code would have to be transformed into silicon, waaaaaay expensive), it still would not work because RAM is disabled during early initialization, so it is not possible to load anything from HDD/floppy/USB/serial/whatever because there's no RAM to store it in.
The first instructions executed on every x86/x86_64 CPU are in a very restricted 16-bit environment (no RAM, no cache, only the registers and instructions you know from the 8086) and you only have 16 bytes room for instructions at the inital execution location. That's why the first instruction usually is a jump out of that space (did I mention that most useful jump instructions are defined to crash the CPU at that point?). If you touch certain registers, the CPU will crash. If you use the wrong jump instructions, the CPU will crash. Since you have no RAM (and no cache), you can't use the stack either. 32-bit (or 64-bit) instructions are no-go. Interrupts are no-go. DMA needs memory -> no-go.
Now let me explain what some vendors mean by "BIOS on disk". Basically, they have a full BIOS in flash/ROM and because they wanted to save a few cents on the flash chip, those parts of the BIOS which are executed late after HDD init (BIOS menu etc.) can be loaded from disk. Which also means stuff like netbooting will fail if you remove the HDD (stupid). EFI has this designed in as "feature".