Site audit, content writing, and competitor analysis for organic search rankings.
Design & media
Hyperv Create Vm
Try itCreate Ubuntu 24.04 VMs on Windows Hyper-V from cloud images with cloud-init. Handles all the gotchas: sparse VHDX fix, hv_netvsc network config, permissions...
What it does
Create Ubuntu 24.04 VMs on Windows Hyper-V from cloud images with cloud-init. Returns a Docker-ready VM with SSH access.
The skill document
Hyper-V VM Creator
Create Ubuntu 24.04 VMs on Windows Hyper-V from cloud images with cloud-init. Returns a Docker-ready VM with SSH access.
When to Use
- "create hyper-v vm"
- "spin up vm on hyper-v"
- "new hyper-v ubuntu vm"
- Any time you need a fresh Linux VM on a Windows Hyper-V host
This is a base skill. It creates the VM. Other skills (soc-deploy-thehive, soc-deploy-misp) deploy applications onto it.
User Inputs
| Parameter | Default | Required |
|---|---|---|
| VM name | - | Yes |
| Hyper-V host | hyperv-host (YOUR_HYPERV_IP) | No |
| CPU cores | 2 | No |
| RAM | 4GB | No |
| Disk | 40GB | No |
| VM user password | (generated) | No |
| Extra cloud-init packages | - | No |
| Network switch | DNS-NIC-Switch | No |
Prerequisites Check
# SSH to Hyper-V host
ssh hyperv-host "echo OK" 2>/dev/null || echo "FAIL: Cannot SSH to Hyper-V host"
# qemu-img on Windows
ssh hyperv-host 'where "C:\Program Files\qemu\qemu-img.exe"' 2>/dev/null || echo "FAIL: qemu-img not installed (choco install qemu -y)"
# genisoimage on Linux (for building cloud-init ISO)
which genisoimage || echo "FAIL: genisoimage not installed (apt install genisoimage)"
Execution Flow
Step 1: Build cloud-init ISO (on Linux)
# Password via env var (recommended, avoids shell history/process list exposure)
VM_PASSWORD="" bash scripts/build-cidata-iso.sh [ssh-public-key]
# Or via stdin
echo "" | bash scripts/build-cidata-iso.sh [ssh-public-key]
# Creates /tmp/-cidata.iso
The ISO contains three files:
user-data: deploy user, Docker, Compose v2, SSH password authmeta-data: instance-id and hostnamenetwork-config: hv_netvsc DHCP match (CRITICAL for Hyper-V networking)
Step 2: Transfer files to Hyper-V host
# Cloud image (if not already cached)
wget -q https://cloud-images.ubuntu.com/releases/24.04/release/ubuntu-24.04-server-cloudimg-amd64.img -O /tmp/ubuntu-24.04-cloud.img
scp /tmp/ubuntu-24.04-cloud.img hyperv-host:C:/Users/youruser/Downloads/
# Cloud-init ISO
scp /tmp/-cidata.iso hyperv-host:C:/Users/youruser/Downloads/
Step 3: Create VM (elevated PowerShell on Hyper-V host)
# Copy script to host
scp scripts/create-vm.ps1 hyperv-host:C:/Users/youruser/Downloads/
# Execute (needs elevation)
ssh hyperv-host "powershell -ExecutionPolicy Bypass -File C:\\Users\\youruser\\Downloads\\create-vm.ps1 \
-VMName \
-CloudInitISO C:\\Users\\youruser\\Downloads\\-cidata.iso \
-DiskSizeGB -MemoryGB -CPUCount "
Step 4: Wait for boot and find IP
sleep 90 # Cloud-init needs ~90 seconds
# Hyper-V VMs have MACs starting with 00-15-5d
arp -a | grep "00-15-5d"
# Get VM MAC to match
ssh hyperv-host "powershell (Get-VMNetworkAdapter -VMName '').MacAddress"
# PowerShell shows: 00155D38010A
# ARP shows: 00-15-5d-38-01-0a
Step 5: Verify SSH and Docker
ssh deploy@ "docker --version && docker compose version && echo 'VM READY'"
Return Values
Report to caller:
VM Created:
IP:
SSH: deploy@ (password: )
Docker: installed
Docker Compose v2: installed
Teardown
To destroy a VM completely:
ssh hyperv-host "powershell -Command \"Stop-VM -Name '' -Force -TurnOff; Remove-VM -Name '' -Force; Remove-Item 'C:\\ProgramData\\Microsoft\\Windows\\Virtual Hard Disks\\.vhdx' -Force\""
Or use scripts/destroy-vm.ps1:
scp scripts/destroy-vm.ps1 hyperv-host:C:/Users/youruser/Downloads/
ssh hyperv-host "powershell -ExecutionPolicy Bypass -File C:\\Users\\youruser\\Downloads\\destroy-vm.ps1 -VMName "
Critical Gotchas
See references/gotchas.md for full details. Top blockers:
- Sparse VHDX:
fsutil sparse setflag 0BEFOREResize-VHDor error 0xC03A001A - Network config: Must include
match: driver: hv_netvscor VM gets no IP - Permissions:
icacls /grant "NT VIRTUAL MACHINE\Virtual Machines:(F)"or Start-VM fails - Secure Boot Off: Ubuntu cloud images aren't signed for Hyper-V
- Cloud-init runs once: No redo. Delete VM + VHDX and start over
- Don't batch PowerShell: Run Hyper-V commands one at a time
- All commands need elevated PowerShell
- Docker Compose v2: Install via curl in runcmd, NOT apt
- IP discovery: Use ARP scan, not Get-VMNetworkAdapter (needs linux-tools-virtual)
Related skills
Manage Stripe customers, subscriptions, invoices, products, prices, and payments through OAuth-authenticated API calls.
Post videos, photos, text, and documents to 10 social platforms through a single REST API call.
Search, read, and manage YouTube videos, playlists, channels, subscriptions, and comments via managed OAuth.
Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.
figma-generate-design
OfficialBuild or update a full Figma screen using instances of your published design-system components, variables, and styles.
More from solomonneas
Browse all skillsEssential penetration testing command reference. Quick lookup for nmap, Metasploit, hydra, john, nikto, gobuster, and other offensive security tools. Covers...
Memory forensics with Volatility and related tools. Acquire RAM dumps, extract processes and DLLs, investigate rootkits and fileless malware, recover credent...
This skill should be used when the user asks to "run pentest commands", "scan with nmap", "use metasploit exploits", "crack passwords with hydra or john", "s...
Expert malware analysis for defensive security research. Static and dynamic analysis, sandbox triage, IOC extraction, unpacking, and malware family identific...
Knowledge card memory system with semantic search. Agents wake up fresh each session but remember everything through atomic ~350-token cards with YAML frontm...
Network traffic analysis with Wireshark and tshark. Capture packets, write display and BPF filters, follow TCP/UDP/TLS streams, detect C2 beacons, troublesho...