Operating System

Hello,
Since Pseudonym73's operating system project is seemingly dead, I decided to start a little operating system project.
It's still very much a work in progress (and buggy), but any feedback/assistance would probably be appreciated.
Link: https://github.com/nakst/essence

Edited by nakst on
Suggestion - don't do MBR & BIOS boot. Write and use UEFI bootloader. Everybody have seen (or can find on internet) how to write MBR bootloader for custom OS hundred times. But showing how to boot your kernel with UEFI bootloader - that kind of information is not easy to find and would be more valuable.
Maybe in the future. The MBR/BIOS bootloader is working fine for now, as far as I can tell. I want to program more features in first before I start worrying about that. You could make the same argument about how I'm using the PIC rather than the APIC, but I just want to get it working for now.
Will you document the process with explanations (text or video) ? I would really like to know how OS are made.
I don't have any plans for writing/recording tutorials, sorry. If you're interested in OS development though you should probably check out the Osdev forums .
What type of "assistance" are you looking for? Just curious because I like OS stuff and I'll have a look at your project.

I agree with Martins that UEFI would be helpful to view, but I just fought my neighbor's UEFI system for almost a week so I get why you would choose MBR/BIOS instead lol.
It's not dead, but the more the merrier.

FYI, I used GRUB for the bootloader, because I've written a bootloader a long time ago and didn't want to bother again. Well, kind of. GRUB loads and runs the loader, which runs the kernel. This has advantages on x86-64, because it means your kernel can be pure 64-bit code.

Also, I was booting off a CD image.

Good luck!

Edited by Andrew Bromage on
@Todd
For right now, I'm not actually really looking for assistance, as the project is too much in its infancy, and trying to coordinate any other developers would be quite difficult, especially with the amount of bugs I still keep finding. I probably shouldn't have phrased it quite like it did; apologies for the confusion.

Edited by nakst on Reason: clarify who I'm talking to
@Pseudonym
Well, I'm glad to here you're still working on it!

Edited by nakst on Reason: clarify who I'm talking to
Just a comment RE: no documentation for how UEFI loaders would work.

Has anyone tried looking at Linux, sel4, or ReactOS?

I Understand it's a total PITA to pull apart a huge system, but it's probably going to be a heck of a lot faster than combing through various technical docs and posts on osdev. Also the micro-kernel project sel4 I mentioned might be lighter-weight as it's apparently completely tested, so all behaviour has been explained (quite the claim).

TBF I'm not sure how someone would improve upon existing projects, but I will admit the documentation of what has been done is either really well hidden, or non-existent (which is both a risk and a shame for the future)
CODESIGN2
Just a comment RE: no documentation for how UEFI loaders would work.

I'm not sure I understand what you mean by this. Searching "uefi documentation" on Google yields a ~3000 page PDF, and looking through its contents, it seems to have more than enough documentation to make a simple chain loader for a kernel.

CODESIGN2
Has anyone tried looking at Linux, sel4, or ReactOS?

I Understand it's a total PITA to pull apart a huge system, but it's probably going to be a heck of a lot faster than combing through various technical docs and posts on osdev.

From my experience so far, it's very difficult to learn anything from the codebases of large operating system projects. Posts on the osdev forums/wiki and decent technical documentation PDFs usually seem to me to be more informative than existing source code. There are usually careful design considerations in existing projects that are lost on the uniformed reader (and possibly bugs as well), so I would have to disagree with this approach.

(Apologies if any of this sounded rude; I'm typing this post on Android and its lagginess is annoying me.)

Update: I have written the kernel to the same functionality as before, but targeting x64 processors with SMP on ACPI systems.

In the screenshot an executable is loaded from a ext2 partition into a user-mode process that sends a test system call to the kernel.
Small teaser image!

Progress is good :)
It's cool even if it's never more than a hobby. You've learned something I'd guess < 1% of people know. maybe < .001% (there are lots of decimals to play with between 100's and billions), so you're essentially an expert just by making this. Well done!
nakst
(Apologies if any of this sounded rude; I'm typing this post on Android and its lagginess is annoying me.)


Totally NP, if you prefer a 3,000 page pdf to working tested code, that's your choice. I totally didn't read it with a tone, hopefully the same is true for this