Dualboot: dos sistemas operativos en la misma máquina, eligiendo en cada arranque. Lo habitual es instalar primero Windows y luego Linux, pero aquí parto del caso opuesto — Ubuntu 24.04 ya funcionando y ocupando entero un disco de 4 TB — y describo cómo añadir Windows 11 Pro: redimensionar la partición, instalar Windows y personalizar el menú de arranque de GRUB.
Serie de apuntes sobre Windows
- Preparar un PC para Dualboot Linux / Windows e instalar Windows 11 Pro.
- Configurar un Windows 11 decente quitando la morralla.
- Preparar Windows para desarrollo de software, CLI, WSL2 y herramientas.
- Instalación de VMWare Workstation Pro en Windows 11 con una VM de Windows 11 Pro.
- Instalación de VM Windows 11 sobre Proxmox para tener un Windows 11 Pro sobre Host Proxmox.
Primeros pasos
Los características del mi PC Slimbook Kymera ATX
- Motherboard Gigabyte Z790 UD AX con BIOS F11d y una CPU Intel Core i9-14900K
- Memoria: 96GB (2x48GB) DDR5 6000MT/s / x2 Channel
- Discos: 1 disco 4TB nvme (principal) + 2 discos para datos de 2TB SDD
- Sistema con UEFI y esquema de particionamiento GPT
- Tengo ya Ubuntu 24.04 instalado (Kernel: 6.8.0-41-generic)
Detalles del disco principal, de momento solo con linux:

Requisitos
- Dos USB de 8 GB mínimo (una para Ubuntu Live, otra para Windows 11). Con una sola también se puede, reutilizándola entre pasos — es más engorroso.
- Hardware con soporte UEFI y tabla de particiones GPT (no MBR).
- Conexión a internet durante la instalación de Windows (preferible).
- Backup del disco. Trastear particiones = riesgo real de perder datos. Uso Clonezilla para clonar. Si tu disco es demasiado grande para clonar, salva al menos los archivos importantes a un disco externo.
Crear USB con Ubuntu Live
La voy a usar solo para estrechar la partición existente y dejarle sitio a Windows. No lo puedo hacer desde el mismo Linux porque está montada. Descargo la ISO de Ubuntu desde Download Ubuntu Desktop (Desktop 24.04 LTS (6GB)).
Podría haber usado Startup Disk Creator (que viene con Ubuntu), pero prefiero quemar la USB con Balena Etcher (guía externa). Me bajo Etcher for Linux x64 (64-bit) (zip),
unzip ../Downloads/balenaEtcher-linux-x64-1.19.21.zip
cd balenaEtcher-linux-x64
sudo chown root:root chrome-sandbox
sudo chmod 4755 chrome-sandbox
./balena-etcher.sh
Importante: identifica con precisión el device de la USB (aquí /dev/sdc). Confundirlo con otro disco borra datos reales.
# lsblk -p -o NAME,VENDOR,MODEL,SIZE,TYPE,SERIAL
NAME VENDOR MODEL SIZE TYPE SERIAL
/dev/loop0 10,1M loop
/dev/loop1 63,9M loop
/dev/loop2 74,2M loop
/dev/loop3 74,2M loop
/dev/loop4 13,9M loop
/dev/loop5 38,8M loop
/dev/sda ATA CT2000MX500SSD1 1,8T disk
└─/dev/sda1 1,8T part
/dev/sdb ATA CT2000MX500SSD1 1,8T disk
└─/dev/sdb1 1,8T part
/dev/sdc Lexar USB Flash Drive 58,2G disk <-- !!! este
/dev/nvme0n1 Samsung SSD 990 PRO 4TB 3,6T disk
├─/dev/nvme0n1p1 300M part
└─/dev/nvme0n1p2 3,6T part


