{"id":21407009,"url":"https://github.com/garentyler/xv6-riscv","last_synced_at":"2026-05-11T16:37:58.952Z","repository":{"id":200603386,"uuid":"705903398","full_name":"garentyler/xv6-riscv","owner":"garentyler","description":"MIT's xv6-riscv operating system, now in Rust!","archived":false,"fork":false,"pushed_at":"2025-01-29T22:19:56.000Z","size":18021,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"riscv","last_synced_at":"2025-03-16T17:17:54.698Z","etag":null,"topics":["mit","operating-system","os","port","portfolio","riscv","riscv64","rust","xv6-os","xv6-riscv"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"mit-pdos/xv6-riscv","license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/garentyler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.LGPLv3.txt","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}},"created_at":"2023-10-16T23:30:10.000Z","updated_at":"2024-04-01T02:30:22.000Z","dependencies_parsed_at":"2024-11-22T16:44:17.387Z","dependency_job_id":"b2e36eea-843d-47e6-b5c4-ddb1794a1584","html_url":"https://github.com/garentyler/xv6-riscv","commit_stats":null,"previous_names":["garentyler/xv6-riscv"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/garentyler/xv6-riscv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garentyler%2Fxv6-riscv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garentyler%2Fxv6-riscv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garentyler%2Fxv6-riscv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garentyler%2Fxv6-riscv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/garentyler","download_url":"https://codeload.github.com/garentyler/xv6-riscv/tar.gz/refs/heads/riscv","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/garentyler%2Fxv6-riscv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32903813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-10T13:40:02.631Z","status":"online","status_checked_at":"2026-05-11T02:00:05.975Z","response_time":120,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["mit","operating-system","os","port","portfolio","riscv","riscv64","rust","xv6-os","xv6-riscv"],"created_at":"2024-11-22T16:43:57.107Z","updated_at":"2026-05-11T16:37:58.938Z","avatar_url":"https://github.com/garentyler.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# xv6-riscv\n\nMIT's xv6-riscv operating system, now in Rust!\n\nThis is a passion project for me - I've always wanted to write an operating system.\nI decided to port the xv6 operating system so that I could try porting a moderately\nsized codebase to my favorite programming language, Rust.\n\n\u003e xv6 is a re-implementation of Dennis Ritchie's and Ken Thompson's Unix\n\u003e Version 6 (v6). xv6 loosely follows the structure and style of v6,\n\u003e but is implemented for a modern RISC-V multiprocessor using ANSI C.\n\nTo start the project, I made a basic Rust crate that compiled to a static library.\nAt link time, the linker includes the static library into the final binary to result\nin a hybrid kernel. When the entire kernel is written in Rust, the link process should\nbe a lot simpler (just Rust and assembly). At that point, I can start refactoring the\nkernel to use more of Rust's features that don't translate well across FFI boundaries.\n\n## Features\n\n- [x] Multi-core processing\n- [x] Paging\n- [x] Pre-emptive multitasking\n- [x] File system\n- [x] Process communication using pipes\n- [ ] Entirely Rust kernel (no more C code)\n- [ ] [Round-robin scheduling](https://en.wikipedia.org/wiki/Round-robin_scheduling)\n- [ ] Rust ABI for syscalls (I'll probably use [stabby](https://crates.io/crates/stabby) for this)\n- [ ] Networking\n- [ ] Running on real hardware (likely a [Milk-V Duo](https://milkv.io/duo))\n- [ ] Port Rust standard library\n\n## Building and running\n\nBuild requirements:\n\n- [A RISC-V C toolchain](https://github.com/riscv/riscv-gnu-toolchain)\n- [QEMU](https://www.qemu.org/download/) (qemu-system-riscv64)\n- [A nightly Rust toolchain](https://rustup.rs/)\n\nThe makefile is split into multiple levels to clearly separate scripts,\nbut most important commands can be run from the project root.\n\n- `make kernel` builds the kernel.\n- `make mkfs` builds `mkfs`, the tool to help create the file system image.\n- `make fs.img` uses `mkfs` to build the file system image.\n- `make qemu` builds the kernel and file system, and then runs it in QEMU.\n- `make clean` removes built artifacts, including from Rust.\n\n## Contributing\n\nPull requests will be ignored.\n\n## Authors and acknowledgements\n\nRewrite:\n\n- Garen Tyler \\\u003c\u003cgarentyler@garen.dev\u003e\u003e\n\nSource:\n\n\u003e xv6 is inspired by John Lions's Commentary on UNIX 6th Edition (Peer\n\u003e to Peer Communications; ISBN: 1-57398-013-7; 1st edition (June 14,\n\u003e 2000)).  See also https://pdos.csail.mit.edu/6.1810/, which provides\n\u003e pointers to on-line resources for v6.\n\u003e \n\u003e The following people have made contributions: Russ Cox (context switching,\n\u003e locking), Cliff Frey (MP), Xiao Yu (MP), Nickolai Zeldovich, and Austin\n\u003e Clements.\n\u003e \n\u003e We are also grateful for the bug reports and patches contributed by\n\u003e Takahiro Aoyagi, Silas Boyd-Wickizer, Anton Burtsev, carlclone, Ian\n\u003e Chen, Dan Cross, Cody Cutler, Mike CAT, Tej Chajed, Asami Doi,\n\u003e eyalz800, Nelson Elhage, Saar Ettinger, Alice Ferrazzi, Nathaniel\n\u003e Filardo, flespark, Peter Froehlich, Yakir Goaron, Shivam Handa, Matt\n\u003e Harvey, Bryan Henry, jaichenhengjie, Jim Huang, Matúš Jókay, John\n\u003e Jolly, Alexander Kapshuk, Anders Kaseorg, kehao95, Wolfgang Keller,\n\u003e Jungwoo Kim, Jonathan Kimmitt, Eddie Kohler, Vadim Kolontsov, Austin\n\u003e Liew, l0stman, Pavan Maddamsetti, Imbar Marinescu, Yandong Mao, Matan\n\u003e Shabtay, Hitoshi Mitake, Carmi Merimovich, Mark Morrissey, mtasm, Joel\n\u003e Nider, Hayato Ohhashi, OptimisticSide, Harry Porter, Greg Price, Jude\n\u003e Rich, segfault, Ayan Shafqat, Eldar Sehayek, Yongming Shen, Fumiya\n\u003e Shigemitsu, Cam Tenny, tyfkda, Warren Toomey, Stephen Tu, Rafael Ubal,\n\u003e Amane Uehara, Pablo Ventura, Xi Wang, WaheedHafez, Keiichi Watanabe,\n\u003e Nicolas Wolovick, wxdao, Grant Wu, Jindong Zhang, Icenowy Zheng,\n\u003e ZhUyU1997, and Zou Chang Wei.\n\n## License\n\nAll code written by me in this project is [LGPLv3](https://choosealicense.com/licenses/lgpl-3.0/) licensed.\nAny existing code appears to be under the [MIT](https://choosealicense.com/licenses/mit/) license.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarentyler%2Fxv6-riscv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgarentyler%2Fxv6-riscv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgarentyler%2Fxv6-riscv/lists"}