├── .github └── FUNDING.yml ├── LICENSE ├── QuickVM.glade ├── README.md ├── docs ├── _config.yml ├── diy-vm.md ├── img │ ├── advanced-setup.png │ ├── asus-b450-1.jpg │ ├── asus-b450-2.jpg │ ├── asus-b450-3.jpg │ ├── asus-b450-4.jpg │ ├── asus-laptop-intel1.jpg │ ├── asus-laptop-intel2.jpg │ ├── booting-iso.png │ ├── coreboot-1.jpg │ ├── coreboot-2.jpg │ ├── diy-create-1.png │ ├── diy-create-10.png │ ├── diy-create-11.png │ ├── diy-create-12.png │ ├── diy-create-13.png │ ├── diy-create-14.png │ ├── diy-create-2.png │ ├── diy-create-3.png │ ├── diy-create-4.png │ ├── diy-create-5.png │ ├── diy-create-6.png │ ├── diy-create-7.png │ ├── diy-create-8.png │ ├── diy-create-9.png │ ├── first-boot.png │ ├── hyper-v-enable.png │ ├── install-1.png │ ├── install-10.png │ ├── install-11.png │ ├── install-12.png │ ├── install-2.png │ ├── install-3.png │ ├── install-4.png │ ├── install-5.png │ ├── install-6.png │ ├── install-7.png │ ├── install-8.png │ ├── install-9.png │ ├── mux-laptop.jpg │ ├── quick-vm-icon.svg │ ├── quick-vm.svg │ ├── quickvm1.png │ ├── quickvm2.png │ ├── virsh-list.png │ ├── vm-profile.png │ └── windows-features.png ├── installing-windows-vm.md ├── list-things-todo.md ├── more-credits.md └── stealth-vm.md ├── kvm ├── ARCH │ ├── Windows10-Stealth-amd.xml │ ├── Windows10-Stealth-intel.xml │ ├── Windows10-default.xml │ ├── Windows10-highend.xml │ └── Windows10-light.xml ├── DEBIAN │ ├── Windows10-Stealth-amd.xml │ ├── Windows10-Stealth-intel.xml │ ├── Windows10-default.xml │ ├── Windows10-highend.xml │ └── Windows10-light.xml ├── FEDORA │ ├── Windows10-Stealth-amd.xml │ ├── Windows10-Stealth-intel.xml │ ├── Windows10-default.xml │ ├── Windows10-highend.xml │ └── Windows10-light.xml ├── LEGACY │ ├── Windows10-Default.xml │ ├── Windows10-Highend.xml │ ├── Windows10-Light.xml │ ├── Windows10-Stealth-amd.xml │ ├── Windows10-Stealth-intel.xml │ ├── test-intel.xml │ └── win-vm.xml.bak ├── Windows10Vanilla.qcow2 └── essentials.iso ├── one-liner.sh └── quick-vm.py /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # 4 | patreon: thegamerhat 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: thegamerhat 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: ["https://paypal.me/gamerhat18"] 13 | -------------------------------------------------------------------------------- /QuickVM.glade: -------------------------------------------------------------------------------- 1 | 2 | 22 | 23 | 24 | 25 | 26 | False 27 | center 28 | 29 | 30 | button 31 | True 32 | True 33 | True 34 | 35 | 36 | 37 | 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![GitHub](https://img.shields.io/badge/Quick-VM-brightgreen?style=for-the-badge&logo=Material-Design-Icons&logoColor=white)](https://github.com/gamerhat18/Quick-VM/) 2 | ![Arch](https://img.shields.io/badge/Arch-blue?style=for-the-badge&logo=Arch-Linux&logoColor=white) 3 | ![Fedora](https://img.shields.io/badge/Fedora-blue?style=for-the-badge&logo=Fedora&logoColor=white&color=294172) 4 | ![Debian](https://img.shields.io/badge/Debain-red?style=for-the-badge&logo=Debian&logoColor=white&color=A81D33) 5 | ![Ubuntu](https://img.shields.io/badge/Ubuntu-orange?style=for-the-badge&logo=Ubuntu&logoColor=white&color=E95420) 6 | ![Terminal](https://img.shields.io/badge/Terminal-black?style=for-the-badge&logo=Windows-Terminal&logoColor=white&color=4D4D4D) 7 | ![Windows](https://img.shields.io/badge/Windows-blue?style=for-the-badge&logo=Windows&logoColor=white&color=0078D6) 8 | 9 | 10 |

Quick VM [ALPHA]

