Re: GRUB legacy (GRUB4DOS) - VBE info missing
Posted: Thu Nov 06, 2014 8:14 pm
Hi,
Please note that for an OS to work properly, many separate/unrelated things all have to work properly at the same time - if video works but multi-CPU fails then the OS doesn't work; if video and multi-CPU work but USB fails then the OS doesn't work; etc. If you're willing to accept "works 95% of the time in theory" for each of those separate/unrelated things, then you will end up with "works 90% of the time in practice" (due to bugs, etc) instead. When an OS relies on 2 separate/unrelated things that work 90% of the time in practice, then the chance of both things working is only 81%; and when the OS relies on 10 things that work 90% of the time the chance of all 10 things working is only 35%. For "acceptable" you want the OS as a whole to work 90% of the time or better (see note), which means that when there's 10 separate/unrelated things each of those things must work 99% of the time in practice; which means you can't afford to risk anything less than "works 100% of the time in theory".
Note: There's been many surveys done on customer experience and they all end up with different statistics. However, in general, the rule of thumb is that happy customers will only tell a few people that something was good, and unhappy customers will tell about 10 times as many people that something is bad. This means that if your OS only works on 90% of your computers then 50% of people will hear its bad and 50% will hear it's good.
Note: Intel released the x2APIC spec (the key piece needed to support more than 255 CPUs) in 2006; and when designing your OS's video API it's easy to make sure its suitable for 3D VR headsets (without knowing exact details of any hardware interface because that only effects the device driver and not the rest of the OS).
Do you honestly think it makes any sense to say that something is inevitable but can't be foreseen? The only question is "when" (and the only answer is "starting several years ago").
A device driver is something that fills the gap between the interface provided by hardware and the abstraction/interface the OS wants. Different OSs typically have different abstractions/interfaces; so the words "OS neutral device drivers" are self-contradictory.
Cheers,
Brendan
I only dismissed Linux. OS X never made this mistake, and while Windows did make the mistake they've fixed it since.mallard wrote:If you want to dismiss all mainstream OSs as "retarded" then that's fine. I believe that all software is "bad" in some way or another, just to varying degrees.
Sure, "probably valid", and "by chance", and "lets do something that's almost certainly undefined behaviour and hope we're lucky and it crashes quickly". None of this is close to "acceptable reliability" - it's a dodgy hack that will backfire.mallard wrote:Read the real-mode IVT. If entry 10h is a valid entry and pointing to a readable memory address, it's probably valid. If, by chance, it's pointing to readable memory that doesn't contain a video BIOS then when when you try to run it with an x86 emulator or V86 mode process, it will fault in some way, almost certainly pretty quickly. If that happens, you can note it in a configuration file somewhere and don't attempt it in future. VBE availability detected.Brendan wrote: You won't even be able to determine (reliably) what sort of firmware exists; and won't know if VBE is available or not.
Please note that for an OS to work properly, many separate/unrelated things all have to work properly at the same time - if video works but multi-CPU fails then the OS doesn't work; if video and multi-CPU work but USB fails then the OS doesn't work; etc. If you're willing to accept "works 95% of the time in theory" for each of those separate/unrelated things, then you will end up with "works 90% of the time in practice" (due to bugs, etc) instead. When an OS relies on 2 separate/unrelated things that work 90% of the time in practice, then the chance of both things working is only 81%; and when the OS relies on 10 things that work 90% of the time the chance of all 10 things working is only 35%. For "acceptable" you want the OS as a whole to work 90% of the time or better (see note), which means that when there's 10 separate/unrelated things each of those things must work 99% of the time in practice; which means you can't afford to risk anything less than "works 100% of the time in theory".
Note: There's been many surveys done on customer experience and they all end up with different statistics. However, in general, the rule of thumb is that happy customers will only tell a few people that something was good, and unhappy customers will tell about 10 times as many people that something is bad. This means that if your OS only works on 90% of your computers then 50% of people will hear its bad and 50% will hear it's good.
Yes, multi-boot is designed to support setting up a video mode during boot (like it should).mallard wrote:The multiboot structure tells you all you need to know if you're planning to use a bootloader-configured framebuffer. You don't need to know if you've got VBE or GOP.
These things are all easy to support. If you were designing an OS in 1990 then failing to take these things into account would've been fine (as they all would've been extremely difficult to foresee back then); but if you're designing an OS now you'd be a fool to ignore them.mallard wrote:So you've built an OS that supports all these things then? Or surely, you know someone who has? Some of those ideas will have no difficulty being supported by current OSs (e.g. "insanely high" screen resolutions; mainstream OSs have DPI scaling already). For others, we don't even know what the OS/hardware interfaces will look like (e.g. >256-way SMP), so it's impossible to support them. You can design with the possibility in mind, but that's about it.Brendan wrote:Wrong. You can make educated guesses and prepare for foreseeable future hardware differences; including "class 3 UEFI", including systems where PCI bridges aren't configured to route "legacy VGA accesses" to any of the video cards, including systems with insanely high resolutions ("10240 * 5760"? Sure, why not), including things like (e.g) 3D VR headsets, including 1024-bit AVX, including systems with more than 256 CPUs, etc.
Note: Intel released the x2APIC spec (the key piece needed to support more than 255 CPUs) in 2006; and when designing your OS's video API it's easy to make sure its suitable for 3D VR headsets (without knowing exact details of any hardware interface because that only effects the device driver and not the rest of the OS).
You've already admitted that it's gone away on Apple hardware; and now you're trying to tell me it won't go away?mallard wrote:VBE and BIOS support isn't going away for the "foreseeable" future. It inevitably will, of course, and I'll design with that possibility in mind, but while the support is there, I may as well use it.
Do you honestly think it makes any sense to say that something is inevitable but can't be foreseen? The only question is "when" (and the only answer is "starting several years ago").
The difference is "worked well for 20+ years" vs. "constantly fixing design mistakes that could've easily have been avoided when they were made". Note that using a little foresight reduces the amount of work (slightly more work in the beginning, but a lot less in total).mallard wrote:In the long-term, there is no difference. What "works" currently will eventually not work, no matter how good you are future-proofing. Better to design for what you have and what you can see on the horizon than spend enormous time and effort designing something "future proof" that inevitably ends up being proved not so.Brendan wrote:The sad part is that all of these people (and you) are too stupid to understand the difference between "works" and "only works for me for now".
Some "without a native driver" scenarios are different (e.g. only needing to change video modes for a 3D accelerated game that ceases to matter when there's no 3D acceleration), and for the remainder VBE doesn't work for most of them anyway (no support for rotated video modes, likely poor support for the monitor's native resolution, no support for multi-monitor, no support for detecting monitor insertion/removal, etc).mallard wrote:We covered that ages ago. The "without a native driver" scenarios are exactly the same as the "with a native driver" scenarios, except that the user is using hardware that you haven't been able to build a native driver for. (Personally, I'm hoping that some initiative like CDI will result in a decent range of ready-made OS-neutral device drivers being available to hobbyists).Brendan wrote:you've completely failed to explain why an OS would be so poorly designed that it needs to switch video modes after boot without a native driver.
A device driver is something that fills the gap between the interface provided by hardware and the abstraction/interface the OS wants. Different OSs typically have different abstractions/interfaces; so the words "OS neutral device drivers" are self-contradictory.
Cheers,
Brendan