to be fair , making a simple os is a fun side project , though I would recommend going with a toy VM rather than actual hardware
This actually wrong way to do it, here the pro way:
1.Start writing a game/app/engine/os.
2.Write dozen utility packages for it.
3.Write high-level packages for #2
4.Write a “light-weight” version of #3 when disgusted with bloat of #3.
5.repeat #2 with more modern rust code.
you have been looking at my private github repos and are clearly a witch
Very small projects 😂 after mastering it try building whooping to-do app in rust!
How about a federated link aggregator?
Didn’t know Lemmy was written in Rust.
Edit: yep, it is https://github.com/LemmyNet/lemmy
Yoo it uses AGPL v3 too. That’s pretty cool. Love to see it
So I watched a few guides and did all that… what now? Would you think a shopping list app is doable for my knowledge after this? It looks really hard compared to NorgurOS… :(
For people who don’t know, there is already a fully Rust OS: https://www.redox-os.org/
Microkernel too which is pretty cool.
I have heard about Redox. What’s the difference between a microkernel and a kernel? Does redox use the linux kernel? Or has the guy written that in rust too?
Well, think microkernels as the bare minimum. They give you just enough to write your own OS on top of that: only the bare essentials run in kernel space, whilst everything else runs in user space and has to communicate with the kernel. Compare this to a monolithic kernel, like the Linux kernel: here, the whole operating system is run in kernel space, which means that data doesn’t need to be moved between user and kernel space: this makes the OS faster, but at the cost of modularity. Redox doesn’t use the Linux kernel, it uses its own microkernel written in Rust.
Edit: A good example would be driver. In a microkernel, these run separately from the kernel and interact with it when needed. In a monolithic kernel, these drivers would be included in the kernel itself. They both have their pros and cons: if you’re interested, feel free to look it up.
thanks for the explanation! I was thought it had something to do with linux since the lead dev works for System76.
No problem! Actually, System76 is currently working on rewriting the COSMIC desktop in Rust (or really, just writing a new DE in Rust). It’s a pretty ambitious project that should hopefully get released some time this year. I wouldn’t be surprised if the lead redox dev was working on it too: low-level Rust knowledge is exactly what they need.
Does that mean on a microkernel you’d essentially have double the amount of code execution for a driver (i.e. driver makes a call to the kernel, kernel verifies and then executes rather than the driver just executing the call) meaning double the latency? Seems like it would cause a lot of problems.
Nowhere near double, the kernel can be extremely sparse on it’s side, but there is a small latency hit
lots and lots more IPC. So lots and lots of context switches. So worse performance
IIRC the filesystem was literally just a text file.
Well, that escalated rather quickly.
Small science projects:
-
Baking soda and vinegar volcano
-
Moon landing
-
Splitting the atom
I love how simple and small scale splitting an atom sounds. Then you get to doing it…
Splitting individual atoms isn’t that difficult, you just need a neutron supply and some material (paraffin wax works) to slow them down and it will eventually happen at least with uranium. Doing it reliably and efficiently is a much harder problem.
-
Let me on the Linux kernel irq I can redo the whole thing!