11 | 12 | ### - New GUI is in progress [here](https://github.com/thegamerhat/quick-vm-app) (***private repo***) 13 | 14 | --- 15 | 16 | **Setup a Windows VM on Linux in under 100 seconds with just one command**, with Virtualization enabled (see [how-to](https://github.com/thegamerhat/quick-vm/blob/main/docs/diy-vm.md#enabling-virtualization-in-your-ueficoreboot)) 17 | 18 | > It is possible to invent a single machine which can be used to compute any computable sequence. 19 | > 20 | > ~ _Alan Turing, 1936_ 21 | 22 | # 🚀 Getting Started 23 | 24 | ### ➊ Getting ISOs Ready 25 | 26 | 1. **Download** [Windows 10](https://www.microsoft.com/en-us/software-download/windows10ISO) or [Windows 11](https://www.microsoft.com/en-us/software-download/windows11), **along with** [VirtIO Drivers (Stable)](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso) 27 | 28 | 2. **Place the ISOs in either** `~/WindowsVM/` **or** `/var/lib/libvirt/images/`. 29 | 30 | 3. **Rename the ISOs as shown below:** 31 | - **Windows 10/11 ISO** ➜ `win.iso` 32 | - **VirtIO Drivers** ➜ `virtio-win.iso` 33 | 34 | > **UPDATE:** Windows 11 has been tested and works just as well, and the support will be added soon! 35 | 36 | 4. **Enter the command shown below in the terminal.** 37 | 38 | ### ➋ One-liner to Setup KVM 39 | 40 | #### _Paste this in your terminal_ 41 | 42 | 46 | ```bash 47 | bash <(wget -qO- https://git.io/JOeOs) 48 | ``` 49 | 50 | > Here is the [Script](https://github.com/thegamerhat/quick-vm/blob/main/one-liner.sh) 51 | 52 | ### ➌ Installing Windows with VirtIO: 53 | 54 | [Step by Step Guide - Click Me!](docs/installing-windows-vm.md) 55 | 56 | ### 🎉 That's it, You have successfully created a VM! 57 | 58 | --- 59 | 60 |

61 |

