Setup a Windows VM on Linux in under 100 seconds with just one command, with Virtualization enabled (see how-to)
It is possible to invent a single machine which can be used to compute any computable sequence.
~ Alan Turing, 1936
Download Windows 10 or Windows 11, along with VirtIO Drivers (Stable)
Place the ISOs in either ~/WindowsVM/
or /var/lib/libvirt/images/
.
Rename the ISOs as shown below:
win.iso
virtio-win.iso
UPDATE: Windows 11 has been tested and works just as well, and the support will be added soon!
bash <(wget -qO- https://git.io/JOeOs)
Here is the Script
Step by Step Guide - Click Me!
🖥 Host System Requirements:
- **Ubuntu 18.04** or newer
- **Fedora 30** or newer
- **Arch** (Read this [Guide by LinuxHint](https://linuxhint.com/install_configure_kvm_archlinux) for permissions and User Group setting)
- **4 CPU Threads** (2 Multi-Threaded Cores at minimum)
- **8 GiB Memory** (more = better)
- **40+ GiB of Free Storage** typically (**SSD Recommened**)
Linux Kernel 5.4 LTS or newer is recommended
Default specs of the VM
**CPU**: 4 vCPUs Allocated
**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)
**Memory**: Total 6 GiB, 1 GiB Allocated initially
**Storage Drive**: 1 TB VirtIO Disk (Dynamically Allocated)
**DVD Drive**: Windows ISO
**Other Drives**: VirtIO Drivers ISO, Essential Tools ISO (to optimize VM performance)
**Network Card**: VirtIO (Recommended Disabled until debloated)
📍 Check KVM Compatibility
1. Checks if `AMD-V` or `VT-d`/`VT-x` is supported on your AMD/Intel CPU.
2. Checks if kvm is enabled using `virt-host-validate`.
📍 Install required packages
- Updates repositories (Debian and Fedora only) and installs required packages.
```
# Debian
sudo apt update -q && sudo apt install -y qemu qemu-kvm libvirt-bin libvirt-daemon libvirt-clients bridge-utils virt-manager
# Fedora
sudo dnf -y install qemu-kvm libvirt bridge-utils virt-install virt-manager
# Arch
sudo pacman -S --noconfirm qemu libvirt bridge-utils edk2-ovmf vde2 ebtables dnsmasq openbsd-netcat virt-manager
```
📍 Enable Libvirt Service & Virtual Networking
**Executes the following commands only if systemd is present and running.**
```
# Libvirt service and socket
sudo systemctl enable --now libvirtd
# Virtlogd
sudo systemctl enable --now virtlogd
# Virtual Networking
sudo virsh net-autostart default
sudo virsh net-start default
```
📍 Locate ISOs
1. Checks if `win10.iso` and `virtio-win.iso` exist in ~/WindowsVM or /var/lib/libvirt/images
2. Uses `rsync` to copy the ISOs to /var/lib/libvirt/images (_$HOME subdirectories might cause permission issues_)
📍 Selecting a VM Profile
### 1. Serious Business
Ideal for Gaming, Content Creation and other heavy duty applications.
**Adobe Creative Cloud**
**3d Printing Software**: CHITUBOX
**360 Photo/Video Software**: VeeR Editor
|Part|Specification|
| --- | --- |
|CPU|6 vCPU|
|Memory|8 GiB|
|Storage|1 TiB|
### 2. Decently Powerful [Default]
Ideal for Office 365, and some light Photoshop.
|Part|Specification|
| --- | --- |
|CPU|4 vCPU|
|Memory|6 GiB|
|Storage|1 TiB|
### 3. Lightweight and Barebones
Ideal for basic stuff that requires Windows.
**Printer Software, CNC Application**
**Tax Software in Banks**
|Part|Specification|
| --- | --- |
|CPU|2 vCPU|
|Memory|4 GiB|
|Storage|1 TiB|
### 4. Stealth VM (Beta)
Ideal for DRM/Anticheat Programs like **Valorant**, **Rainbow Six: Siege**
|Part|Specification|
| --- | --- |
|CPU|4 vCPU|
|Memory|8 GiB|
|Storage|1 TiB|
📍 Reload KVM Kernel Modules
If `kvm` is enabled correctly, then executes the following commands depending upon the CPU.
```
# AMD
sudo modprobe -r kvm_amd kvm # safely unloads the modules
sudo modprobe kvm # enables kvm first
sudo modprobe kvm_amd nested=1 # then kvm_amd module with nested enabled
# INTEL
sudo modprobe -r kvm_intel kvm # safely unloads the modules
sudo modprobe kvm # enables kvm first
sudo modprobe kvm_intel nested= # then kvm_intel module with nested enabled
```
Looking Glass by Wendell from Level1Techs
Single GPU Passthrough:
NVIDIA GPU Passthrough:
Intel iGPU Passthrough - Lan Tian
Stuff changes all the time, and I can only do so much.
If you want to help, THANK YOU, that will be wonderful! 💜
This project is aimed at making a Windows VM for gaming/content creation, paired with 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.
Here's a list of things that will make this project way better!
Now that NVIDIA has enabled GPU Passthrough for Windows based Virtual Machines (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.
Till then, read Arch Wiki - PCI Passthrough and this.