User:Sortie
Hi, I'm Sortie. Guess what, I made an operating system! I'd list all the nice features it supports, but somehow the only interesting part for normal people is that you can play Pong.
Edit: A couple years passed, you can now play Quake.
Warranty
Please realize my recommendations aren't applicable in your case this if:
- You are making a microkernel or any other design where my personal experience isn't relevant.
- Your design goals are incompatible with my recommendations.
- You insist on osdeving in ways I cannot approve of.
Let me know if I am wasting my time trying to give inapplicable advise.
Discouragements
- Don't follow tutorials that aren't community-edited.
- Don't write a bootloader unless you must and instead use an existing one.
- Don't write an operating system in assembly.
- Don't do crazy real-mode stuff.
- Don't do FAT lest you give your VFS brain damage.
- Don't make it hard to turn your half-assed work into something proper lest you spend lots of time fixing it.
- Don't assume your small project never goes anywhere.
- Don't use \ as a path separator.
Recommendations
- Take osdev seriously and do things well.
- Don't play the role of an operating systems developer, be one.
- With every incompatibility come a price that must be paid. Corollary: Pick your battles.
- Use a modern, good Unix for osdev.
- Use UTF-8 (no BOM, Unix line terminators).
- Use a cross-compiler.
- Follow Bare Bones.
- Follow Meaty Skeleton.
- Initialize at compile, link or load time, not run-time.
- Enable paging as soon as possible.
- Have a pre-emptive kernel early on.
- Implement Ext2 as your first filesystem.
- Make a OS Specific Toolchain when you add a user-space.
Wiki Contributions
It would seem customary to have such a list on your user page, so here goes:
- Bare Bones (Rewrite)
- Building GCC
- Calling Global Constructors
- Creating a C Library
- GCC Cross-Compiler (Rewrite)
- Why do I need a Cross Compiler? (Rewrite)
- Cross-Porting_Software
- (I do need to add more stuff here)
- (and various other stuff)