Windows VM Configuration on Fedora
Posted on - February 12, 2025 by Andy Cinquin
VMFedoraWindows
Table of Contents
- Prerequisites and Initial Setup
- Windows VM Configuration
- UFW Firewall Configuration
- File Sharing Configuration
- Troubleshooting
- 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)
- Open virt-manager
- Click "New VM"
- Choose "Import existing disk image"
- Select Windows ISO
- 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)
- 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
- CPU configuration:
- Model: "Host passthrough"
- Topology: Match your CPU
- 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
- Add audio devices:
- Add Hardware → Sound device
- Model: ich9
- 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 !☕