2014-10-15 04:00:11

Hi all,
I'm just curious: How should I build an operating system that is just the bare, minimal kernel using UEFI? This OS will only support UEFI. (It will only support UEFI because BIOS is just obsolete by now, right?) So, does anyone know how to do this?
Note: I do not want to use assembly language. Just Pure C++. I'm using the EDK 1.6, which is the latest available version currently.

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2014-10-15 04:30:51

A minimal operating system?

Most EFI programs simply load the boot code or kernel of some other, existing OS. Sometimes they provide useful utilities, like shells. Although EFI is certainly capable of being used as a basic platform in its own right, I wonder what you think you might like to do there.

Just myself, as usual.

2014-10-15 14:51:08

Well, I just want to start out with a simple program, and build up from there. What program would you recommend I try and build, excluding the "hello world" program?

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2014-10-15 16:42:08

Well.

You can port Emacs. big_smile

No, seriously … what about the fact that you won't have speech or braille feedback in the environment? Emulation is great but how is your program going to be useful once you run it from a real EFI ROM?

I wonder if BRLTTY in EFI would be a stretch too far? smile

Just myself, as usual.

2014-10-15 20:35:04

It may work, actually, as long as we can figure out how to use all the code that BRLTTY uses without compromising BRLTTY's original function. We'd need to figure out how to adapt a screen reader as well, as BRLTTY cannot work alone; it must work in conjunction with something else.

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2014-10-16 18:03:35

Well, you could try to make a basic product activation app if you're planning to make your OS comercial.

Power is not the responsibility of freedom, but it is actually the responsibility of being responsible, it's self, because someone who is irresponsible is enslaved by their own weaknesses.

2014-10-16 19:46:39

Actually, that's been my toughest project yet. Building an activation system for Snow Race and Death Match: Project Alpha is a living hell, especially when it looks, syntactically, correct but you can't figure what's wrong. For instance, I wrote an activation system that compares the encrypted key to the one entered in the license key edit box and it still didn't work. Sorry to go off topic (LOL), but do any of you guys know a good method of doing this? If its in C++, don't wory, I'll find a matching alternative, or convert the C++ one into PureBASIC myself. Its not that hard, you know...

"On two occasions I have been asked [by members of Parliament!]: 'Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out ?' I am not able rightly to apprehend the kind of confusion of ideas that could provoke such a question."    — Charles Babbage.
My Github

2014-10-16 20:01:39

Comparing x to y when y is in the executable will cause instant failure because I can pull it out and post it for everyone.  The only good way to do a licensing system is to do something involving the internet or, perhaps, generating unique numbers from a user name and an e-mail.  At worst, you need to be able to tell who the license key belonged to if someone posts it.  Being able to invalidate it is also not a bad idea.  I am aware of no open source system, but surely something exists; licensing is the kind of thing you don't open up because doing so makes it trivial to break it forever.  Also you can sell a good one for a lot of money.
As for an OS: doubt you're going to avoid assembly.  You can use brltty or something similar directly, assuming it compiles.  But you'll need a C standard library for that, and probably whatever infrastructure brltty needs to talk to the displays.  Your screen reader and your OS can be the same, especially since you're blind.  The project will be epically huge.  The best method is to learn to the point where you can get the information you need by reading the official spec and then to read the official spec.  If the official spec is confusing, you're not ready-not unless you find some books on the subject or something along those lines.  At that point, begin coding and we'll see you in a couple years or so.

My Blog
Twitter: @ajhicks1992