Logo Cinquin Andy Signature

Windows VM Configuration on Fedora

Développeur Freelance - Logo

The sites and the associated resources.

Windows VM Configuration on Fedora

Posted on  - February 12, 2025 by Andy Cinquin

VMFedoraWindows

Table of Contents

  1. Prerequisites and Initial Setup
  2. Windows VM Configuration
  3. UFW Firewall Configuration
  4. File Sharing Configuration
  5. Troubleshooting
  6. Advanced Configurations

1. Prerequisites and Initial Setup (On Fedora Host)

# Install required packages
sudo dnf install qemu-kvm libvirt virt-manager virt-viewer spice-vdagent
sudo dnf group install --with-optional virtualization

# Enable services
sudo systemctl enable libvirtd
sudo systemctl start libvirtd

# Add user to required groups
sudo usermod -aG libvirt,kvm $USER

2. Windows VM Configuration

Creating the VM (Via virt-manager on Fedora)

  1. Open virt-manager
  2. Click "New VM"
  3. Choose "Import existing disk image"
  4. Select Windows ISO
  5. Recommended configuration:
    • RAM: 4GB minimum
    • CPU: 2 cores minimum
    • Storage: 50GB minimum
    • Network type: NAT

VM Performance Configuration

In VM settings: 6. Add hardware:
  • Channel Spice (for clipboard)
  • Display Spice (for display)
  1. In "Display Spice":
    • Enable "OpenGL"
    • Check "Listen on all network interfaces"

3. UFW Firewall Configuration (On Fedora Host)

# Install UFW
sudo dnf install ufw

# Disable firewalld
sudo systemctl stop firewalld
sudo systemctl disable firewalld

# Configure UFW
sudo systemctl enable ufw
sudo systemctl start ufw

# Basic rule configuration
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw allow 53         # DNS
sudo ufw allow 80/tcp     # HTTP
sudo ufw allow 443/tcp    # HTTPS
sudo ufw allow 67/udp     # DHCP
sudo ufw allow 68/udp     # DHCP
sudo ufw allow 3389/tcp   # RDP

# For Samba
sudo ufw allow 139/tcp
sudo ufw allow 445/tcp

# Additional useful ports
sudo ufw allow 3478/udp   # Discord, games
sudo ufw allow 3479/udp   # Games
sudo ufw allow 27015/udp  # Steam
sudo ufw allow 1900/udp   # DLNA
sudo ufw allow 5353/udp   # mDNS

# Enable UFW
sudo ufw enable

4. File Sharing Configuration (On Fedora Host)

Samba Installation and Configuration

# Install Samba
sudo dnf install samba

# Configure folder permissions
chmod 755 ~/YourFolder

# SELinux configuration
sudo semanage fcontext -a -t samba_share_t "/home/your_user/YourFolder(/.*)?"
sudo restorecon -Rv ~/YourFolder
sudo setsebool -P samba_export_all_ro=1 samba_export_all_rw=1

# Create share
net usershare add share_name "/home/your_user/YourFolder" "Description" everyone:F guest_ok=y

# Create Samba password
sudo smbpasswd -a your_user

Access from Windows

In Windows Explorer, access the share via:
\\FEDORA_IP\share_name
Use credentials configured with smbpasswd.

5. Troubleshooting

Samba Sharing Issues

  • Check service status: systemctl status smb
  • Test locally: smbclient -L localhost
  • Check SELinux permissions

VM Issues

  • Check BIOS virtualization
  • Check libvirtd status: systemctl status libvirtd
  • For display issues, check spice-vdagent

Useful Verification Commands

# QEMU version
qemu-system-x86_64 --version

# Service status
systemctl status libvirtd
systemctl status smb

# VM list
virsh list --all

# Network status
ip a

6. Advanced Configurations

VM Performance Optimization

On Fedora Host

# Install performance drivers
sudo dnf install virtio-win

# CPU performance configuration
echo "performance" | sudo tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor

In virt-manager

  1. CPU configuration:
    • Model: "Host passthrough"
    • Topology: Match your CPU
  2. Disk configuration:
    • Bus: VirtIO
    • Cache: none
    • IO mode: native

Audio and USB Configuration

On Fedora Host

# Audio support installation
sudo dnf install pulseaudio-libs-devel

# USB configuration
sudo dnf install usb-redirect

In virt-manager

  1. Add audio devices:
  • Add Hardware → Sound device
  • Model: ich9
  1. USB configuration:
  • Add Hardware → USB Host Device
  • Select devices to share

Advanced Network Configuration

On Fedora Host

# Check network interfaces
ip a

# Bridge network configuration (if needed)
sudo nano /etc/sysconfig/network-scripts/ifcfg-br0

Bridge Configuration Example

DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0

Additional Shared Folders

On Fedora Host

# Create new shared folder
mkdir ~/SharedVM
chmod 755 ~/SharedVM

# SELinux configuration
sudo semanage fcontext -a -t samba_share_t "/home/$USER/SharedVM(/.*)?"
sudo restorecon -Rv ~/SharedVM

# Create share
net usershare add sharedvm "/home/$USER/SharedVM" "VM Shared Folder" everyone:F guest_ok=y

Snapshots and Backups

Snapshot Management

# Create snapshot
sudo virsh snapshot-create-as --domain win11 --name "snapshot_name" --description "description"

# List snapshots
sudo virsh snapshot-list win11

# Restore snapshot
sudo virsh snapshot-revert win11 snapshot_name

Useful Scripts

Automatic Start Script

#!/bin/bash
# start_vm.sh
VM_NAME="win11"
virsh start $VM_NAME
virt-viewer --wait $VM_NAME

Backup Script

#!/bin/bash
# backup_vm.sh
VM_NAME="win11"
BACKUP_DIR="/path/to/backup"
DATE=$(date +%Y%m%d)

virsh dumpxml $VM_NAME > "$BACKUP_DIR/${VM_NAME}_${DATE}.xml"



🚀 Thanks for reading!
If you enjoyed this article, feel free to share it around.

💡 Got an idea? Let's talk !

DEVELOP YOUR PROJECTS TOGETHER

An idea, a project? I'm here to answer your questions and help you.
I'd be delighted to discuss your project with you!