Aclaro que yo no uso Windows pero tenia una PC antigua que mi familia usa y le instale Windows 10 LTSC 2019 32 bits porque aunque el procesador soporta 64 bits tiene 2 GB de RAM.

Me lo baje de Archive.org (2.8 GB)

https://archive.org/details/en_windows_10_enterprise_ltsc_2019_x86_dvd

Instalar Windows 10 Enterprise LTSC 2019 x86 por red con iPXE + Arch Linux

Guía de lo que funcionó para instalar Windows 10 Enterprise LTSC 2019 de 32 bits en una PC vieja con BIOS Legacy, usando un servidor Arch Linux en la misma LAN. El instalador se cargó por iPXE; los archivos completos de Windows se compartieron mediante Samba.

Importante: es una instalación limpia. Hacé copia de seguridad de tus archivos antes de borrar o modificar particiones. No ejecutes clean, format ni borres particiones si no estás seguro.

1. Datos de esta instalación

Servidor Arch: 192.168.0.143

PC destino: obtuvo por DHCP 192.168.0.203 (la dirección puede cambiar).

ISO utilizada:

es_windows_10_enterprise_ltsc_2019_x86_dvd_84f6ff1d.iso

Rutas del servidor:

/mnt/winiso                 ISO montada
/srv/windows-pxe/install    Contenido completo de la ISO para Samba
/srv/windows-pxe/www        Archivos de arranque HTTP para iPXE

2. Instalar las herramientas en Arch

sudo pacman -S --needed nginx samba curl git base-devel

3. Montar la ISO y copiar su contenido

Ajustá el nombre de archivo si tu ISO tiene otro nombre.

sudo mkdir -p /mnt/winiso
sudo mkdir -p /srv/windows-pxe/install
sudo mkdir -p /srv/windows-pxe/www

sudo mount -o loop /mnt/linux2/ISO/es_windows_10_enterprise_ltsc_2019_x86_dvd_84f6ff1d.iso /mnt/winiso
sudo cp -a /mnt/winiso/. /srv/windows-pxe/install/

Comprobá que los archivos importantes estén presentes:

ls -lh /srv/windows-pxe/install/sources/install.*
ls -lh /srv/windows-pxe/install/sources/setup.exe

La carpeta install debe contener el contenido completo de la ISO, no solamente boot.wim.

4. Preparar los archivos de arranque HTTP

Descargá wimboot y copiá los archivos de arranque desde la ISO:

sudo curl -L https://github.com/ipxe/wimboot/releases/latest/download/wimboot -o /srv/windows-pxe/www/wimboot

sudo cp /mnt/winiso/bootmgr /srv/windows-pxe/www/bootmgr
sudo cp /mnt/winiso/boot/bcd /srv/windows-pxe/www/BCD
sudo cp /mnt/winiso/boot/boot.sdi /srv/windows-pxe/www/boot.sdi
sudo cp /mnt/winiso/sources/boot.wim /srv/windows-pxe/www/boot.wim

Creá el script que carga WinPE:

sudo tee /srv/windows-pxe/www/boot.ipxe >/dev/null <<'EOF'
#!ipxe
dhcp
kernel http://192.168.0.143/wimboot
initrd http://192.168.0.143/bootmgr bootmgr
initrd http://192.168.0.143/BCD BCD
initrd http://192.168.0.143/boot.sdi boot.sdi
initrd http://192.168.0.143/boot.wim boot.wim
boot
EOF

Configurá Nginx para servir esos archivos por HTTP:

sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.backup
sudo tee /etc/nginx/nginx.conf >/dev/null <<'EOF'
events {}
http {
    server {
        listen 80;
        server_name _;
        root /srv/windows-pxe/www;
        autoindex on;
    }
}
EOF

sudo systemctl enable --now nginx
sudo systemctl restart nginx

Probá desde el servidor:

curl -I http://127.0.0.1/boot.ipxe
curl -I http://127.0.0.1/wimboot
curl -I http://127.0.0.1/boot.wim
curl -I http://127.0.0.1/BCD

Deben responder con un estado HTTP exitoso, normalmente 200 OK.

5. Compartir los archivos de instalación por Samba

Agregá al final de /etc/samba/smb.conf:

[wininstall]
    path = /srv/windows-pxe/install
    browseable = yes
    read only = yes
    guest ok = yes

Validá y reiniciá Samba:

sudo testparm -s
sudo systemctl enable --now smb
sudo systemctl restart smb

Se creó un usuario de Samba dedicado porque Windows PE rechazó el acceso de invitado:

sudo useradd -M -s /usr/bin/nologin wininstall
sudo smbpasswd -a wininstall
sudo setfacl -R -m u:wininstall:rX /srv/windows-pxe/install
sudo systemctl restart smb

sudo smbpasswd -a wininstall pide establecer una contraseña. Guardala para usarla en Windows PE.

Si setfacl no existe, instalá el paquete acl (sudo pacman -S acl) y repetí ese comando.

Comprobá el recurso localmente:

smbclient -N -L //127.0.0.1
smbclient -U wininstall //127.0.0.1/wininstall -c 'ls'

6. Compilar iPXE con un script integrado