Crear USB Live con Windows
Primero descargo Windows 11, desde el sitio oficial de descargas. Sección ISO, opción Windows 11 (multi-edition ISO for x64 devices). Selecciono el Product language y empiezo la descarga (aprox. 6,3GB).
Para pasarla a una USB es sencillo si tienes ya un Windows (aquí las instrucciones). En mi caso lo hago desde mi linux con Ventoy (una guía).
Al instalar Ventoy en la USB, la hace bootable y crea dos particiones, una para él (para que Ventoy haga boot) y otra para copiar el ISO de Windows. Descargo la última versión desde Ventoy.
cd Downloads
tar xfz ventoy-1.0.99-linux.tar.gz
cd ventoy-1.0.99
sudo ./VentoyWeb.sh
Contecto con http://127.0.0.1:24680. En Option deshabilito Secure Boot y selecciono GPT como tipo de partición.

Selecciono la ruta del device donde tengo la USB (en mi caso ahora es /dev/sdd) y pulso Install.

Copio el ISO de Windows a la segunda partición “Ventoy”.

Así queda la USB

Expulso ambas particiones (Ventoy, VTOYEFI), ya hemos terminado, tenemos lista la segunda USB Windows.
Liberar espacio en el disco
Hago boot con la USB Live de Ubuntu. Para que la BIOS arranque desde la USB, pulsa la tecla de boot-menu (F2/F7/F10/F12/ESC según tu BIOS).

Seleccino la USB, pulso Enter. Aparece un menú, selecciono Try or Install Ubuntu, pongo el idioma, accesibilidad, teclado, conexión a internet, me salto actualizar el instalador y selecciono Try Ubuntu. Una vez que tengo Ubuntu arrancado, ejecuto la Aplicación Discos (Disks)

Selecciono mi disco duro principal y la partición donde está Linux, que es la que tengo que estrechar.

Selecciono redimensionar / resize.

Introduzco en nuevo valor (la mitad del disco), pulso en Resize, pulso en Autenticar (no pide password)

Inicia el proceso de redimensionamiento (tarda un buen rato) y cuando termina queda como esperaba

Rearranco el equipo, quito la USB de Ubuntu y por asegurar, compruebo que puede seguir haciendo boot en la partición redimensionada. Ya estoy listo para instalar Windows
Instalar Windows
Ahora toca instalar Windows — ten paciencia, tarda bastante. Introduzco la USB con Ventoy + ISO, rearranco y selecciono la USB desde el boot-menu de la BIOS.

Enter sobre la ISO, Boot in normal mode. En el asistente de Windows: idioma y teclado, Instalar ahora, omito la licencia (se activa después), elijo Windows 11 Pro, Install Windows Custom y selecciono la única partición libre (Unallocated Space). Windows copia ficheros y reinicia. Nota: en hardware antiguo a veces volvía a arrancar desde la USB — si te pasa, entra en la BIOS y selecciona el disco duro como fuente de boot.
Windows 11 OOBE (setup inicial)
Esta secuencia de preguntas del primer arranque de Windows 11 es la misma en todas las instalaciones del blog (VMware, Proxmox, dualboot). La dejo aquí como referencia:
- País, teclado, actualizaciones, reinicio.
- Nombre del equipo, reinicio.
- Uso personal vs. trabajo → Personal.
- Login con cuenta Microsoft (o local — más abajo).
- Crear PIN.
- Diagnóstico y privacidad: decir no a localización, buscar dispositivo, diagnósticos, inking/typing, tailored experiences y ads ID.
- Saltarse teléfono, backups y migración desde otros navegadores.
- Último update y entramos.
Configurar el arranque dual con GRUB
Windows ha dejado su Boot Manager como primera entrada en la BIOS. Lo cambio para que arranque Linux primero, y configuro GRUB para que presente el menú de selección entre los dos sistemas.
Entro en el Setup de la BIOS y cambio la secuencia de arranque para poner Ubuntu el primero.

