{"id":16333270,"url":"https://github.com/mic92/vmsh","last_synced_at":"2025-08-22T07:31:16.833Z","repository":{"id":36965104,"uuid":"339087857","full_name":"Mic92/vmsh","owner":"Mic92","description":"Shell into a virtualized linux, with your own tools ","archived":false,"fork":false,"pushed_at":"2024-05-08T18:01:49.000Z","size":1666,"stargazers_count":135,"open_issues_count":21,"forks_count":7,"subscribers_count":6,"default_branch":"main","last_synced_at":"2024-10-11T23:34:43.924Z","etag":null,"topics":["hacktoberfest"],"latest_commit_sha":null,"homepage":"https://vmsh.thalheim.io","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/Mic92.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":"2021-02-15T13:33:10.000Z","updated_at":"2024-10-09T01:04:02.000Z","dependencies_parsed_at":"2023-02-18T21:31:16.129Z","dependency_job_id":"864749c6-9aad-4cc7-a3c4-f6d512a2e62f","html_url":"https://github.com/Mic92/vmsh","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mic92%2Fvmsh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mic92%2Fvmsh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mic92%2Fvmsh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Mic92%2Fvmsh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Mic92","download_url":"https://codeload.github.com/Mic92/vmsh/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230568591,"owners_count":18246378,"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":["hacktoberfest"],"created_at":"2024-10-10T23:35:09.791Z","updated_at":"2024-12-20T10:09:02.870Z","avatar_url":"https://github.com/Mic92.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vmsh\n\nLightweight virtual machines (VMs) are prominently adopted for improved\nperformance and dependability in cloud envi- ronments. To reduce boot up times\nand resource utilisation, they are usually “pre-baked\" with only the minimal\nkernel and userland strictly required to run an application. This in- troduces a\nfundamental trade-off between the advantages of lightweight VMs and available\nservices within a VM, usually leaning towards the former.  We propose VMSH, a\nhypervisor-agnostic abstraction that enables on-demand attachment of services to\na running VM— allowing developers to provide minimal, lightweight images without\ncompromising their functionality. The additional applications are made available\nto the guest via a file system image. To ensure that the newly added services do\nnot affect the original applications in the VM, VMSH uses lightweight isolation\nmechanisms based on containers.  We evaluate VMSH on multiple KVM-based\nhypervisors and Linux LTS kernels and show that: (i) VMSH adds no overhead for\nthe applications running in the VM, (ii) de-bloating im- ages from the Docker\nregistry can save up to 60% of their size on average, and (iii) VMSH enables\ncloud providers to offer services to customers, such as recovery shells, without\ninterfering with their VM’s execution.\n\n# Reproducing the paper results\n\nVMSH was published in Eurosys 2022. To reproduce the results shown in the\nevaluation of the paper, we provide [dedicated documentation](EVALUATION.md).\n\n# Usage\n\n- Run `just pts` in one terminal to get a `/dev/pts/x`.\n- Run `just qemu` in another terminal to spawn a VM.\n- Run `just attach-qemu-sh /dev/pts/x` in another terminal to attach the first terminal to the shell which is spawned into the VM.\n\n\n# Related work\n\nBuild small vm images with [microvm.nix](https://github.com/astro/microvm.nix)\n\n# Referencing our work\n\nVMSH: Hypervisor-agnostic Guest Overlays for VMs  \n_Jörg Thalheim, Peter Okelmann, Harshavardhan Unnibhavi, Redha Gouicem, Pramod Bhatotia_  \n**EUROSYS 2022**  \n[[Paper](https://vmsh.thalheim.io/pdfs/vmsh_eurosys22.pdf)]\n\n```\n@inproceedings{DBLP:conf/eurosys/ThalheimOUGB22,\n  author    = {J{\\\"{o}}rg Thalheim and\n               Peter Okelmann and\n               Harshavardhan Unnibhavi and\n               Redha Gouicem and\n               Pramod Bhatotia},\n  title     = {{VMSH:} hypervisor-agnostic guest overlays for VMs},\n  booktitle = {EuroSys},\n  pages     = {678--696},\n  publisher = {{ACM}},\n  year      = {2022}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmic92%2Fvmsh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmic92%2Fvmsh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmic92%2Fvmsh/lists"}