{"id":13400834,"url":"https://github.com/phil-opp/blog_os","last_synced_at":"2025-05-13T20:03:42.245Z","repository":{"id":35313618,"uuid":"39575101","full_name":"phil-opp/blog_os","owner":"phil-opp","description":"Writing an OS in Rust","archived":false,"fork":false,"pushed_at":"2025-04-21T09:12:07.000Z","size":16800,"stargazers_count":16455,"open_issues_count":86,"forks_count":1137,"subscribers_count":278,"default_branch":"main","last_synced_at":"2025-05-06T19:52:01.736Z","etag":null,"topics":["kernel","operating-system","rust","x86-64"],"latest_commit_sha":null,"homepage":"http://os.phil-opp.com","language":"HTML","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/phil-opp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-APACHE","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,"zenodo":null},"funding":{"github":["phil-opp"],"custom":["https://donorbox.org/phil-opp"],"patreon":"phil_opp","open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":"phil-opp","issuehunt":null,"otechie":null}},"created_at":"2015-07-23T15:23:54.000Z","updated_at":"2025-05-06T19:46:14.000Z","dependencies_parsed_at":"2023-11-25T18:30:41.258Z","dependency_job_id":"9157e5e0-140d-46be-8ca0-cb80c37d1f98","html_url":"https://github.com/phil-opp/blog_os","commit_stats":{"total_commits":2444,"total_committers":198,"mean_commits":"12.343434343434344","dds":"0.21603927986906712","last_synced_commit":"4de9527ef8ff6e093494894be7c622cb61bc3478"},"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil-opp%2Fblog_os","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil-opp%2Fblog_os/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil-opp%2Fblog_os/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phil-opp%2Fblog_os/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phil-opp","download_url":"https://codeload.github.com/phil-opp/blog_os/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254020473,"owners_count":22000750,"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":["kernel","operating-system","rust","x86-64"],"created_at":"2024-07-30T19:00:56.007Z","updated_at":"2025-05-13T20:03:42.223Z","avatar_url":"https://github.com/phil-opp.png","language":"HTML","funding_links":["https://github.com/sponsors/phil-opp","https://donorbox.org/phil-opp","https://patreon.com/phil_opp","https://liberapay.com/phil-opp"],"categories":["HTML","HarmonyOS","HTML (17)","Uncategorized","Rust 程序设计","General Operating System","operating-system","Reference"],"sub_categories":["Windows Manager","Uncategorized","网络服务_其他"],"readme":"# Blog OS\n\nThis repository contains the source code for the _Writing an OS in Rust_ series at [os.phil-opp.com](https://os.phil-opp.com).\n\nIf you have questions, open an issue or chat with us [on Gitter](https://gitter.im/phil-opp/blog_os).\n\n## Where is the code?\n\nThe code for each post lives in a separate git branch. This makes it possible to see the intermediate state after each post.\n\n**The code for the latest post is available [here][latest-post].**\n\n[latest-post]: https://github.com/phil-opp/blog_os/tree/post-12\n\nYou can find the branch for each post by following the `(source code)` link in the [post list](#posts) below. The branches are named `post-XX` where `XX` is the post number, for example `post-03` for the _VGA Text Mode_ post or `post-07` for the _Hardware Interrupts_ post. For build instructions, see the Readme of the respective branch.\n\nYou can check out a branch in a subdirectory using [git worktree]:\n\n[git worktree]: https://git-scm.com/docs/git-worktree\n\n```\ngit worktree add code post-10\n```\n\nThe above command creates a subdirectory named `code` that contains the code for the 10th post (\"Heap Allocation\").\n\n## Posts\n\nThe goal of this project is to provide step-by-step tutorials in individual blog posts. We currently have the following set of posts:\n\n**Bare Bones:**\n\n- [A Freestanding Rust Binary](https://os.phil-opp.com/freestanding-rust-binary/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-01))\n- [A Minimal Rust Kernel](https://os.phil-opp.com/minimal-rust-kernel/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-02))\n- [VGA Text Mode](https://os.phil-opp.com/vga-text-mode/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-03))\n- [Testing](https://os.phil-opp.com/testing/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-04))\n\n**Interrupts:**\n\n- [CPU Exceptions](https://os.phil-opp.com/cpu-exceptions/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-05))\n- [Double Faults](https://os.phil-opp.com/double-fault-exceptions/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-06))\n- [Hardware Interrupts](https://os.phil-opp.com/hardware-interrupts/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-07))\n\n**Memory Management:**\n\n- [Introduction to Paging](https://os.phil-opp.com/paging-introduction/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-08))\n- [Paging Implementation](https://os.phil-opp.com/paging-implementation/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-09))\n- [Heap Allocation](https://os.phil-opp.com/heap-allocation/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-10))\n- [Allocator Designs](https://os.phil-opp.com/allocator-designs/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-11))\n\n**Multitasking**:\n\n- [Async/Await](https://os.phil-opp.com/async-await/)\n    ([source code](https://github.com/phil-opp/blog_os/tree/post-12))\n\n## First Edition Posts\n\nThe current version of the blog is already the second edition. The first edition is outdated and no longer maintained, but might still be useful. The posts of the first edition are:\n\n\u003cdetails\u003e\u003csummary\u003e\u003ci\u003eClick to expand\u003c/i\u003e\u003c/summary\u003e\n\n**Bare Bones:**\n\n- [A Minimal x86 Kernel](https://os.phil-opp.com/multiboot-kernel.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_1))\n- [Entering Long Mode](https://os.phil-opp.com/entering-longmode.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_2))\n- [Set Up Rust](https://os.phil-opp.com/set-up-rust.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_3))\n- [Printing to Screen](https://os.phil-opp.com/printing-to-screen.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_4))\n\n**Memory Management:**\n\n- [Allocating Frames](https://os.phil-opp.com/allocating-frames.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_5))\n- [Page Tables](https://os.phil-opp.com/modifying-page-tables.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_6))\n- [Remap the Kernel](https://os.phil-opp.com/remap-the-kernel.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_7))\n- [Kernel Heap](https://os.phil-opp.com/kernel-heap.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_8))\n\n**Exceptions:**\n\n- [Handling Exceptions](https://os.phil-opp.com/handling-exceptions.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_9))\n- [Double Faults](https://os.phil-opp.com/double-faults.html)\n      ([source code](https://github.com/phil-opp/blog_os/tree/first_edition_post_10))\n\n**Additional Resources:**\n\n- [Cross Compile Binutils](https://os.phil-opp.com/cross-compile-binutils.html)\n- [Cross Compile libcore](https://os.phil-opp.com/cross-compile-libcore.html)\n- [Set Up GDB](https://os.phil-opp.com/set-up-gdb)\n- [Handling Exceptions using Naked Functions](https://os.phil-opp.com/handling-exceptions-with-naked-fns.html)\n    - [Catching Exceptions](https://os.phil-opp.com/catching-exceptions.html)\n          ([source code](https://github.com/phil-opp/blog_os/tree/catching_exceptions))\n    - [Better Exception Messages](https://os.phil-opp.com/better-exception-messages.html)\n          ([source code](https://github.com/phil-opp/blog_os/tree/better_exception_messages))\n    - [Returning from Exceptions](https://os.phil-opp.com/returning-from-exceptions.html)\n          ([source code](https://github.com/phil-opp/blog_os/tree/returning_from_exceptions))\n\n\u003c/details\u003e\n\n## License\n\nThis project, with exception of the `blog/content` folder, is licensed under either of\n\n- Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or\n  https://www.apache.org/licenses/LICENSE-2.0)\n- MIT license ([LICENSE-MIT](LICENSE-MIT) or https://opensource.org/licenses/MIT)\n\nat your option.\n\nFor licensing of the `blog/content` folder, see the [`blog/content/README.md`](blog/content/README.md).\n\n### Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphil-opp%2Fblog_os","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphil-opp%2Fblog_os","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphil-opp%2Fblog_os/lists"}