Esto evita que iPXE arranque, obtenga DHCP y termine con Nothing to boot, sin cargar nuestro script HTTP.

cd /tmp
git clone --depth=1 https://github.com/ipxe/ipxe.git
cd /tmp/ipxe/src

cat > boot.ipxe <<'EOF'
#!ipxe
dhcp
chain http://192.168.0.143/boot.ipxe
EOF

make bin/ipxe.usb EMBED=boot.ipxe

Al terminar, el archivo generado es:

/tmp/ipxe/src/bin/ipxe.usb

En esta instalación se copió desde el servidor 192.168.0.143 a otra máquina Linux con:

scp esotericwarfare@192.168.0.143:/tmp/ipxe/src/bin/ipxe.usb /tmp/ipxe.usb

7. Grabar iPXE en un pendrive

Este paso borra por completo el pendrive elegido. Identificá el dispositivo con lsblk; no adivines el nombre.

lsblk -o NAME,SIZE,MODEL,TRAN,MOUNTPOINTS

En la máquina donde se grabó, el pendrive aparecía como sdb, modelo DataTraveler 2.0, de aproximadamente 1.9 GB. Los discos internos también cambiaban de nombre entre computadoras, así que verificá el resultado en tu equipo.

Solo si confirmaste que el pendrive completo es /dev/sdb:

sudo dd if=/tmp/ipxe.usb of=/dev/sdb bs=4M status=progress conv=fsync
sync
sudo eject /dev/sdb

El destino es el dispositivo entero (/dev/sdb), no una partición como /dev/sdb1.

8. Arrancar la PC destino

Conectá la PC destino por Ethernet a la misma LAN que el servidor 192.168.0.143. Arrancá desde el USB de iPXE usando el menú de arranque de la BIOS. En este caso se utilizó BIOS Legacy.

iPXE debería obtener una dirección DHCP y encadenar:

http://192.168.0.143/boot.ipxe

Luego wimboot carga los archivos de arranque de Windows y abre el entorno de instalación.

9. Resolver el error engañoso «Falta un controlador de medios»

En esta instalación apareció el mensaje de que faltaba un controlador, aunque el disco interno sí se detectaba. El problema era que WinPE había arrancado desde boot.wim, pero no tenía automáticamente conectada la carpeta completa de instalación del servidor.

Inicializar la red

En la pantalla del instalador, presioná Shift + F10 para abrir la consola y ejecutá:

wpeutil InitializeNetwork
ipconfig /all

Si no aparece una dirección IP, revisá primero el controlador de red y la conexión. Una vez que la red funcionó, se pudo conectar Samba.

Conectar el recurso Samba

En la consola de Windows PE, ejecutá:

net use Z: \\192.168.0.143\wininstall /user:wininstall *

Ingresá la contraseña que configuraste con smbpasswd. Si la conexión tiene éxito, net use mostrará la unidad de red conectada.

El detalle que finalmente funcionó

No bastó con ejecutar Z:\setup.exe desde la raíz del recurso. El comando que funcionó fue ejecutar el instalador que está dentro de sources:

Z:\sources\setup.exe

Ese fue el paso final que permitió continuar la instalación. La ruta importa: Z:\setup.exe y Z:\sources\setup.exe no son el mismo archivo.

Si querés verificar antes de ejecutarlo:

dir Z:\sources\install.*
dir Z:\sources\setup.exe

No hace falta que net use muestre una unidad previamente conectada: después de ejecutar el comando de conexión, verificá que Z: exista y contenga los archivos.

10. Problemas que aparecieron y qué significaban

Nothing to boot en iPXE: iPXE obtuvo DHCP, pero no tenía un script de arranque que le indicara qué cargar. Se corrigió compilando bin/ipxe.usb con EMBED=boot.ipxe.

No había solicitudes HTTP desde la PC destino: el iPXE original no estaba cargando el script del servidor. Se corrigió integrando en el USB un script que encadena http://192.168.0.143/boot.ipxe.

net use no mostraba unidades: eso es normal si todavía no hay ninguna unidad de red conectada.

Contraseña de red no válida: se creó el usuario Samba wininstall, se le asignó una contraseña con smbpasswd y se le dieron permisos de lectura sobre los archivos de instalación.

«Falta un controlador de medios»: en este caso el mensaje no significaba que el disco interno estuviera ausente. La solución fue inicializar la red, montar el recurso Samba y ejecutar Z:\sources\setup.exe.

11. Resumen mínimo de la secuencia en la PC destino

Una vez que WinPE ya arrancó, si aparece el error:

wpeutil InitializeNetwork
net use Z: \\192.168.0.143\wininstall /user:wininstall *
Z:\sources\setup.exe

Ingresá la contraseña cuando la solicite. Si la red no tiene IP, resolvé eso antes de ejecutar net use.


Resultado

Se instaló Windows 10 Enterprise LTSC 2019 de 32 bits desde el servidor Arch Linux en una PC antigua, sin necesidad de copiar la ISO a un DVD ni depender de un pendrive de instalación de Windows tradicional. El USB se usó para arrancar iPXE; los archivos de arranque se sirvieron por HTTP y el contenido completo de la ISO se accedió mediante Samba.