Skip to content

The official repository for the Terrakernel project, a 64-bit AMD64 operating system and kernel written from scratch in C/C++ and Assembly

License

Notifications You must be signed in to change notification settings

Terrakernel-Project/Terrakernel

Repository files navigation

The Terrakernel Project

Made for Terra

Terrakernel is a hybrid x86_64 kernel.

During the development of TK the kernel will always be on version v1.0-rc1. Terra is the operating system I'm planning to use terrakernel for.

TODO

*: WIP

Initial stuff

  • Port printf implementation
  • Support for some COM1 serial output using port 0x3F8
  • End of initial stuff

x86_64 Specific

  • Write a GDT
  • Write an IDT
  • Write a physical memory manager
  • Write a virtual memory manager
  • Write a heap
  • Write a PIT timer (Unused now, use APIC)
  • Write an APIC and Multiprocessing support (no MP for now)
  • Write an APIC timer
  • Switch to fully graphical (flanterm) messages and logs
  • Port uACPI
  • (Other) Write a VFS and TMPFS and parse a USTAR Initrd archive
  • Scheduling and multithreading*
  • Switching to userspace
  • Write some basic syscalls
  • Load x86_64 ELF binaries, static and relocatable (copy from old version of TK) (delayed)
  • End of x86_64 stuff (almost) (almost)

Other

  • Write a VFS and TMPFS and parse a USTAR Initrd archive
  • Write a PCI driver (PCIe as well)
  • Write a PS2 keyboard driver and PS2 mouse driver
  • Line discipline
  • Try to write an XHCI driver for USB device support (optional)
  • Write some disk drivers, probably AHCI only for now
  • Some filesystem drivers, probably FAT32 and maybe, maybe, maybe EXT3 or EXT4
  • End of other

Porting software

  • Write or port a LibC
  • Port binutils and coreutils
  • Port DOOM
  • Port a window manager (window server) (probably Xorg)
  • Port anything else
  • End of porting software
  • End of project... or at least this version...

Building the kernel

Check BUILD_INSTRUCTIONS.md

How many LoC?

     258 text files.
     237 unique files.
       5 files ignored.

github.com/AlDanial/cloc v 1.98  T=2.21 s (107.4 files/s, 38514.3 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
C                               55           6540           4142          36391
C/C++ Header                   141           3432          11642          15216
C++                             35           1363             13           5948
Assembly                         5             36              0            232
CMake                            1              0              0             21
-------------------------------------------------------------------------------
SUM:                           237          11371          15797          57808 (56632 old)
-------------------------------------------------------------------------------

Screenshots

Burn on flash drive

About

The official repository for the Terrakernel project, a 64-bit AMD64 operating system and kernel written from scratch in C/C++ and Assembly

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published