{"id":1904,"date":"2026-11-10T12:32:14","date_gmt":"2026-11-10T15:32:14","guid":{"rendered":"https:\/\/www.linuxpro.com.br\/?p=1904"},"modified":"2026-11-10T12:32:14","modified_gmt":"2026-11-10T15:32:14","slug":"kvm-gui-vms-macos-linux-e-windows-no-kvm-com-cara-de-virtualbox","status":"publish","type":"post","link":"https:\/\/www.linuxpro.com.br\/es\/2026\/11\/kvm-gui-vms-macos-linux-e-windows-no-kvm-com-cara-de-virtualbox\/","title":{"rendered":"kvm-gui: VM de macOS, Linux y Windows en KVM con aspecto de VirtualBox"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"\/wp-content\/uploads\/2026\/11\/kvm-gui-v1.webp\" alt=\"Mascote do LinuxPro numa esta\u00e7\u00e3o de trabalho iniciando VMs Linux, Windows, macOS e Debian num gerenciador no estilo VirtualBox, com o gopher do Go segurando um cubo e o c\u00e3o caramelo deitado ao lado\" width=\"1486\" height=\"856\" \/><\/p>\n<p>Quien usa Linux en el escritorio y quiere m\u00e1quinas virtuales suele elegir entre dos opciones: VirtualBox, c\u00f3modo pero con m\u00f3dulo de kernel propio y rendimiento inferior al KVM, o el KVM puro, r\u00e1pido pero lleno de l\u00ednea de comandos, XML de libvirt y, en el caso de macOS, un repositorio de scripts y un <code data-no-translation=\"\">config.plist<\/code> OpenCore editado a mano. El <strong><a href=\"https:\/\/github.com\/jniltinho\/kvm-gui\" rel=\"noopener\" target=\"_blank\">kvm-gui<\/a><\/strong> es mi proyecto para unir ambos mundos: una app con el aspecto y el flujo de VirtualBox, ejecut\u00e1ndose directamente sobre QEMU\/KVM, que crea VM <strong>macOS, Linux y Windows<\/strong> a velocidad nativa \u2014 todo en un <strong>\u00fanico binario Go<\/strong> que tambi\u00e9n es l\u00ednea de comandos y servidor MCP para agentes de IA.<\/p>\n<div style=\"background:#fff8e1;border-left:4px solid #8b1a1a;padding:.8em 1em;margin:1em 0\"><strong>Para el laboratorio casero.<\/strong> macOS es software de Apple y su licencia solo permite ejecutarlo en hardware de la marca Apple. Comprueba que tu uso complies con los t\u00e9rminos de la licencia. El proyecto no tiene ninguna relaci\u00f3n con Apple.<\/div>\n<h2>Lo que ofrece kvm-gui<\/h2>\n<ul>\n<li><strong>macOS en pocos clics<\/strong> \u2014 t\u00fa eliges la versi\u00f3n y la aplicaci\u00f3n descarga la recovery directamente de Apple, comprobando la firma. OpenCore y OVMF vienen integrados: nada de clonar OSX-KVM ni editar <code data-no-translation=\"\">config.plist<\/code><\/li>\n<li><strong>Metal en macOS<\/strong> con el <a href=\"https:\/\/github.com\/steelbrain\/reims-vgpu\" rel=\"noopener\" target=\"_blank\">Reims vGPU<\/a>, una GPU paravirtual que utiliza el controlador Vulkan del host, sin necesidad de una segunda tarjeta gr\u00e1fica<\/li>\n<li><strong>Linux, Windows y otros desde una ISO<\/strong> \u2014 perfiles de SO, UEFI con Secure Boot, TPM 2.0 para Windows 11 y pantallas desde HD hasta 4K<\/li>\n<li><strong>3D y Vulkan en invitados Linux<\/strong> en la GPU del host que elijas, sin passthrough: OpenGL mediante virgl y Vulkan mediante Venus<\/li>\n<li><strong>El flujo de trabajo de VirtualBox<\/strong> \u2014 gestor con pesta\u00f1as Detalles, Pantalla, Instant\u00e1neas y Registros, asistente de nueva VM, Configuraci\u00f3n, instant\u00e1neas, clones completos e <strong>importaci\u00f3n y exportaci\u00f3n de <code data-no-translation=\"\">.ova<\/code><\/strong> compatible con VirtualBox<\/li>\n<li><strong>Velocidad nativa de KVM<\/strong>, y las VMs siguen funcionando despu\u00e9s de cerrar la aplicaci\u00f3n<\/li>\n<li><strong>Automatizable<\/strong> \u2014 todo lo que hace la GUI es un comando, y los agentes de IA (Claude, Codex, Cursor) controlan las VMs mediante el servidor MCP<\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Gerenciador do kvm-gui no estilo VirtualBox, com VMs macOS, Ubuntu e Windows 11 e os detalhes de uma VM macOS Sequoia em Reims vGPU\" src=\"\/wp-content\/uploads\/2026\/11\/kvm-gui-manager-macos.webp\" width=\"1200\" height=\"750\" \/><\/p>\n<h2>C\u00f3mo funciona por dentro<\/h2>\n<p>El kvm-gui no es un frontend de libvirt. El mismo binario tiene tres entradas \u2014 la GUI de escritorio (Go + Wails), la CLI (<code data-no-translation=\"\">kvm-gui vm \u2026<\/code>) y el servidor MCP (<code data-no-translation=\"\">kvm-gui mcp<\/code>, a trav\u00e9s de stdio) \u2014 y las tres pasan por el mismo n\u00facleo en Go, que valida la configuraci\u00f3n, bloquea la carpeta de la VM contra el uso concurrente, guarda la lista de VMs en un SQLite y construye los argumentos de QEMU. Para cada VM inicia <strong>un proceso de QEMU<\/strong> con KVM, controlado mediante un socket QMP privado; la pantalla llega a la aplicaci\u00f3n mediante un socket VNC tambi\u00e9n privado, sin ning\u00fan puerto de red abierto. Los discos qcow2, la NVRAM UEFI, el estado del TPM y las instant\u00e1neas se guardan en una carpeta por VM.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Diagrama da arquitetura do kvm-gui: GUI, CLI e servidor MCP sobre o mesmo n\u00facleo, um processo QEMU\/KVM por VM e convidados macOS, Linux e Windows\" src=\"\/wp-content\/uploads\/2026\/11\/kvm-gui-arquitetura.webp\" width=\"1200\" height=\"760\" \/><\/p>\n<h2>Instalaci\u00f3n<\/h2>\n<p>Necesitas una CPU x86_64 con virtualizaci\u00f3n (VT-x \/ AMD-V) activada en el firmware y QEMU 10.0 o m\u00e1s reciente: los paquetes instalan QEMU por ti. Descarga el paquete de tu distro en <a href=\"https:\/\/github.com\/jniltinho\/kvm-gui\/releases\/latest\" rel=\"noopener\" target=\"_blank\">\u00faltima versi\u00f3n<\/a> y comprueba la descarga:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sha256sum -c --ignore-missing SHA256SUMS\nsudo apt install .\/kvm-gui_*_amd64.deb          # Ubuntu 26.04, Debian 13<\/code><\/pre>\n<p>En Rocky Linux 10, WebKitGTK viene de EPEL:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">sudo dnf install epel-release && sudo dnf install .\/kvm-gui-*-1.x86_64.rpm<\/code><\/pre>\n<p>Tambi\u00e9n hay AppImage y binario puro, que dependen de GTK 4, WebKitGTK 6 y del QEMU de la distribuci\u00f3n. En Ubuntu 24.04, qu\u00e9date en la <a href=\"https:\/\/github.com\/jniltinho\/kvm-gui\/releases\/tag\/v0.15.0\" rel=\"noopener\" target=\"_blank\">v0.15.0<\/a>, la \u00faltima versi\u00f3n para \u00e9l.<\/p>\n<h2>Tu primera VM<\/h2>\n<p>Una sola vez, prepara el host: el <code data-no-translation=\"\">setup<\/code> instala lo que falte de QEMU, carga el m\u00f3dulo KVM, te a\u00f1ade al grupo <code data-no-translation=\"\">kvm<\/code> y ajusta los par\u00e1metros de kernel necesarios, pidiendo la contrase\u00f1a una sola vez mediante <code data-no-translation=\"\">pkexec<\/code>. Despu\u00e9s, solo hay que abrir la aplicaci\u00f3n:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">kvm-gui setup\nkvm-gui<\/code><\/pre>\n<p>Haz clic en <strong>New<\/strong>, elige <strong>macOS<\/strong> y la versi\u00f3n, o <strong>Linux \/ Windows \/ Other<\/strong> con una ISO. KVM-GUI detecta el sistema y sugiere CPU, memoria y disco de acuerdo con tu host. Haz clic en <strong>Start<\/strong> y la pantalla aparece dentro de la aplicaci\u00f3n; una VM de macOS se inicia por s\u00ed sola en la Recovery, desde donde instalas el sistema.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Assistente Nova VM do kvm-gui, com nome, pasta, ISO, tipo de convidado e vers\u00e3o do macOS\" src=\"\/wp-content\/uploads\/2026\/11\/kvm-gui-nova-vm.webp\" width=\"1200\" height=\"750\" \/><\/p>\n<p>Los mismos pasos desde la terminal:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">kvm-gui vm create Ubuntu --guest linux --profile ubuntu --iso ubuntu-26.04.iso\nkvm-gui vm start<\/code><\/pre>\n<h2>Linux y Windows con 3D, Vulkan y TPM<\/h2>\n<p>Los invitados de Windows usan UEFI con Secure Boot y un TPM 2.0 emulado por <code data-no-translation=\"\">swtpm<\/code>, lo que cumple los requisitos de Windows 11. En invitados de Linux, la opci\u00f3n de aceleraci\u00f3n 3D conecta virtio-gpu con virgl (OpenGL), y <strong>Vulkan (Venus)<\/strong> lleva Vulkan del invitado hasta la GPU del host que elijas: el <code data-no-translation=\"\">vulkaninfo<\/code> dentro de la VM muestra tu placa AMD o NVIDIA, sin passthrough. Vulkan se valid\u00f3 en el host de referencia, Ubuntu 26.04; en Debian 13 hay 3D sin Vulkan.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Configura\u00e7\u00f5es de tela do kvm-gui com acelera\u00e7\u00e3o 3D e Vulkan (Venus) e a escolha da GPU do host\" src=\"\/wp-content\/uploads\/2026\/11\/kvm-gui-vulkan-venus.webp\" width=\"1200\" height=\"750\" \/><\/p>\n<h2>Desde VirtualBox<\/h2>\n<p>Si tienes VMs en <a href=\"\/es\/2026\/09\/a-historia-do-virtualbox\/\">VirtualBox<\/a>, use <strong>Archivo \u203a Importar appliance\u2026<\/strong> con un <code data-no-translation=\"\">.ova<\/code>, o:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">kvm-gui vm import-ova box.ova --dry-run   # mostra o que ser\u00e1 criado e o que n\u00e3o \u00e9 mantido\nkvm-gui vm import-ova box.ova<\/code><\/pre>\n<p>El appliance se trata como no confiable: se comprueban el manifiesto, las cabeceras y los discos antes de convertirlo a qcow2, y una importaci\u00f3n fallida no deja restos. El camino de vuelta tambi\u00e9n existe: <code data-no-translation=\"\">kvm-gui vm export-ova<\/code> genera un <code data-no-translation=\"\">.ova<\/code> que VirtualBox 7 importa. Las VMs de macOS quedan fuera del OVA y migran entre hosts con <code data-no-translation=\"\">kvm-gui vm export --full<\/code>.<\/p>\n<h2>macOS con Metal: Reims vGPU<\/h2>\n<p>macOS no tiene controlador para las placas de v\u00eddeo emuladas de QEMU, as\u00ed que sin aceleraci\u00f3n la interfaz va pesada. kvm-gui integra el <a href=\"https:\/\/github.com\/steelbrain\/reims-vgpu\" rel=\"noopener\" target=\"_blank\">Reims vGPU<\/a>, una GPU paravirtual que entrega Metal al invitado usando el controlador Vulkan de la GPU que ya dibuja tu escritorio. La app instala QEMU de Reims desde un paquete listo, con SHA-256 comprobado:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">kvm-gui reims install\nkvm-gui reims status<\/code><\/pre>\n<p>En el host de referencia, un macOS Sequoia 15.8.1 arranca en Reims vGPU con Metal activo. Sonoma es la versi\u00f3n validada de principio a fin; las dem\u00e1s, de High Sierra a Tahoe, son experimentales.<\/p>\n<h2>Tus VMs en manos de un agente de IA<\/h2>\n<p>El mismo binario es un servidor MCP. Para usarlo en Claude Code:<\/p>\n<pre data-no-translation=\"\"><code class=\"language-bash\" data-no-translation=\"\">claude mcp add kvm-gui -- kvm-gui mcp<\/code><\/pre>\n<p>Ah\u00ed hay que pedir, por ejemplo, <em>&#8220;crie uma VM Ubuntu a partir de ~\/Downloads\/ubuntu.iso e inicie&#8221;<\/em>. El agente crea, arranca y apaga VMs, ve la pantalla y escribe en ella, ejecuta comandos por SSH, hace instant\u00e1neas e importa y exporta appliances. Las acciones destructivas, como forzar el apagado o ejecutar comandos en el invitado, requieren confirmaci\u00f3n expl\u00edcita. Si te gusta el tema, el <a href=\"\/es\/2026\/09\/mcp-wp-go-wordpress-por-mcp-sem-ssh\/\">mcp-wp-go<\/a> sigue la misma idea para WordPress.<\/p>\n<h2>Hosts compatibles<\/h2>\n<table>\n<thead>\n<tr>\n<th>Host<\/th>\n<th>Paquete<\/th>\n<th>Estado<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Ubuntu 26.04<\/td>\n<td><code data-no-translation=\"\">.deb<\/code><\/td>\n<td>probado en cada CI; host de referencia (3D y Vulkan validados)<\/td>\n<\/tr>\n<tr>\n<td>Debian 13<\/td>\n<td><code data-no-translation=\"\">.deb<\/code><\/td>\n<td>probado en cada CI; 3D sin Vulkan<\/td>\n<\/tr>\n<tr>\n<td>Rocky Linux 10<\/td>\n<td><code data-no-translation=\"\">.rpm<\/code><\/td>\n<td>probado en cada CI; las VMs de macOS necesitan Reims vGPU y el QEMU de la distro no tiene 3D<\/td>\n<\/tr>\n<tr>\n<td>Ubuntu 24.04<\/td>\n<td>\u2014<\/td>\n<td>sin soporte; usa la v0.15.0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>Bajo el cap\u00f3<\/h2>\n<p>Backend en Go con Cobra para la CLI, el SDK oficial de MCP en Go y SQLite en Go puro (<code data-no-translation=\"\">modernc.org\/sqlite<\/code>); la GUI es Wails con Vue. OpenCore, Lilu, VirtualSMC, WhateverGreen y OVMF vienen integrados desde las versiones oficiales. Todo se compila en una imagen Docker (<code data-no-translation=\"\">make image test dist<\/code>) y cada versi\u00f3n se instala y se ejecuta en contenedores limpios de Ubuntu 26.04, Debian 13 y Rocky Linux 10. Licencia BSD-3-Clause, con cr\u00e9ditos a OSX-KVM, acidanthera, TianoCore, Dortania y Reims vGPU.<\/p>\n<h2>Pruebe<\/h2>\n<p>Si vives entre la comodidad de VirtualBox y el rendimiento de KVM, kvm-gui es para tu home lab: un binario, las VMs que ya conoces y un agente de IA de regalo. Inst\u00e1lalo, crea la primera VM y cu\u00e9ntame qu\u00e9 te ha parecido: las estrellas y los issues en <a href=\"https:\/\/github.com\/jniltinho\/kvm-gui\" rel=\"noopener\" target=\"_blank\">GitHub<\/a> son muy bienvenidos. Para el contexto hist\u00f3rico, consulta tambi\u00e9n <a href=\"\/es\/2026\/09\/a-historia-do-proxmox\/\">la historia de Proxmox<\/a>, otro proyecto que hizo que KVM resultara amigable, y el <a href=\"\/es\/2026\/09\/ova2xva\/\">ova2xva<\/a>, para llevar VMs de VirtualBox a XCP-ng.<\/p>","protected":false},"excerpt":{"rendered":"<p>kvm-gui es una app al estilo de VirtualBox para KVM: un \u00fanico binario Go con GUI, CLI y servidor MCP que crea y ejecuta m\u00e1quinas virtuales de macOS, Linux y Windows a velocidad nativa, con 3D, Vulkan, TPM 2.0 e importaci\u00f3n de .ova desde VirtualBox.<\/p>","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,21,2,111,3],"tags":[31,209,309,311,558,140,138,559],"class_list":["post-1904","post","type-post","status-publish","format-standard","hentry","category-debian","category-infra","category-linux","category-opensource","category-ubuntu","tag-golang","tag-kvm","tag-macos","tag-mcp","tag-qemu","tag-virtualbox","tag-virtualizacao","tag-wails"],"_links":{"self":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1904","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/comments?post=1904"}],"version-history":[{"count":1,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1904\/revisions"}],"predecessor-version":[{"id":1906,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/posts\/1904\/revisions\/1906"}],"wp:attachment":[{"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/media?parent=1904"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/categories?post=1904"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.linuxpro.com.br\/es\/wp-json\/wp\/v2\/tags?post=1904"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}