{"id":21437067,"url":"https://github.com/tandasat/barevisor","last_synced_at":"2025-04-04T07:04:16.142Z","repository":{"id":247988715,"uuid":"779703645","full_name":"tandasat/barevisor","owner":"tandasat","description":"A bare minimum hypervisor on AMD and Intel processors for learners.","archived":false,"fork":false,"pushed_at":"2025-02-23T18:20:54.000Z","size":11894,"stargazers_count":258,"open_issues_count":0,"forks_count":12,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-27T03:12:24.647Z","etag":null,"topics":["amd","hypervisor","intel"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tandasat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":"2024-03-30T14:50:52.000Z","updated_at":"2025-03-24T18:07:21.000Z","dependencies_parsed_at":"2024-07-11T19:04:22.734Z","dependency_job_id":"5e9f8c0e-b4a2-4579-a6c4-39ee121ebb1a","html_url":"https://github.com/tandasat/barevisor","commit_stats":null,"previous_names":["tandasat/barevisor"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2Fbarevisor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2Fbarevisor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2Fbarevisor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tandasat%2Fbarevisor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tandasat","download_url":"https://codeload.github.com/tandasat/barevisor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247135139,"owners_count":20889420,"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":["amd","hypervisor","intel"],"created_at":"2024-11-23T00:17:36.752Z","updated_at":"2025-04-04T07:04:16.123Z","avatar_url":"https://github.com/tandasat.png","language":"Rust","readme":"# Barevisor\n\nA bare minimum hypervisor on AMD and Intel processors for learners.\n\n\n## Features\n\n- ✅ Uses stable Rust🦀\n- ✅ Covers both AMD and Intel processors\n- ✅ Compiles into UEFI and Windows drivers\n- ✅ Runs on Bochs and VMware with one shortcut key\n- ✅ Supports select hardware models\n- ✅ Builds on 🪟Windows, 🍎macOS and 🐧Ubuntu\n- ✅ Comes with extensive comments\n\n\n## Motivation\n\nThe primary goal of this project is to explore the possibilities of writing a hypervisor in stable Rust and designs to abstract differences between AMD-vs-Intel and UEFI-vs-Windows.\n\nAs a secondary goal, it aims to be an additional resource for learning how hardware-assisted virtualization technologies on x86 work and can be used to \"hyperjack\" UEFI and Windows.\n\n\n## Package organization\n\nThe project contains two workspaces: `src/windows/` and `src/uefi/`, building the hypervisor as a Windows kernel driver and UEFI driver, respectively. Both workspaces depend on `src/hvcore/`, the core, OS agnostic hypervisor implementation as illustrated below:\n\n```\n    windows --\\\n               +-- (links) --\u003e hvcore\n    uefi -----/\n```\n\nYou can build `src/windows/` only on Windows, while `src/uefi/` is cross-platform:\n\n| Dev. env. | `src/windows/` | `src/uefi/` |\n|-----------|----------------|-------------|\n| Windows   | ✅            | ✅          |\n| Ubuntu    | ❌            | ✅          |\n| macOS     | ❌            | ✅          |\n\nSee [windows/README.md](src/windows/README.md) and [uefi/README.md](src/uefi/README.md)\nfor detailed build and test instructions.\n\n\n## Acknowledgement\n\n[memN0ps](https://github.com/memN0ps)'s Rust hypervisor projects substantially inspired and helped me get started with this work. I encourage you to study those projects as additional resources. Some code in the Barevisor project is heavily influenced by and may even be copied from their work even though it is not mentioned at each place.\n\n\n## Non-goals\n\nThis project is optimized for the above-mentioned goals, and thus, features some might expect or think to be essential are missing, for example:\n\n- Security\n\n    Barevisor does not attempt to protect itself from the guest or DMA. The Windows version even depends on the guest-controlled memory.\n\n- Useful functionality\n\n    The only functionality Barevisor offers is hypervisor name reporting via the CPUID instruction. It provides no feature like guest inspection or hardening.\n\n- Greater compatibility\n\n    Barevisor's primary functional goal is to hyperjack and boot UEFI and Windows on VMware, Bochs, and select hardware models. It handles other scenarios only when implementation is simple enough.\n\nHaving written hypervisors many times for teaching, it is fair to say that one of the most challenging parts of learning hardware-assisted virtualization technologies is getting started and understanding the foundation. As you get through this phase, learn the building blocks, and be motivated, it is easier to start working on covering the listed missing features as you need.\n\nIf you wish to learn more about those missing features, ask me questions or for further learning references. I also offer a [4-day long training course](https://tandasat.github.io/) covering many of those in depth.\n\n\n## Supported hardware models\n\n- Intel: [11TNHi5 Full with 9-pin to DE-9P](https://simplynuc.com/product/nuc11tnhi5-full/)\n- AMD: [LLM1v6SQ](https://simplynuc.com/product/llm1v6sq/)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftandasat%2Fbarevisor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftandasat%2Fbarevisor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftandasat%2Fbarevisor/lists"}