{"id":32464883,"url":"https://github.com/jkelley129/ignis-os","last_synced_at":"2026-03-10T14:04:12.659Z","repository":{"id":318354463,"uuid":"1070948751","full_name":"jkelley129/IGNIS-OS","owner":"jkelley129","description":"An 64-bit operating system I'm developing for the x86 architecture","archived":false,"fork":false,"pushed_at":"2026-02-12T20:54:19.000Z","size":319,"stargazers_count":15,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-13T04:21:01.778Z","etag":null,"topics":["assembly","c","drivers","low-level","memory-management","operating-system","os","system-internals"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkelley129.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"docs/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-10-06T16:49:59.000Z","updated_at":"2026-02-12T20:54:39.000Z","dependencies_parsed_at":"2025-10-16T23:02:36.714Z","dependency_job_id":null,"html_url":"https://github.com/jkelley129/IGNIS-OS","commit_stats":null,"previous_names":["jkelley129/ignis-os"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jkelley129/IGNIS-OS","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkelley129%2FIGNIS-OS","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkelley129%2FIGNIS-OS/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkelley129%2FIGNIS-OS/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkelley129%2FIGNIS-OS/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkelley129","download_url":"https://codeload.github.com/jkelley129/IGNIS-OS/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkelley129%2FIGNIS-OS/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30336093,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T12:41:07.687Z","status":"ssl_error","status_checked_at":"2026-03-10T12:41:06.728Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","c","drivers","low-level","memory-management","operating-system","os","system-internals"],"created_at":"2025-10-26T13:22:17.865Z","updated_at":"2026-03-10T14:04:12.651Z","avatar_url":"https://github.com/jkelley129.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Ignis OS\n## What is Ignis?\nIgnis is an open source hobby OS meant to gain experience with low level concepts and implementations. This is a learning project, and I hope to expand it to learn more about all of the concepts. I am using a variety of tools to facilitate my learning, including CPU documentation, hardware docs, and some genAI tools to help me learn. \u003cbr\u003e\nThis is **NOT** a Linux distribution or UNIX system. It is currently just a kernel(userspace in the future), built from nothing.\n\n## Technical Description\n- It is designed for 64-bit systems for the x86 instruction set\n- It uses a custom Multiboot2 compatible boot header with GRUB2\n- For testing and developing, it is emulated using [QEMU](https://qemu.org)\n- For a full feature list, look [here](#current-features)\n\n## Installation\n### Expected Environment\nA Unix-like host OS is expected for building and running IGNIS OS. Linux with a mainstream distribution is recommended\nbut macOS will likely work as well, though it has not been tested. \nWindows is only supported via WSL2.\n\n### Required Build Dependencies\n- A modern C compiler(GNU `gcc` recommended)\n- A linker (GNU `ld` recommended)\n- An assembler (`nasm` recommended)\n- grub-mkrescue\n- `make`\n\n### Required Emulator\n- You must install the QEMU emulator to for this project.\n- It is expected by `make run` to emulate the ignis.iso image created by `make`\n\n### Getting Started\n**Steps**:\n- Install build dependencies.\n- Clone the repo with `git clone https://github.com/jkelley129/IGNIS-OS.git \u0026\u0026 cd IGNIS-OS`\n- Compile and package the project with `make` or `make all`\n  - The `Makefile` creates a ignis.iso file in iso/boot/ that is emulated by QEMU\n- If running with a disk image, run `make disks`, `make disk-ata`, or `make disk-nvme`. Note that only ATA is working at the moment\n- Run the QEMU emulator with `make run` if not working with disks, else use `make run-full`, `make run-ata`, or `make run-nvme` for your disk\n\n## Current Features\nFeatures in rough chronological order of implementation\n- Console layer for outputting text to the screen via VGA\n- Interrupt Descriptor Table for handling interrupts(keypresses, hardware interrupts)\n- Interactive kernel-level shell for debugging and functionality\n- Programmable Interval Timer with interrupt handling\n- Custom memory allocator, with a simple free list implementation\n- In-memory filesystem with simple utilities(create, list, copy, delete, etc.)\n- Agnostic block device I/O layer\n- Block device drivers\n  - ATA\n- Error handling with enums(`kerr_t`) and helper functions/macros\n- Generic driver registration system with features like priority and dependencies\n- Serial driver for external logging\n- Page-aligned memory allocator\n- Kernel Panic\n- Sophisticated memory allocators\n  - Buddy allocator\n  - Slab allocator\n  - Unified allocator interface([mm/allocators/kmalloc.c](https://github.com/jkelley129/IGNIS-OS/blob/main/mm/allocators/kmalloc.c))\n- Process scheduler and task system with support for multiple processes\n\n## TODO / Project Goals\n- User space with limited permissions\n- Support for executing user programs\n- User applications(text editor, clock, stopwatch, utilities)\n- More device drivers for more devices\n- Implementation of an on-disk filesystem\n- Audio integration\n- Graphical User Interface\n\n## Contributing\n### Issues\nView .github/ISSUE_TEMPLATES/ for detailed issue templates. Issues are always welcome, as long as they fit the template, are reproducable, and fit the scale and theme of the project\n### Pull Requests\nBecause of the nature of this repository, I would ask anyone to refrain from large PRs implementing a lot of new logic. I want to make IGNIS as best as possible, but I want to learn and implement the core features by myself. If you have code you want to contribute, feel free to make an issue or PR. Just know that I might not merge it if I don't fully understand it. Thank you for your interest!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkelley129%2Fignis-os","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkelley129%2Fignis-os","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkelley129%2Fignis-os/lists"}