hhuOS - v0.5.0 (Draco)
Posted: Tue Jul 16, 2024 2:26 am
hhuOS is a small operating system for the x86-architecture, build for teaching purposes. The main goal of this project is to show, how different aspects of operating systems theory can be implemented and linked together. It has served as the basis of many bachelor's and master's theses. The system is not aimed to be a fully featured operating system for daily use.
This is a project by the Operating Systems group at the Heinrich Heine University Düsseldorf.
Its features include:
Prebuilt images are published via GitHub Releases. To run the latest nightly build, the following instruction can be executed (assuming 'wget' and 'qemu-system-i386' are installed:
If QEMU hangs on a black screen, try executing './run.sh --bios true --file hhuOS-limine.iso'. There seems to be a problem with older QEMU versions and new OVMF images.
The OS boots into a shell with some UNIX-like commands. Run 'ls /bin' to see all available applications. Try out 'bug' and 'battlespace' for some old-fashioned games!
See the README file in our repository for build instructions and check out our wiki, if you are interested in in developing hhuOS. It contains a a tutorial on how to get started with application development.
Changelog for v0.5.0 (Draco):
Kernel:
This is a project by the Operating Systems group at the Heinrich Heine University Düsseldorf.
Its features include:
- 32-bit kernel for the x86-architecture (bootable on BIOS and UEFI systems)
- Multiboot2 compliant
- Preemptive multi-threading
- Interrupt handling via PIC or APIC
- Virtual memory management via paging
- User space processes with access to kernel functionality via system calls
- Feature rich user space library (includes a game engine with support for 2D and basic 3D graphics)
- Virtual filesystem, allowing to mount physical filesystems at arbitrary paths
- Devices are accessible via the filesystem
- Filesystem drivers for FAT via FatFs(http://elm-chan.org/fsw/ff/00index_e.html) and ISO9660
- Read ACPI and SMBIOS tables
- Read/Write serial and parallel ports
- Support for Floppy, IDE and AHCI
- Network stack (UDP/IP; no TCP yet) with device drivers for NE2000 and RTL8139
- Execute BIOS calls by briefly switching to real mode (allows changing resolutions via VBE and shutdown via APM)
- Support for FPU, MMX and SSE in a multi-threaded environment with on-demand context switching
- Support PS/2 keyboard and mouse
- Support for different timer devices (PIT, RTC, APIC Timer, ACPI Timer)
- Support for PC Speaker and SoundBlaster (no real sound subsystem yet; A demo application is included to play WAVE files)
Prebuilt images are published via GitHub Releases. To run the latest nightly build, the following instruction can be executed (assuming 'wget' and 'qemu-system-i386' are installed:
Code: Select all
mkdir -p hhuOS
cd hhuOS
wget https://github.com/hhuOS/hhuOS/releases/download/nightly-master/hhuOS-master.tar.gz
tar -xzf hhuOS-master.tar.gz
./run.sh
The OS boots into a shell with some UNIX-like commands. Run 'ls /bin' to see all available applications. Try out 'bug' and 'battlespace' for some old-fashioned games!
See the README file in our repository for build instructions and check out our wiki, if you are interested in in developing hhuOS. It contains a a tutorial on how to get started with application development.
Changelog for v0.5.0 (Draco):
Kernel:
- Migrate to lower half kernel
- Use (writable) virtual disk drives instead of initrd
- Implement ISO9660 driver
- Implement non-blocking read
- Improve IDE performance
- Implement AHCI driver
- Implement ATAPI support for IDE and AHCI
- Fix BIOS calls on real hardware
- Implement resolution switching via VBE
- Implement basic APM support (shutdown)
- Implement NE2000 driver
- Bugfix in network packet memory management
- Implement more precise wait() function via PIT and ACPI timer
- Implement 2D particle engine for games
- Improve ANSI compatibility of terminal
- Implement support for special keys like arrows, home, end, etc. in shell
- Parse arguments in quotation marks in shell
- Implement basic auto completion for commands in shell
- Add new fonts for graphical applications
- Implement support for keyboard layouts (starting with DE and US)
- Print stack trace, when an exception occurs
- Implement network benchmark nettest
- Various bugfixes and performance improvements