This is a modern 64-bit UEFI based UNIX-like hobby operating system. It has been an ongoing project for a while and I treat it like a sandbox to learn about operating system design and other low-level concepts. It is not yet fully working (no userspace or shell), but I have been slowly working towards the goal of running doom in userspace.
Currently, it has a working bootloader, memory management, scheduler, usb support (hid, mass storage), and a few other things. I read a lot of source code from other projects while working on this so maybe this could be useful to someone else.
βββ boot uefi edk2 bootloader
βββ drivers external device drivers
βββ fs filesystem types
β βββ ramfs generic in-memory filesystem driver
βββ include header files
βββ kernel core kernel code
β βββ acpi acpi drivers
β βββ bus pci & pcie drivers
β βββ cpu cpu related code and assembly routines
β βββ debug debugging facilities (DWARF, stacktrace, etc)
β βββ device apic, ioapic and other related drivers
β βββ gui graphics code
β βββ mm memory management (physical and virtual)
β βββ sched scheduler and scheduling algorithms
β βββ usb usb and usb device drivers
β βββ vfs virtual filesystem code
βββ lib data structure, algorithm and other useful libraries
βββ sbin system binaries
βββ scripts build related scripts and support files
βββ third-party third party dependencies
βββ toolchain toolchain build files and patches
To build the full toolchain from source:
make -C toolchain all -j$(nproc)