Añadir Windows a Grub
Una vez en Linux y desde root voy a parametrizar grub. Empiezo confirmando que os-prober detecta la nueva partición “arrancable” de Windows:
os-prober
/dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi:Windows Boot Manager:Windows:efi <-- !! Correcto
Edito /etc/default/grub, descomento la línea GRUB_DISABLE_OS_PROBER=false, de tal manera que update-grub use os-prober y añada una entrada de menú adicional al fichero /etc/boot/grub/grub.cfg
cat /etc/default/grub | grep PROBER
GRUB_DISABLE_OS_PROBER=false
Ejecuto update-grub para que me añada la partición Windows al fichero de configuración (/boot/grub/grub.cfg) como un elmento del menú de arranque.
update-grub
:
Sourcing file `/etc/default/grub'
Warning: os-prober will be executed to detect other bootable partitions.
:
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
:
Nota: Yo volví a dejar esta línea comentada #GRUB_DISABLE_OS_PROBER=false en el /etc/default/grub y volver a ejecutar update-grub, ya no me hace falta que detecte nada.
Rearranco el equipo y veo el nuevo menú

Tenemos diferentes opciones pero prefiero limpiar este menú, arranco de nuevo con Linux para instalar un App llamada Grub Customizer
sudo apt update && sudo apt upgrade -y && sudo apt full-upgrade -y
apt install software-properties-common
add-apt-repository ppa:danielrichter2007/grub-customizer
apt-get update
apt install grub-customizer
Ejecuto grub-customizer desde mi usuario y el CLI; me pide la contraseña de root y me muestra todas las entradas que ví en el menú de arranque. Elimino las que no voy a usar (opciones avanzadas, memtest), cambio los títulos,

En General Settings establezco boot automático en 5 seg y en Appearance Settings la resolución en 1920x1080.
Después de Salvar, vuelvo a hacer boot para comprobar.

Personalizo Grub
Grub permite aplicar temas y personalizar la apariencia de su gestor de arranque. Si desea un menú de arranque que sea visualmente atractivo y también fácil de navegar, puedes personalizar con temasa. Una buena fuemte es Gnome-Look.org. En mi ejemplo descargué Stylish-1080p.tar.xz desde aquí.
mkdir -p /boot/grub/themes
cd /boot/grub/themes
tar xvf Stylish-1080p.tar.xz
Modifico bajo /etc/default/grub.d, elimino el que venía con mi sistema y pongo el nuevo
rm /etc/default/grub.d/slimbook.cfg
cat /etc/default/grub.d/tema-grub.cfg
GRUB_THEME="/boot/grub/themes/Stylish/theme.txt"
Dejo aquí algunos cambios que hice al final sobre el fichero /etc/default/grub a modo de referencia.
GRUB_DEFAULT="0"
GRUB_TIMEOUT="5"
GRUB_DISTRIBUTOR="Slimbook-OS"
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_GFXMODE="1920x1080x32"
GRUB_GFXPAYLOAD_LINUX="1920x1080x32"
GRUB_INIT_TUNE="1000 334 1 334 1 0 1 334 1 0 1 261 1 334 1 0 1 392 2 0 4 196 2"
GRUB_ENABLE_BLSCFG="false"
Ejecuto el update y hago un reboot
update-grub
reboot -f

Listo, ya tengo dualboot. Continúo con el siguiente apunte, sobre cómo dejar Windows 11 lo más decente posible.
Gotcha: la hora en dualboot
Problema clásico en dualboot Windows/Linux: uno de los dos muestra la hora mal. El motivo es que Windows por defecto interpreta que el RTC (reloj hardware) está en hora local, mientras que Linux lo interpreta en UTC — que es lo correcto.
- RTC en local → Windows feliz, Linux desorientado (salvo NTP bien configurado).
- RTC en UTC → Linux feliz, Windows desorientado (salvo NTP bien configurado).
Si te fías solo de NTP puede parecer que todo va bien, pero la incoherencia interna acaba apareciendo. Guías externas: itsfoss, howtogeek.
Mi solución: poner UTC en la BIOS y decirle a Windows que el RTC es UTC.
- BIOS: pongo la hora en UTC. En Madrid en verano son 2 horas menos. Hora UTC actual.
- Linux: nada, ya espera UTC.
- Windows: le digo que el RTC es UTC vía registro:
regedit→HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation.- Añado un valor string
RealTimeIsUniversal=1. - Reinicio.
- En ambos SO, configuro NTP client.
- En ambos SO, configuro mi timezone (
Europe/Madriden mi caso, con horario de verano).