Re: Uniform Boot Interface
Posted: Fri Apr 08, 2011 11:59 pm
I am attaching a image of the bootloader running. Jack Scott was asking how far along it is and they say a picture is worth a thousand words.
The Place to Start for Operating System Developers
https://f.osdev.org/
The arguement for including paging is that it allows you to specify the virtual address of the kernel(allowing for a higher half kerne;, without any of the hacks mentioned in the wiki having to be implemented in the kernel).Love4Boobies wrote:I didn't read the whole post so sorry if some of this stuff was alreadz discussed but I did take a quick peek at your link and noticed some problems:
How exactly is this better than the Multiboot specification?
- Not really a problem, but I see no reason for which the protected mode bit needs to be set in order to go to long mode. It doesn't even map well with the way many people go to long mode, i.e., without going through protected mode first (as documented by AMD here and show in practice on our wiki here and here).
- Bit 4 can be set without bit 6. You can't have long mode without enabling paging. Furthermore, I don't understand what you mean by bit 6 being undefined when bit 6 is not set... (You probably mean that bits 7, 8, and 9 are to be ignored.)
- It is debatable whether paging support makes any sense in a boot loader at all; not sure whether it will help the kernel or just get in its way. One solution is to leave the kernel to set it if in protected mode and use identity mapping in long mode since that's pretty much the bare minimum.
- Even if you did wish to implement paging in the boot loader, there's nothing on page tables... That's pretty funny, actually.
- Would be nice to actually provide some abstractions. The boot loader isn't really useful if it just passes the tables on to the kernel. E.g., MP tables vs. whatever you can dig from the ACPI tables vs. CPUID, ACPI vs. APM, etc.
- Support for internationalization would be nice.
Thats what i meant I have been moving bit definitions around and havnt updated some of it yet to reflect the new location.Bit 4 can be set without bit 6. You can't have long mode without enabling paging. Furthermore, I don't understand what you mean by bit 6 being undefined when bit 6 is not set... (You probably mean that bits 7, 8, and 9 are to be ignored.)
Im not quite sure what you mean theres nothing on page tables?Even if you did wish to implement paging in the boot loader, there's nothing on page tables... That's pretty funny, actually.
Again not sure what you mean here. If your saying the bootloader needs to do more the collect and pass information then i agree thats why it sets up paging, sets processor modes. enables other cores and proccessors in a SMP system. etcWould be nice to actually provide some abstractions. The boot loader isn't really useful if it just passes the tables on to the kernel. E.g., MP tables vs. whatever you can dig from the ACPI tables vs. CPUID, ACPI vs. APM, etc.
No on both at this point. If someone who uses either could send me a private message or explain on here the pseudo-code they use I would like to implement. but as for right now. Its a no on both.Will it work with EFI? Netboot?
It looks promising, but this right here stops me from ever considering it. Thanks for the effort, though.havok wrote:Right sorry forgot license. Im going to license it under the GPL license.
Just to be clear.. Is it the fact that I forgot licensing or that I'm considering using GPL for the license? And if it is the license then what license would you sugest and why?Lithorien wrote:It looks promising, but this right here stops me from ever considering it. Thanks for the effort, though.havok wrote:Right sorry forgot license. Im going to license it under the GPL license.
Yeah, but it's on the same disk.. it might touch it.. icky.NickJohnson wrote:Of course, a bootloader isn't linked with anything, so it can't cause problems by being "virally" licensed.
The "nothing more" was meant to emphasize there was no other definition of the word, not to identify all that could pass through them.havok wrote:Also Brynet-Inc I like your signiture except for one thing. Windows also allow things to fall through and disapear such as money, cpu cycles, hard drive space, etc
I've used network boot (PXE), and it is relatively easy if you're used to the normal boot process on PC BIOS. In general, the network card's ROM downloads your boot loader from a (properly configured) server and jumps to it; and provides an API that can be used to download more files from the server (and/or use the inbuilt networking stack to do other things if you want). There's a good introduction in the wiki's "Diskless booting" page to get you started; and if you need to know something that isn't clear in the specification you can ask on the forums (where other people can also help, so you're not just stuck with my advice) or PM me directly.havok wrote:No on both at this point. If someone who uses either could send me a private message or explain on here the pseudo-code they use I would like to implement. but as for right now. Its a no on both.Will it work with EFI? Netboot?
Quick history: EFI was invented by Intel in the "mid 1990's", partly for Itanium but also as something that could be used on 80x86 to remove limitations with "PC BIOS". Intel create the "Unified EFI Forum" to continue development of UEFI/EFI in 2005; and the UEFI people have maintained and extended Intel's original specification and Intel's (open source) code since. For 80x86, mainstream OSs (except OS X) were a little slow to adopt EFI; but the last mainstream OS (Windows) started supporting EFI in 2008, and now all mainstream 80x86 OSs support EFI.havok wrote:I must admit I had to do a quick google search for EFI when you mentioned it. At this point I don't know alot about EFI is there a solid use for it in osdev? is it hard to configure? what are the benifits of using it vs standard bios? and how common is it on hardware?