{"id":13998241,"url":"https://github.com/dreamportdev/Osdev-Notes","last_synced_at":"2025-07-23T06:31:02.440Z","repository":{"id":37614348,"uuid":"389027859","full_name":"dreamportdev/Osdev-Notes","owner":"dreamportdev","description":"A book that explore how to write an Operating System from scratch","archived":false,"fork":false,"pushed_at":"2024-11-10T12:18:16.000Z","size":4552,"stargazers_count":592,"open_issues_count":3,"forks_count":39,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-11-21T07:37:12.955Z","etag":null,"topics":["assembly","c","hobby-kernel","hobby-os-kernel","kernel","kernel-development","kernel-hacking","operating-system-development","operating-system-learning","operating-systems","operating-systems-project","os","os-development","osdev","osdev-tutorial","osdevtutorial","programming","x86-64"],"latest_commit_sha":null,"homepage":"https://github.com/dreamportdev/Osdev-Notes","language":"Markdown","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dreamportdev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"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},"funding":{"github":"dreamos82","patreon":"inuyasha82","open_collective":null,"ko_fi":"dreamos82","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":null}},"created_at":"2021-07-24T07:12:02.000Z","updated_at":"2024-11-20T15:47:04.000Z","dependencies_parsed_at":"2023-10-27T12:23:53.977Z","dependency_job_id":"653fb7e0-2786-432a-8589-797a38f2c9d9","html_url":"https://github.com/dreamportdev/Osdev-Notes","commit_stats":null,"previous_names":["dreamportdev/osdev-notes","dreamos82/osdev-notes"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamportdev%2FOsdev-Notes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamportdev%2FOsdev-Notes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamportdev%2FOsdev-Notes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dreamportdev%2FOsdev-Notes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dreamportdev","download_url":"https://codeload.github.com/dreamportdev/Osdev-Notes/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227245138,"owners_count":17753239,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","hobby-kernel","hobby-os-kernel","kernel","kernel-development","kernel-hacking","operating-system-development","operating-system-learning","operating-systems","operating-systems-project","os","os-development","osdev","osdev-tutorial","osdevtutorial","programming","x86-64"],"created_at":"2024-08-09T19:01:29.883Z","updated_at":"2025-07-23T06:31:02.427Z","avatar_url":"https://github.com/dreamportdev.png","language":"Markdown","readme":"# Osdev Notes\n\n[![Discord Chat](https://img.shields.io/discord/578193015433330698.svg?style=flat)](https://discordapp.com/channels/578193015433330698/578193713340219392)\n\u003cspan class=\"badge-buymeacoffee\"\u003e\n\u003ca href=\"https://buymeacoffee.com/dreamos82\" title=\"Donate to this project using Buy Me A Coffee\"\u003e\u003cimg src=\"https://img.shields.io/badge/buy%20me%20a%20coffee-donate-yellow.svg\" alt=\"Buy Me A Coffee donate button\" /\u003e\u003c/a\u003e\n\u003c/span\u003e\n![](https://tokei.rs/b1/github/dreamos82/osdev-notes)\n\nA book, originated as a collection of notes, intended to guide a reader through the steps of building an operating system kernel from scratch. Written while writing (and re-writing) our own kernels, each chapter covers a step of the process from selecting a bootloader to running a loaded ELF in userspace.\n\nWe hope you enjoy, and find something interesting here!\n\nThe content of this repository is also available as a _**printed book**_, it can be purchased via Lulu:\n* **Paperback**: [Click here](https://www.lulu.com/shop/dean-tuckey-and-ivan-gualandri/osdev-notes/paperback/product-mpzp5v.html?q=osdev+notes\u0026page=1\u0026pageSize=4)\n* **Hardcover**: [Click Here](https://www.lulu.com/shop/dean-tuckey-and-ivan-gualandri/osdev-notes/hardcover/product-je5drpr.html?page=1\u0026pageSize=4)\n\nThe [latest-master](https://github.com/dreamportdev/Osdev-Notes/releases/tag/latest-master) release contains the PDF built from master.\n\nYou can reach us on Discord: [https://discord.gg/NGasazGkqr](https://discord.gg/NGasazGkqr)\n\n## Current Chapters:\n\n* [Part 0: Introduction](00_Introduction/01_README.md)\n    * [Assumed Knowledge](00_Introduction/02_AssumedKnowledge.md)\n    * [About The Authors](00_Introduction/03_AboutTheAuthors.md)\n* [Part 1: Building \u0026 Boot Protocols](01_Build_Process/README.md)\n    * [Building a Kernel](01_Build_Process/01_Overview.md)\n    * [Bootloaders and Boot Protocols](01_Build_Process/02_Boot_Protocols.md)\n    * [Makefiles](01_Build_Process/03_Gnu_Makefiles.md)\n    * [Linker Scripts](01_Build_Process/04_Linker_Scripts.md)\n    * [Generating a Bootable Iso](01_Build_Process/05_Generating_Iso.md)\n* [Part 2: Architecture and Basic Drivers](02_Architecture/README.md)\n    * [Overview](02_Architecture/01_Overview.md)\n    * [Hello World](02_Architecture/02_Hello_World.md)\n    * [A Higher Half Kernel](02_Architecture/03_HigherHalf.md)\n    * [Global Descriptor Table](02_Architecture/04_GDT.md)\n    * [Interrupts](02_Architecture/05_InterruptHandling.md)\n    * [ACPI Tables](02_Architecture/06_ACPITables.md)\n    * [APIC](02_Architecture/07_APIC.md)\n    * [Timers](02_Architecture/08_Timers.md)\n    * [PS2 Keyboard Overview](02_Architecture/09_Add_Keyboard_Support.md)\n    * [PS2 Keyboard Interrupt Handling](02_Architecture/10_Keyboard_Interrupt_Handling.md)\n    * [PS2 Keyboard Driver implementation](02_Architecture/11_Keyboard_Driver_Implemenation.md)\n* [Part 3: Video Output](03_Video_Output/README.md)\n    * [The Framebuffer](03_Video_Output/01_Framebuffer.md)\n    * [Drawing Text on Framebuffer](03_Video_Output/02_DrawingTextOnFB.md)\n* [Part 4: Memory Management](04_Memory_Management/README.md)\n    * [Overview](04_Memory_Management/01_Overview.md)\n    * [Physical Memory](04_Memory_Management/02_Physical_Memory.md)\n    * [Paging](04_Memory_Management/03_Paging.md)\n    * [Virtual Memory Manager](04_Memory_Management/04_Virtual_Memory_Manager.md)\n    * [Heap Allocation](04_Memory_Management/05_Heap_Allocation.md)\n* [Part 5: Scheduling](05_Scheduling/README.md)\n    * [Overview](05_Scheduling/01_Overview.md)\n    * [The Scheduler](05_Scheduling/02_Scheduler.md)\n    * [Processes and Threads](05_Scheduling/03_Processes_And_Threads.md)\n    * [Locks](05_Scheduling/04_Locks.md)\n* [Part 6: Getting to Userspace](06_Userspace/README.md)\n    * [Overview](06_Userspace/01_Overview.md)\n    * [Switching Modes](06_Userspace/02_Switching_Modes.md)\n    * [Updated Interrupt Handling](06_Userspace/03_Handling_Interrupts.md)\n    * [System Calls](06_Userspace/04_System_Calls.md)\n    * [Example Syscall ABI](06_Userspace/05_Example_ABI.md)\n* [Part 7: Inter-Process Communication](07_IPC/README.md)\n    * [Overview](07_IPC/01_Overview.md)\n    * [Shared Memory](07_IPC/02_Shared_Memory.md)\n    * [Message Passing](07_IPC/03_Message_Passing.md)\n* [Part 8: File System](08_VirtualFileSystem/README.md)\n    * [Overview](08_VirtualFileSystem/01_Overview.md)\n    * [The Virtual File System](08_VirtualFileSystem/02_VirtualFileSystem.md)\n    * [The Tar File System](08_VirtualFileSystem/03_TarFileSystem.md)\n* [Part 9: Loading \u0026 Executing ELFs](09_Loading_Elf/README.md)\n    * [Theory](09_Loading_Elf/01_Elf_Theory.md)\n    * [Loading and Running](09_Loading_Elf/03_Loading_And_Running.md)\n* [Part 10: Going Beyond](10_Going_Beyond/README.md)\n* [Extras: Appendices](99_Appendices/README.md)\n    * [General Troubleshooting](99_Appendices/A_Troubleshooting.md)\n    * [Tips and Tricks](99_Appendices/B_Tips_And_Tricks.md)\n    * [C Language](99_Appendices/C_Language_Info.md)\n    * [Working With NASM](99_Appendices/D_Nasm.md)\n    * [All About Cross Compilers](99_Appendices/E_Cross_Compilers.md)\n    * [Debugging](99_Appendices/F_Debugging.md)\n    * [Memory Protection](99_Appendices/G_Memory_Protection.md)\n    * [Useful Resources](99_Appendices/H_Useful_Resources.md)\n    * [Acknowledgments](99_Appendices/I_Acknowledgments.md)\n\n## Our Projects\n\n* [DreamOs64](https://github.com/dreamos82/Dreamos64): 64-bit OS written from scratch by [Ivan G](https://github.com/dreamos82).\n* [Northport](https://github.com/DeanoBurrito/northport): Another 64-bit OS with SMP, and riscv support! by [Dean T](https://github.com/DeanoBurrito/).\n* [DreamOs](https://github.com/dreamos82/Dreamos): 32-bit OS written from scratch. This project is discontinued, but it still worth mentioning. Also by [Ivan G](https://github.com/dreamos82).\n\n## Authors\n\n* [Ivan G](https://github.com/dreamos82) (dreamos82) - Author and creator of these notes.\n* [Dean T](https://github.com/DeanoBurrito/) (DeanoBurrito) - Author.\n\n## License\n\nThe contents (code, text and other assets) of this repository are licensed under the Creative Commons Attribution-NonCommercial 4.0 Public License, see the [LICENSE](LICENSE.md) file for the full text.\n\nWhile not legal advice, this license can be summed up as:\n- You are free to share (copy and redistribute) this material in any medium or format.\n- Adapt (remix, transform and build upon) the material.\n\nUnder the following restrictions:\n- You must give appropriate credit, provide a link to the license, and indicate if changes were made.\n- You cannot use the material for commercial uses.\n\nNote that no warranties of any kind are provided.\n\n\u003ca rel=\"license\" href=\"http://creativecommons.org/licenses/by-nc/4.0/\"\u003e\u003cimg alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by-nc/4.0/88x31.png\" /\u003e\u003c/a\u003e\n","funding_links":["https://github.com/sponsors/dreamos82","https://patreon.com/inuyasha82","https://ko-fi.com/dreamos82","https://buymeacoffee.com/dreamos82"],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamportdev%2FOsdev-Notes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdreamportdev%2FOsdev-Notes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdreamportdev%2FOsdev-Notes/lists"}