{"id":13710890,"url":"https://github.com/b0bleet/zvisor","last_synced_at":"2026-01-18T04:56:42.375Z","repository":{"id":142750699,"uuid":"613223749","full_name":"b0bleet/zvisor","owner":"b0bleet","description":"Zig-based Hypervisor","archived":false,"fork":false,"pushed_at":"2024-08-13T06:56:39.000Z","size":128,"stargazers_count":120,"open_issues_count":1,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-08-13T08:06:42.818Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Zig","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/b0bleet.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":"2023-03-13T06:36:35.000Z","updated_at":"2024-08-13T06:56:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"0971dada-ed94-42c2-8e12-c0ad9a407e68","html_url":"https://github.com/b0bleet/zvisor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0bleet%2Fzvisor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0bleet%2Fzvisor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0bleet%2Fzvisor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/b0bleet%2Fzvisor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/b0bleet","download_url":"https://codeload.github.com/b0bleet/zvisor/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224528259,"owners_count":17326325,"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":[],"created_at":"2024-08-02T23:01:01.910Z","updated_at":"2026-01-18T04:56:42.358Z","avatar_url":"https://github.com/b0bleet.png","language":"Zig","readme":"# Zvisor\n\n\u003cp align=\"center\"\u003e\n    \u003cimg  src=\"/.github/images/linuxboot.png\"\n      width=\"800\" border=\"0\" alt=\"zvisor\"\u003e\n\u003c/p\u003e\n\nZvisor is an open-source hypervisor written in the Zig programming language, which provides a modern and efficient approach to systems programming. Zvisor leverages the KVM (Kernel-based Virtual Machine) virtualization technology, which is built into the Linux kernel, to provide a lightweight and flexible virtualization solution.\n\nOne of the key benefits of Zvisor is its use of the Zig programming language. Zig provides a modern and efficient approach to systems programming, with features like memory safety, error handling, and compile-time optimization.\n\n## Getting Started\n\nTo get started with the hypervisor, you will need to have Zig (\u003e= 0.11.0) installed on your system. Once you have Zig installed, you can build the hypervisor using the following commands:\n\n```bash\ngit clone https://github.com/b0bleet/zvisor.git\ncd zvisor\nzig build\n```\nThis will build the hypervisor and create a binary (`./zig-out/bin/zvisor`) that you can use to start the hypervisor.\n\nZvisor uses qboot minimal x86 firmware to boot the Linux kernel that's why you have to build qboot before running hypervisor. qboot does PCI setup, IDT setup, E820 table extraction, ACPI tables extraction etc.\n```\ngit clone https://github.com/b0bleet/qboot\nmeson build \u0026\u0026 ninja -C build\n```\n\n## Running Zvisor\nTo run Zvisor, you'll need to specify the path to the kernel file, the amount of memory to allocate to the virtual machine, and the initrd file to use.\nHere's an example command to run a virtual machine with 2GB of memory:\n```bash\n./zig-out/bin/zvisor --firmware ./qboot/build/bios.bin \\\n                      --kernel ./bzImage \\\n                      --cmdline 'console=ttyS0,115200,8n1 noapic' \\\n                      --initrd ./initrd \\\n                      --memory 1G\n```\n`noapic` option should be passed because, at the moment, Zvisor only supports in-kernel PIC emulation.\n\n## initrd file\nAn initrd (initial RAM disk) file is a temporary root filesystem that is loaded into memory when the system boots. It's used by the Linux kernel to perform initial tasks like loading necessary drivers, mounting the actual root filesystem, and other early boot tasks. Use BusyBox To generate an initrd file.\n","funding_links":[],"categories":["Systems Programming"],"sub_categories":["Operating Systems"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb0bleet%2Fzvisor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fb0bleet%2Fzvisor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fb0bleet%2Fzvisor/lists"}