10‐001. Beginner Mistakes - skybonep/fishboneOS GitHub Wiki
Avoid many known beginner mistakes:
-
Neglecting Version Control: Failing to use a version control system like Git immediately is a critical error; without it, a single "poorly written 'rm' or 'format' command" or a disk crash can destroy hundreds of hours of work.
-
Skipping the Cross-Compiler: Beginners often make the mistake of using their host system's default compiler. This is dangerous because it can lead to the incorrect linking of host runtime files into your kernel; a dedicated cross-compiler is required.
-
Attempting to Load at Address 0: Trying to load your kernel at the very beginning of physical memory (below 1 MB) is a mistake, as this area is strictly reserved for the BIOS, GRUB, and memory-mapped I/O.
-
Skipping Foundational Knowledge: Many beginners try to skip learning the "abstract theory" of computer science or the complexities of assembly language. The sources emphasize that you cannot skip these requirements if you want to successfully handle hardware interactions.
-
The "Sloppy Code" Mentality: Assuming that modern computers are fast enough to handle inefficient code is a dangerous mentality in OS design. Critical kernel code may be called thousands of times per second, requiring you to remove as much overhead as possible.
-
Over-complicating Early Paging: Jumping straight into complex paging structures often leads to hard-to-debug crashes. The sources recommend starting with identity paging (mapping virtual addresses to the same physical addresses) before moving to advanced setups like a higher-half kernel.
-
Ignoring Hardware Manuals: OS development requires reading and writing complex assembly based on hardware specifications. Failing to consult official documentation, such as the Intel Manuals, leads to unnecessary confusion and discouragement.
-
Expecting Instant Gratification: A common psychological mistake is expecting the same "instant gratification" found in web or game development. OS development is a "complicated and ongoing process" that requires extreme patience.
-
Forgoing Standard Allocators: Some beginners attempt to "forego the page allocator" to simplify early development, but this often results in significant "headaches" when trying to copy data between kernel and userspace memory later on.
Reference: https://wiki.osdev.org/Beginner_Mistakes
Created: 20251224