An x86_64 kernel.
Find a file
2026-02-15 22:07:27 +09:00
kernel Fix todos in logger 2026-02-15 22:07:27 +09:00
libc Barely working debug statements 2026-02-13 14:25:29 +09:00
.clang-format Run clang-format 2025-11-18 09:11:29 +09:00
.gitignore Basic scheduler locking 2026-01-15 21:04:02 +09:00
.vimspector.json Put builds in dedicated arch/build type directories 2025-11-18 09:46:53 +09:00
build.sh Add log level parameter to build/run scripts 2026-02-14 20:48:21 +09:00
clean.sh Processes are now removed if terminated while not running 2026-02-05 14:21:34 +09:00
config.sh Limine booting + serial starts! 2025-10-19 11:46:08 +09:00
default_host.sh Working kernel with libk printf 2025-05-04 00:29:24 +09:00
headers.sh Working kernel with libk printf 2025-05-04 00:29:24 +09:00
LICENSE Add MIT license and basic readme 2025-07-11 19:50:01 +09:00
limine.conf A working TTY with scrolling 2025-10-23 21:00:09 +09:00
make_iso.sh Limine booting + serial starts! 2025-10-19 11:46:08 +09:00
README.md Fix todos in logger 2026-02-15 22:07:27 +09:00
run_virtual.sh Boot with most functionality on bare metal 2025-11-23 03:46:52 +09:00
target_triplet_to_arch.sh WIP: more work on booting with Limine 2025-10-17 09:58:55 +09:00

Hojicha

This project is a first effort at developing an operating system for the x86_64 platform. Thanks for checking it out!

Caution: Hojicha is very much a work in progress. It is very incomplete, and likely has many bugs. Please do not try to install it on real hardware - I'm not responsible for what happens if you do.

Current Status

Under (early) active development.

Current Goal:

Executable loading and first steps into userspace

MVP Done:

  • Boot hello world
  • Basic TTY output
  • Serial debug logs
  • GDT
  • IDT, simple PIC driver
  • Timer interrupts
  • Keyboard input
  • Physical memory manager
  • Virtual memory manager (paging)
  • Basic malloc()/free()
  • Framebuffer TTY
  • Migrate to x86_64
  • Round robin scheduling

If you're reading this and you have feedback, please don't hesitate to let me know!

Building & Running:

Prerequisites

  • GCC cross-compiler targeting x86_64 ELF - there are good instructions for this at https://wiki.osdev.org/GCC_Cross-Compiler. I personally am building with v15.2.0 - other versions should work as well, but no guarantees.
  • NASM
  • Xorriso
  • QEMU - Other emulators likely work as well, but the build/run scripts are built around using QEMU for emulation.

It then should be as simple as ./run_virtual.sh from the project root - see below for notes on build flags.

Build Flags

  • You can set the default kernel log level by passing --hlog-level=INFO (or WARN, ERROR, FATAL, DEBUG, VERBOSE) to ./build.sh or ./run_virtual.sh.
  • You can enable debugging via QEMU by passing --debug-qemu to ./build.sh and ./run_virtual.sh.