Skip to content

Instantly share code, notes, and snippets.

@victor-oliveira1
Last active January 30, 2023 03:02
Show Gist options
  • Save victor-oliveira1/ef0852e705e3f18b79f03cf1e7db48ec to your computer and use it in GitHub Desktop.
Save victor-oliveira1/ef0852e705e3f18b79f03cf1e7db48ec to your computer and use it in GitHub Desktop.
Instalando Windows via PXE no Linux

Introdução

O intuito desde documento é orientar como realizar a instalação do Windows utilizando um sistema Linux.
Para este tutorial, foi utilizado o sistema Debian Bullseye (stable), mas pode funcionar em qualquer distribuição Linux.
IMPORTANTE: Usado apenas para boot no modo legacy. Estou testando e irei documentar como fazer uma imagem híbrida com EFI.

Funcionamento

Com base na imagem de instalação do Windows, é necessário criar uma imagem pequena, usada apenas para fazer o carregamento na memória, para à partir desta, realizar a instalação principal do Windows usando um compartilhamento de arquivo samba.

Requerimentos

  1. Imagem do Windows (Seguem os links para download: Windows 10, Windows 11
  2. Sistema Linux

Pacotes necessários

Usando o gerenciador de pacotes de sua distribuição (Debian like: apt, RedHat like: yum/dnf), instale os pacotes abaixo:

  1. dnsmasq
  2. pxelinux
  3. syslinux-common
  4. samba
  5. wimtools
  6. genisoimage

Realizando a configuração

  1. Crie o arquivo /etc/dnsmasq.d/pxeboot.conf com o conteúdo abaixo:
interface=<interface de rede>
dhcp-range=192.168.0.50,192.168.0.200,255.255.255.0,1h
dhcp-boot=pxelinux.0,pxeserver,192.168.0.1
pxe-service=x86PC, "Install Linux", pxelinux
enable-tftp
tftp-root=/srv/pxeboot
  1. Crie o diretório /srv/pxeboot
  2. Copie os arquivos do diretório /usr/lib/syslinux/modules/bios/ para /srv/pxeboot
  3. Copie o arquivo /usr/lib/PXELINUX/pxelinux.0 para /srv/pxeboot
  4. Crie o arquivo /srv/pxeboot/pxelinux.cfg/default com o seguinte conteúdo:
UI         menu.c32
MENU TITLE Network Boot
TIMEOUT    50

LABEL      winpe
MENU LABEL Boot Windows PE from network
KERNEL     /memdisk
INITRD     winpe.iso
APPEND     iso raw

LABEL      localboot
MENU LABEL Boot from local disk
LOCALBOOT  0
  1. Crie o diretório /srv/pxeboot/winimage
  2. Extraia o conteúdo da imagem ISO do Windows para o diretório /srv/pxeboot/winimage
  3. Crie o arquivo /srv/pxeboot/winimage/start.cmd com o conteúdo abaixo:
wpeinit
ping -n 5 192.168.0.1 > nul
net use I: \\192.168.0.1\winimage
I:\setup.exe
cmd
pause
  1. Crie a imagem de boot inicial do Windows com o comando abaixo:
mkwinpeimg /srv/pxeboot/winpe.iso \
    --iso \
    --windows-dir /srv/pxeboot/winimage/ \
    --start-script /srv/pxeboot/winimage/start.cmd
  1. Adicione as linhas abaixo no arquivo /etc/samba/smb.conf:
[winimage]
path = /srv/pxeboot/winimage/
guest ok = yes
  1. Inicie os serviços necessários com o comando abaixo:
systemctl start smbd dnsmasq
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment