A university student's hobby operating system project, dubbed banan-os, has captured the attention of the developer community with its impressive array of features and implementations. The project demonstrates how personal initiatives can lead to significant technical achievements and career opportunities in systems programming.
Comprehensive Feature Set Surprises Community
The operating system has garnered attention for its unexpectedly robust feature set, including USB support, networking capabilities, and even the ability to run DOOM. Community members were particularly impressed by the implementation of USB drivers from scratch, a notably complex undertaking that demonstrates the developer's technical prowess. The project supports both x86_64 and i686 architectures, featuring everything from basic system operations to advanced functionalities like ELF dynamic linking and copy-on-write memory.
Key Features:
- Ring3 userspace
- SMP (multiprocessing)
- Network stack with TCP/IP support
- USB support (keyboard, mouse, mass storage)
- Multiple filesystem support (Ext2, FAT12/16/32, etc.)
- Graphics support with basic GUI
- DOOM compatibility
Learning Through Implementation
The developer's journey reveals valuable insights into the learning process of operating system development. When asked about the most challenging aspects, they highlighted the complexity of reading and implementing large specifications, particularly noting the difficulties with the ACPI (Advanced Configuration and Power Interface) interpreter and USB stack implementation.
There hasn't been any overly difficult parts. I'd say the most difficult one has to be either AML interpreter because the ACPI specs are very badly written or the USB stack just because the size of the specifications is so large with a lot of cross referencing.
Academic and Professional Impact
The project has yielded tangible benefits for its creator. Beyond technical achievements, it has enabled the student to bypass certain university courses by demonstrating practical mastery of the subject matter. More significantly, it led to a part-time position in university embedded systems development, showcasing how personal projects can translate into professional opportunities.
Development Process and Testing
The development process primarily relies on virtual machine testing (95% of the time) with regular bare metal testing to ensure real-world compatibility. This approach allows for rapid development while maintaining practical functionality. The developer emphasizes the importance of testing on actual hardware, noting that bare metal is not as forgiving as VMs can be.
Development Environment:
- Primary testing: Virtual Machine (95%)
- Secondary testing: Bare metal hardware
- Supported architectures: x86_64 and i686
- Build system: Custom with toolchain support
Future Prospects
The project continues to evolve, with ongoing improvements to various components, including a new AML interpreter implementation. While it began as a learning experience, the comprehensive nature of the project and its professional execution suggest potential for broader applications and continued development in the future.
Reference: banan-os: My Hobby Operating System