62 | 🖥 Host System Requirements: 63 |
64 | 65 | - **Ubuntu 18.04** or newer 66 | - **Fedora 30** or newer 67 | - **Arch** (Read this [Guide by LinuxHint](https://linuxhint.com/install_configure_kvm_archlinux) for permissions and User Group setting) 68 | - **4 CPU Threads** (2 Multi-Threaded Cores at minimum) 69 | - **8 GiB Memory** (more = better) 70 | - **40+ GiB of Free Storage** typically (**SSD Recommened**) 71 |
72 |
73 |

74 | 75 | > **Linux Kernel 5.4 LTS** or newer is recommended 76 | 77 |

78 |

79 | Default specs of the VM 80 |
81 | 82 | **CPU**: 4 vCPUs Allocated 83 | 84 | **GPU**: VirtIO or [VFIO GPU Passthrough - ArchWiki](https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF) or [Single-GPU-Passthrough](https://github.com/joeknock90/Single-GPU-Passthrough) 85 | 86 | **Memory**: Total 6 GiB, 1 GiB Allocated initially 87 | 88 | **Storage Drive**: 1 TB VirtIO Disk (Dynamically Allocated) 89 | 90 | **DVD Drive**: Windows ISO 91 | 92 | **Other Drives**: VirtIO Drivers ISO, Essential Tools ISO (to optimize VM performance) 93 | 94 | **Network Card**: VirtIO (Recommended Disabled until debloated) 95 |
96 |
97 |

98 | 99 | ## ⚔️ Advanced Install 100 | 101 | ### 🔖 [DIY VM (Everything From Scratch + GPU Passthrough)](docs/diy-vm.md) 102 | 103 | ### 🔖 [Making a Stealth VM (Always being Updated)](docs/stealth-vm.md) 104 | 105 |

106 |

107 | 📍 Check KVM Compatibility 108 |
109 | 110 | 1. Checks if `AMD-V` or `VT-d`/`VT-x` is supported on your AMD/Intel CPU. 111 | 2. Checks if kvm is enabled using `virt-host-validate`.
112 |
113 |

114 | 115 |

116 |

117 | 📍 Install required packages 118 |
119 | 120 | - Updates repositories (Debian and Fedora only) and installs required packages. 121 | 122 | ``` 123 | # Debian 124 | sudo apt update -q && sudo apt install -y qemu qemu-kvm libvirt-bin libvirt-daemon libvirt-clients bridge-utils virt-manager 125 | 126 | # Fedora 127 | sudo dnf -y install qemu-kvm libvirt bridge-utils virt-install virt-manager 128 | 129 | # Arch 130 | sudo pacman -S --noconfirm qemu libvirt bridge-utils edk2-ovmf vde2 ebtables dnsmasq openbsd-netcat virt-manager 131 | ``` 132 |
133 |
134 |

135 | 136 |

137 |

138 | 📍 Enable Libvirt Service & Virtual Networking 139 |
140 | 141 | **Executes the following commands only if systemd is present and running.** 142 | 143 | ``` 144 | # Libvirt service and socket 145 | sudo systemctl enable --now libvirtd 146 | 147 | # Virtlogd 148 | sudo systemctl enable --now virtlogd 149 | 150 | # Virtual Networking 151 | sudo virsh net-autostart default 152 | sudo virsh net-start default 153 | ``` 154 |
155 |
156 |

157 | 158 |

159 |

160 | 📍 Locate ISOs 161 |
162 | 163 | 1. Checks if `win10.iso` and `virtio-win.iso` exist in ~/WindowsVM or /var/lib/libvirt/images 164 | 2. Uses `rsync` to copy the ISOs to /var/lib/libvirt/images (_$HOME subdirectories might cause permission issues_) 165 | 166 |
167 |
168 |

169 | 170 |

171 |

172 | 📍 Selecting a VM Profile 173 |
174 | 175 | ### 1. Serious Business 176 | 177 | Ideal for Gaming, Content Creation and other heavy duty applications. 178 | 179 | **Adobe Creative Cloud** 180 | 181 | **3d Printing Software**: CHITUBOX 182 | 183 | **360 Photo/Video Software**: VeeR Editor 184 | 185 | |Part|Specification| 186 | | --- | --- | 187 | |CPU|6 vCPU| 188 | |Memory|8 GiB| 189 | |Storage|1 TiB| 190 | 191 | ### 2. Decently Powerful [Default] 192 | 193 | Ideal for Office 365, and some light Photoshop. 194 | 195 | |Part|Specification| 196 | | --- | --- | 197 | |CPU|4 vCPU| 198 | |Memory|6 GiB| 199 | |Storage|1 TiB| 200 | 201 | ### 3. Lightweight and Barebones 202 | 203 | Ideal for basic stuff that requires Windows. 204 | 205 | **Printer Software, CNC Application** 206 | 207 | **Tax Software in Banks** 208 | 209 | |Part|Specification| 210 | | --- | --- | 211 | |CPU|2 vCPU| 212 | |Memory|4 GiB| 213 | |Storage|1 TiB| 214 | 215 | ### 4. Stealth VM (Beta) 216 | 217 | Ideal for DRM/Anticheat Programs like **Valorant**, **Rainbow Six: Siege** 218 | 219 | |Part|Specification| 220 | | --- | --- | 221 | |CPU|4 vCPU| 222 | |Memory|8 GiB| 223 | |Storage|1 TiB| 224 | 225 | 226 |
227 |
228 |

229 | 230 |

231 |

232 | 📍 Reload KVM Kernel Modules 233 |
234 | 235 | If `kvm` is enabled correctly, then executes the following commands depending upon the CPU. 236 | 237 | ``` 238 | # AMD 239 | sudo modprobe -r kvm_amd kvm # safely unloads the modules 240 | sudo modprobe kvm # enables kvm first 241 | sudo modprobe kvm_amd nested=1 # then kvm_amd module with nested enabled 242 | 243 | # INTEL 244 | sudo modprobe -r kvm_intel kvm # safely unloads the modules 245 | sudo modprobe kvm # enables kvm first 246 | sudo modprobe kvm_intel nested= # then kvm_intel module with nested enabled 247 | ``` 248 |
249 |
250 |

251 | 252 | ## Some more useful stuff 253 | 254 | - **[Looking Glass](https://looking-glass.io)** by Wendell from [Level1Techs](https://www.youtube.com/channel/UC4w1YQAJMWOz4qtxinq55LQ) 255 | 256 | - **[VFIO on Pop! OS](https://forum.level1techs.com/t/vfio-in-2019-pop-os-how-to-general-guide-though-draft/142287)** 257 | 258 | - **Single GPU Passthrough**: 259 | - [SomeOrdinaryGamers' Video Guide (NVIDIA)](https://youtube.com/watch?v=BUSrdUoedTo) 260 | - [joeknock90 Central Repository](https://github.com/joeknock90/Single-GPU-Passthrough) 261 | - [Stetsed NVIDIA Guide](https://github.com/Stetsed/NVIDIA-Single-GPU-Passthrough) 262 | - [ledisthebest (Ryzen + Radeon)](https://github.com/ledisthebest/LEDs-single-gpu-passthrough) 263 | 264 | - **NVIDIA GPU Passthrough**: 265 | - [clayfreeman](https://clayfreeman.github.io/gpu-passthrough/) 266 | - [SomeOrdinaryGamers' Single GPU Passhrough Video (NVIDIA)](https://youtube.com/watch?v=h7SG7ccjn-g) 267 | 268 | - **Intel iGPU Passthrough** - [Lan Tian](https://lantian.pub/en/article/modify-computer/laptop-intel-nvidia-optimus-passthrough.lantian/) 269 | 270 | ## 🎁 Contribute/Help 271 | 272 | **Stuff changes all the time, and I can only do so much.** 273 | 274 | **If you want to help, THANK YOU, that will be wonderful!** 💜 275 | 276 | **This project is aimed at making a Windows VM for gaming/content creation, paired with [WinApps](https://github.com/Fmstrat/winapps/) to make it easier for people to switch to Linux while still being able to use their Adobe CC apps, MS Office, Play Games etc.** 277 | 278 | Here's a [list of things](https://github.com/thegamerhat/quick-vm/blob/main/docs/list-things-todo.md) that will make this project way better! 279 | 280 | > Now that [NVIDIA has enabled GPU Passthrough for Windows based Virtual Machines](https://nvidia.custhelp.com/app/answers/detail/a_id/5173) (no more Code 43!), this project will also include easy setup and configuration for passing through NVIDIA GPUs in KVM and interfacing Windows apps from linux via [WinApps](https://github.com/Fmstrat/winapps/). 281 | > 282 | > Till then, read [Arch Wiki - PCI Passthrough](https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF) and [this](https://github.com/thegamerhat/quick-vm#some-more-useful-stuff). 283 | 284 | ## 📣 Credits 285 | 286 | - **The Entire [r/VFIO](https://reddit.com/r/vfio) Community!** 287 | - **Wendell** from [Level1Techs](https://www.youtube.com/user/teksyndicate) 288 | - **SomeOrdinaryGamers** - For [Video guide](https://youtube.com/watch?v=BUSrdUoedTo) 289 | - **Zeptic** - For [Stealth VM stuff](https://youtube.com/watch?v=VKh2eKPnmXs) 290 | - **joeknock90** (and everyone mentioned in their [repository](https://github.com/joeknock90/Single-GPU-Passthrough)) - For Single GPU Passthrough Central Point 291 | - [**More Credits...**](docs/more-credits.md) 292 | 293 | ## Support 294 | 295 | [![ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/T6T47FIA1) 296 | 297 | [![PayPal.Me](https://img.shields.io/badge/PayPal-%23FFFFFF.svg?&style=for-the-badge&logo=paypal)](https://paypal.me/gamerhat18) 298 | 299 | ## 📬 Facing Issues? Contact me 300 | 301 | ![visitors](https://visitor-badge.glitch.me/badge?page_id=gamerhat18.quick-vm) 302 | 303 | [![Telegram](https://img.shields.io/badge/Telegram-%2326A5E4.svg?&style=for-the-badge&logo=telegram&logoColor=white)](https://t.me/thegamerhat) 304 | 305 | [![Mail Me](https://img.shields.io/badge/Gmail-%23EA4335.svg?&style=for-the-badge&logo=gmail&logoColor=white)](mailto:gamerhat18@gmail.com) 306 | 307 | [![Secure Mail Me](https://img.shields.io/badge/ProtonMail-%23663399.svg?&style=for-the-badge&logo=proton-mail&logoColor=white)](mailto:thegamerhat@protonmail.com) 308 | 309 | [![GitHub](https://img.shields.io/badge/GitHub-%23181717.svg?&style=for-the-badge&logo=github&logoColor=white)](https://github.com/thegamerhat) 310 | 311 | [![Twitter](https://img.shields.io/badge/Twitter-%231DA1F2.svg?&style=for-the-badge&logo=twitter&logoColor=white)](https://twitter.com/thegamerhat) 312 | 313 | [![Instagran](https://img.shields.io/badge/Instagram-%23E4405F.svg?&style=for-the-badge&logo=instagram&logoColor=white)](https://instagram.com/thegamerhat) 314 | 315 | -------------------------------------------------------------------------------- /docs/_config.yml: -------------------------------------------------------------------------------- 1 | theme: jekyll-theme-hacker -------------------------------------------------------------------------------- /docs/img/advanced-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/advanced-setup.png -------------------------------------------------------------------------------- /docs/img/asus-b450-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/asus-b450-1.jpg -------------------------------------------------------------------------------- /docs/img/asus-b450-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/asus-b450-2.jpg -------------------------------------------------------------------------------- /docs/img/asus-b450-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/asus-b450-3.jpg -------------------------------------------------------------------------------- /docs/img/asus-b450-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/asus-b450-4.jpg -------------------------------------------------------------------------------- /docs/img/asus-laptop-intel1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/asus-laptop-intel1.jpg -------------------------------------------------------------------------------- /docs/img/asus-laptop-intel2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/asus-laptop-intel2.jpg -------------------------------------------------------------------------------- /docs/img/booting-iso.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/booting-iso.png -------------------------------------------------------------------------------- /docs/img/coreboot-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/coreboot-1.jpg -------------------------------------------------------------------------------- /docs/img/coreboot-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/coreboot-2.jpg -------------------------------------------------------------------------------- /docs/img/diy-create-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-1.png -------------------------------------------------------------------------------- /docs/img/diy-create-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-10.png -------------------------------------------------------------------------------- /docs/img/diy-create-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-11.png -------------------------------------------------------------------------------- /docs/img/diy-create-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-12.png -------------------------------------------------------------------------------- /docs/img/diy-create-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-13.png -------------------------------------------------------------------------------- /docs/img/diy-create-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-14.png -------------------------------------------------------------------------------- /docs/img/diy-create-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-2.png -------------------------------------------------------------------------------- /docs/img/diy-create-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-3.png -------------------------------------------------------------------------------- /docs/img/diy-create-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-4.png -------------------------------------------------------------------------------- /docs/img/diy-create-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-5.png -------------------------------------------------------------------------------- /docs/img/diy-create-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-6.png -------------------------------------------------------------------------------- /docs/img/diy-create-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-7.png -------------------------------------------------------------------------------- /docs/img/diy-create-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-8.png -------------------------------------------------------------------------------- /docs/img/diy-create-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/diy-create-9.png -------------------------------------------------------------------------------- /docs/img/first-boot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/first-boot.png -------------------------------------------------------------------------------- /docs/img/hyper-v-enable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/hyper-v-enable.png -------------------------------------------------------------------------------- /docs/img/install-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-1.png -------------------------------------------------------------------------------- /docs/img/install-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-10.png -------------------------------------------------------------------------------- /docs/img/install-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-11.png -------------------------------------------------------------------------------- /docs/img/install-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-12.png -------------------------------------------------------------------------------- /docs/img/install-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-2.png -------------------------------------------------------------------------------- /docs/img/install-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-3.png -------------------------------------------------------------------------------- /docs/img/install-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-4.png -------------------------------------------------------------------------------- /docs/img/install-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-5.png -------------------------------------------------------------------------------- /docs/img/install-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-6.png -------------------------------------------------------------------------------- /docs/img/install-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-7.png -------------------------------------------------------------------------------- /docs/img/install-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-8.png -------------------------------------------------------------------------------- /docs/img/install-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/install-9.png -------------------------------------------------------------------------------- /docs/img/mux-laptop.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/mux-laptop.jpg -------------------------------------------------------------------------------- /docs/img/quick-vm-icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 18 | 20 | 26 | 32 | 38 | 44 | 50 | 56 | 62 | 68 | 74 | 80 | 86 | 92 | 98 | 104 | 110 | 116 | 122 | 128 | 134 | 140 | 146 | 152 | 158 | 164 | 170 | 176 | 182 | 188 | 194 | 200 | 206 | 212 | 218 | 224 | 230 | 236 | 242 | 248 | 254 | 260 | 266 | 272 | 275 | 278 | 279 | 287 | 291 | 295 | 299 | 303 | 307 | 308 | 317 | 319 | 323 | 327 | 328 | 337 | 345 | 349 | 350 | 351 | 384 | 386 | 387 | 389 | image/svg+xml 390 | 392 | 393 | 394 | 395 | 396 | 401 | 405 | 415 | 418 | 428 | 438 | 439 | 440 | 441 | 442 | -------------------------------------------------------------------------------- /docs/img/quickvm1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/quickvm1.png -------------------------------------------------------------------------------- /docs/img/quickvm2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/quickvm2.png -------------------------------------------------------------------------------- /docs/img/virsh-list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/virsh-list.png -------------------------------------------------------------------------------- /docs/img/vm-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/vm-profile.png -------------------------------------------------------------------------------- /docs/img/windows-features.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/thecmdrunner/quick-vm/49be271dd05f1efc139c4c83dd9fe4c5b9ac87e8/docs/img/windows-features.png -------------------------------------------------------------------------------- /docs/installing-windows-vm.md: -------------------------------------------------------------------------------- 1 | # 🗔 Installing Windows on a VM 2 | 3 | ### Please follow along the steps below to get the VM ready. 4 | 5 | + Open **Virtual Machine Manager** and Start the **Windows VM** 6 | 7 | > If you encounter an OVMF/edk2 problem, check out [OVMF Fix](https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Cannot_boot_after_upgrading_ovmf) 8 | > 9 | > **Or you can enter the following command in terminal (only applicable this VM)** 10 | > 11 | > Ubuntu/Debian ➜ `sudo cp /usr/share/OVMF/OVMF_CODE.fd /var/lib/libvirt/qemu/nvram/Windows10-default_VARS.fd ` 12 | > 13 | > Fedora ➜ `sudo cp /usr/share/edk2/ovmf/OVMF_CODE.fd /var/lib/libvirt/qemu/nvram/Windows10-default_VARS.fd` 14 | > 15 | > Arch ➜ `sudo cp /usr/share/ovmf/x64/OVMF_VARS.fd /var/lib/libvirt/qemu/nvram/Windows10-default_VARS.fd` 16 | 17 | + Click inside the VM Window and press any key when asked. 18 | 19 | ![Screenshot](img/first-boot.png) 20 | 21 | ![Screenshot](img/booting-iso.png) 22 | 23 | + Select your language and keyboard input and click Next. 24 | 25 | ![Screenshot](img/install-1.png) 26 | 27 | ![Screenshot](img/install-2.png) 28 | 29 | + Enter your product key now, or you can skip and enter your product key after installation. 30 | 31 | ![Screenshot](img/install-3.png) 32 | 33 | + Selecting **Windows 10 Pro N** will install **Windows 10 Pro** without extra bloat. 34 | > Note: Choose Windows 10 Pro XXX or Enterprise if you need Hyper-V for Stealth VM. 35 | 36 | ![Screenshot](img/install-4.png) 37 | 38 | ![Screenshot](img/install-5.png) 39 | 40 | + Select **Custom Install** (because the other one is useless) 41 | 42 | ![Screenshot](img/install-6.png) 43 | 44 | + Click on **Load Driver** to install disk drivers. 45 | 46 | ![Screenshot](img/install-7.png) 47 | 48 | ![Screenshot](img/install-8.png) 49 | 50 | + Double-Click on **CD Drive virtio-win** ➜ **amd64** ➜ **w10** and click **OK**. 51 | 52 | ![Screenshot](img/install-9.png) 53 | 54 | + Just click N**ext** to select the default one. 55 | 56 | ![Screenshot](img/install-10.png) 57 | 58 | + Select `Unallocated Space` and click **Next** to begin the installation. 59 | 60 | ![Screenshot](img/install-11.png) 61 | 62 | ![Screenshot](img/install-12.png) 63 | 64 | ### 🎉 That's it, You have successfully installed Windows! 65 | -------------------------------------------------------------------------------- /docs/list-things-todo.md: -------------------------------------------------------------------------------- 1 | 2 | ## 🔌 TODO-notes (no particular order) 3 | 4 | - Make a more functional VM with optimizations, and VM specific stuff such as: 5 | - Adding a virtual sound card for passing through microphone from your Linux host. [Video tutorial](https://www.youtube.com/watch?v=AfUgNEOx3uk) by Pavol Elsig 6 | - Looking Glass? https://www.youtube.com/watch?v=wEhvQEyiOwI&t=2s 7 | - GPU passthrough? Parsec for gaming? Intel iGPU passthrough: https://www.youtube.com/watch?v=Tt4kHYO1S8U 8 | - Remote desktop 9 | - Remote Apps 10 | - Mouse and KB passthrough using `evdev`: [Video tutorial](https://www.youtube.com/watch?v=4XDvHQbgujI) 11 | - SRIOV for network cards: https://www.youtube.com/watch?v=ltxzUUn1Mg8 12 | - Check all is ok with `kvm-ok` 13 | - Robust CLI 14 | - Use `set -x` to show what commands are being executed when necessary. 15 | - Add more distros support, and a general linux profile 16 | - Maybe add a features section? 17 | - make every define and creation with general command that has `$variables` based on the system and user choice: this might help: https://www.youtube.com/watch?v=9ldC03Mqb0I 18 | - Fork iommu, UEFI, laptop detection, GPU detection and some other features from https://github.com/T-vK/GPU-pass-through-compatibility-check 19 | - Actual CPU Core allocation instead of vCPUs (CPU Pinning): https://www.youtube.com/watch?v=Pb2upx53fUM 20 | - USB_Passthrough guide (maybe also mouse and keyboard passthrough with evdev?) 21 | - convert the xmls into actual defining commands of qemu cli, like: 22 | 23 | ```bash 24 | virt-install --name=linuxconfig-vm \ 25 | --vcpus=$(($(($(nproc)))/2)) \ # Dividing total cpus by half 26 | --memory=4096 \ # MiB 27 | --cdrom=/tmp/Win10.iso \ 28 | --disk size=5 path=$HOME/.local/share/libvirt/images \ # size is in GB 29 | --os-variant=win10 # See command "osinfo-query os" 30 | ``` 31 | Here's a great simple article: https://linuxconfig.org/how-to-create-and-manage-kvm-virtual-machines-from-cli 32 | 33 | Official docs: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/virtualization/chap-virtualization-managing_guests_with_virsh 34 | 35 | 36 | - you'll also likely need `vendor-reset` for cards suffering from the AMD reset bug (RX 5000 and older). 37 | - (maybe?) IOMMU and VFIO 38 | - gotchas section from archwiki pci passthrough 39 | - GPU Passthrough edits in XML for `kvm hidden state` and `vendor_id` 40 | - make use of `hostnamectl` somehow 41 | - Stealth VM notes 42 | - GPU Passthrough options and notes 43 | - AMD GPUs can use `vendor_id="AuthenticAMD"` 44 | - Single GPU Passthrough for NVIDIA and AMD 45 | - Single GPU pass for Intel iGPUs: https://www.youtube.com/watch?v=6-RjFl00QSk 46 | 47 | 48 | ## 🔮 Feature ideas 49 | 50 | - ask user to enter the path to the isos instead of putting it in one folder (just for giving an option to the user) 51 | - Better TUI and CLI design 52 | - ability to make multiple VMs from the same profile. 53 | - Motherboard Compatibility list (based on good IOMMU Groups separation) 54 | -------------------------------------------------------------------------------- /docs/more-credits.md: -------------------------------------------------------------------------------- 1 | # Credits 2 | 3 | ## Icons 4 | 5 | 1. Keyboard icon inspired from [Flat Icons](https://www.flaticon.com/authors/flat-icons) From [Flat Icon](https://www.flaticon.com/) and modified by us. 6 | 7 | 2. Mouse Icon made by [Nhor Phai](https://www.flaticon.com/authors/nhor-phai) From [Flat Icon](https://www.flaticon.com/) and modified by us. 8 | 9 | -------------------------------------------------------------------------------- /docs/stealth-vm.md: -------------------------------------------------------------------------------- 1 | 2 | # 🛡 Making a Stealth VM 3 | 4 | ### This Section is inherently always Work-in-Progress (see [r/VFIO](https://reddit.com/r/VFIO)) 5 | 6 | If you need to mask your VM from checks that a few programs do to restrict users from using certain programs inside a VM for various reasons (like Video Games), then this section is for you. 7 | 8 | #### This method does not support hacking/cheating in video games. 9 | > Do what you want at your own risk, DO NOT blame me if you get your account banned or get yourself caught using a VM. 10 | 11 | ## ⚠️ Things to keep in mind 12 | 13 | 1. Windows 10 Home is not supported as it DOES NOT have the Hyper-V feature unlike Pro and Enterprise. 14 | 2. Visit [r/VFIO](https://reddit.com/r/VFIO) for the latest updates and workarounds for your problems, as this guide is heavily been influenced from the work done by the awesome community over there. 15 | 2. It is recommended to not install VirtIO Display drivers if you are going to passthrough a GPU (onboard/dedicated) later on. 16 | 3. We are fooling Windows Apps and Softwares, and not Windows itself, because it would be way more hectic, unreliable, and at the end of the day not ideal. 17 | 4. You might experience some performance overhead in VM if you decide to deploy this setup. 18 | 5. Using a normal Windows VM for Non-DRM/Anticheat purposes is encouraged. 19 | 6. Sometimes running a kernel older than the recent Windows Update might cause a bootloop of the VM. So either only enable security updates ([use this](https://github.com/thegamerhat/win-debloat)), or keep up with the recent Kernel Versions, or just don't update Windows that frequently. 20 | 7. Debloating Windows is beneficial & adviced as it could have a lot less overhead as Windows continues to bloat up. 21 | 22 | ## 🚀 Getting Started 23 | 24 | >If you haven't enabled Virtualization and IOMMU, check out 🔖 [DIY VM (Everything From Scratch)](https://github.com/thegamerhat/quick-vm/blob/main/docs/diy-vm.md) 25 | 26 | - Run the [One-liner](https://github.com/thegamerhat/quick-vm#-one-liner-to-setup-kvm) in the Terminal. 27 | - Select `Advanced Setup` and go to `Select a Custom VM Profile` 28 | - From there, select `Create a Stealth VM`, and you will have a Stealthy VM ready (almost) in a few seconds. 29 | 30 | | Select the Stealth Profile | 31 | | --- | 32 | | ![Screenshot](img/vm-profile.png) | 33 | 34 | - In `Advanced Setup` select `Load/Reload KVM Kernel Modules` to enable Nested Virtualization. 35 | 36 | | Modprobe - Enable Nested Virtualization | 37 | | --- | 38 | | ![Screenshot](img/advanced-setup.png) | 39 | 40 | - Start **Windows 10 Stealth** VM (Reboot if it doesn't start and do the previous step again) 41 | 42 | - It should boot like normal Windows. Once you are past the Windows Install, go to **Turn Windows Features On or Off**. 43 | 44 | | Search for Windows Features menu | 45 | | --- | 46 | | ![Screenshot](img/windows-features.png) | 47 | 48 | - Click the ▼ dropdown menu for **Hyper-V**, and check both of the boxes as shown below. 49 | 50 | | Enable Hyper-V | 51 | | --- | 52 | | ![Screenshot](img/hyper-v-enable.png) | 53 | 54 | - After enabling **Hyper-V**, you will be asked to **REBOOT**, do it from that prompt itself and not from the Start Menu. 55 | 56 | > It is necessary to restart using Windows' built in method. 57 | If you face a bootloop in Windows, try switching to the latest kernel available to you. 58 | > I have personally tested it on 5.10 LTS without any problems, but your mileage may vary. 59 | 60 | Windows should now boot with Hyper-V Hypervisor enabled, and you are now running a Nested Windows Virtual Machine, which slims down the chances of VM detection by a lot. 61 | 62 | Microsoft's **Hyper-V** Hypervisor is a hardware-based virtualization program that can run VMs with hardware acceleration (though not as great and efficiently as `kvm`). 63 | 64 | Windows is using **Hyper-V** to mask our VM from other applications. But that means Windows does know that is is being Virtualized. 65 | 66 | ## Documentation 67 | 68 | A lot of documentation about configuring CPU, Hyper-V enlightenments has been given by RedHat in their KVM docs, which makes troubleshooting easy. 69 | 70 | **Every system is necessarily different, and so it's best that you read some documentation and add some flags in XML as per your requirements to make the VM more stealthy.** 71 | 72 | [RedHat's Hyper-V Presentation](https://archive.fosdem.org/2019/schedule/event/vai_enlightening_kvm/attachments/slides/2860/export/events/attachments/vai_enlightening_kvm/slides/2860/vkuznets_fosdem2019_enlightening_kvm.pdf) 73 | 74 | [Libvirt Documentation](https://libvirt.org/formatdomain.html) 75 | 76 | Also read [How Anti-Cheats detect System Emulation](https://secret.club/2020/04/13/how-anti-cheats-detect-system-emulation.html) to know more about how Anti-Cheats detect systems that are Virtualized. 77 | 78 | ## Better Storage Disk solution 79 | 80 | Using a `qcow2` Virtual Disk (VirtIO) is faster than using SATA, as it avoids emulating `SATA` entirely. But even that can be a bottleneck, and there is obviously a better way to do it. 81 | 82 | One of the easier methods is given by Wendell, from Level1Techs in [this video](https://www.youtube.com/watch?v=aLeWg11ZBn0), which involves passing through an entire `SATA` or `NVME` controller to the VM along with a drive. 83 | 84 | For this, Windows and VirtIO drivers must already be installed normally on bare metal, before the Drive and Bus Controller are passed throug are passed through. 85 | 86 | ## GPU Passthrough for Stealth VMs 87 | 88 | - Single GPU Passthrough method works, but isn't heavily tested yet. 89 | - DO NOT USE `vendor-reset-dkms` if you have a newer AMD GPU. 90 | 91 | NVIDIA's driver **465** and newer support GPU Passthrough to a Windows Guest on a Linux Host. 92 | 93 | >NOTE: NVIDIA still doesn't support SR-IOV so you will need an iGPU or a separate GPU if you want to be able to access the Linux Host. 94 | > 95 | >If you don't want to use a second GPU, check out [Single GPU Passthrough](https://github.com/joeknock90/Single-GPU-Passthrough) by [joeknock90](https://github.com/joeknock90/) 96 | 97 | So if you need to passthrough an NVIDIA or AMD GPU without making it obvious that you are using a VM, add the following lines to your XML. 98 | 99 | **1. List all VMs** 100 | 101 | ```bash 102 | sudo virsh list --all 103 | ``` 104 | 105 | ![Screenshot](img/virsh-list.png) 106 | 107 | **2. Edit the VM config** 108 | 109 | ```bash 110 | sudo virsh edit Windows10 111 | ``` 112 | 113 | **3. Enter the following text between the already existing sections. You can replace `randomid` with `AuthenticAMD` to fix issues on RX 5000 and older AMD GPUs.** 114 | 115 | ```bash 116 | ... 117 | 118 | ... 119 | 120 | ... 121 | 122 | 123 | 124 | 125 | 126 | 127 | ... 128 | 129 | ... 130 | ``` 131 | 132 | ## More Useful Guides 133 | 134 | If you need something specific, or something didn't work for you here, make sure you give these a look. Many people who have experience with this stuff have wonderful guides that you should check out. 135 | 136 | 1. [SomeOrdinaryGamers' BattleEye bypass](https://www.youtube.com/watch?v=vXkuyeYaTro) - Modifying somethings in the kernel to mitigate some checks 137 | 2. [Clayfreeman's GPU Passthrough](https://clayfreeman.github.io/gpu-passthrough/) 138 | 139 | ## 📣 Credits 140 | 141 | - **The Entire [r/VFIO](https://reddit.com/) Community!** ❤️ 142 | - **SomeOrdinaryGamers** - For [Vanguard bypass](https://youtube.com/watch?v=BUSrdUoedTo) 143 | - **Zeptic** - For [helping solve various issues](https://youtube.com/watch?v=VKh2eKPnmXs) 144 | -------------------------------------------------------------------------------- /kvm/ARCH/Windows10-Stealth-amd.xml: -------------------------------------------------------------------------------- 1 | 2 | Windows10-stealth 3 | Windows 10 Stealth 4 | This Windows VM is intended to be a template, for when Windows suffering from software rot, that VM can be deleted and this VM can be cloned for a fresh new VM. This will save the time required for creating a new VM from scratch and installing Windows. It is best to always clone this VM and use that clone for your work. 5 | 6 | 7 | 8 | 9 | 10 | 11 | 8388608 12 | 1048576 13 | 4 14 | 15 | hvm 16 | /usr/share/edk2-ovmf/x64/OVMF_CODE.fd 17 | /var/lib/libvirt/qemu/nvram/Windows10-stealth.fd 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | destroy 45 | restart 46 | destroy 47 | 48 | 49 | 50 | 51 | 52 | /usr/bin/qemu-system-x86_64 53 | 54 | 55 | 56 | 57 | 58 | 59 |
60 | 61 | 62 | 63 | 64 | 65 | 66 |
67 | 68 | 69 | 70 | 71 | 72 | 73 |
74 | 75 | 76 | 77 | 78 | 79 | 80 |
81 | 82 | 83 |
84 | 85 | 86 |
87 | 88 | 89 | 90 | 91 | 92 |
93 | 94 | 95 | 96 | 97 |
98 | 99 | 100 | 101 | 102 |
103 | 104 | 105 | 106 | 107 |
108 | 109 | 110 | 111 | 112 |
113 | 114 | 115 | 116 | 117 |
118 | 119 | 120 |
121 | 122 | 123 | 124 | 125 | 126 |
127 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 |
139 | 140 | 141 |
142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 |
151 | 152 |