-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can I expand upon the foundation I've built through this blog? #1341
Comments
The OS Dev wiki is a great place to look! And you can totally expand on this. |
Implementing a frame bufferJust use edition 3, the bootloader crates give you a frame buffer. ez Building a terminalWhen you have a frame buffer and keyboard input, making a terminal is simply a matter of putting it together. If you want to execute arbitrary programs through the terminal then that would require loading elfs, and you would probably want to have the terminal run in user mode. Porting DoomIdk how to do this, idk what doom is even like. I am guessing that in addition to having frame buffer + keyboard input + mouse input, you would have to build doom with functions specifically for your OS and then run the elf. |
Not quite. Some parts of the paging needs ti be rewritten. |
@ChocolateLoverRaj to port doom, you set up a |
@tsatke it is easier just creating a linux/posix compatible elf and syscall abi |
Can you rephrase the question to be more precise? Easier than what?
You can create your own formats based on elf (apple did this for example), but that's not needed here
In case you actually mean ABI, use C or sysv64, no need to create your own. Don't know what Linux uses, but I'd assume one of those.
In case you actually mean ABI? Posix doesn't care for all I know. Your syscall abi is between your Kernel and your OS. In case you mean syscalls, posix specifies them for you. This is stuff like |
Mach-O and ELF are entirely unrelated. They were created roughly at the same time and have a quite different structure. |
Sorry for the misunderstanding. I meant creating a Linux compatible syscall ABI and an elf loader (or elf compatible). Then DOOM and other applications can be compiled for linux and run natively on your own OS. |
Unfortunately syscalls are not the only way the OS interacts with the kernel. There's also files (which is basically everything), so you'd also have to replicate that (if you want to run programs that were compiled with a linux toolchain). This is still very simplified. Some resources for your reading:
TIL. I recall somebody writing that somewhere, but didn't double check |
I have a few specific goals in mind for further development:
Is it feasible to achieve these with the groundwork I've laid by following this blog? Additionally, where can I find the necessary resources to guide me through these next steps?
The text was updated successfully, but these errors were encountered: