Blog dos Cursos | Instalação Windows ou Linux Via Rede - Blog dos Cursos
Literatura Americana – Ernest Hemingway
Publicado em 4 de nov, 2014
Boot pela rede com Linux
O boot pela rede é o processo de carregar um sistema operacional pela rede ao invés do disco rígido. Muitos thin clientes (mini computador que depende um servidor central) não tem disco e carregam um sistema operacional básico pela rede.
Também pode ser utilizado para montar rede de clusters (centenas de computadores trabalhando de forma simultânea em uma determinada tarefa), para fazer instalações, fazer manutenções e usar o computador sem depender do sistema que está no HD.
"Bootando" pela rede com o PXE, iPXE e nginx
PXE é um protocolo usado por quase todas as placas de rede. Computadores com placa de rede integrada costumam ter uma opção na BIOS para dar boot pela LAN, ou alguma opção para ativar o tal do PXE, é só fuçar na bios que você acha.
Na hora do boot, o programa iPXE (um carregador de sistemas operacionais) vai ser transferido do servidor para o cliente por TFTP, e então vai apresentar um menu com opções e o sistema a ser transferido por HTTP.
Nem todo sistema operacional ou distribuição Linux pode ser carregada pela rede. Neste exemplo vou configurar um Linux para funcionar como servidor, disponibilizando GParted, para baixar, clique aqui.
Live para boot via rede:
1º: No servidor Linux, como root, criar o diretório /tftproot
2º: Instalar o dnsmasq (servidor tudo em 1: DHCP, TFTP, PXE, DNS), e editar o arquivo /etc/dnsmasq.conf O resto das linhas está comentado – "#" (altere estes IPs pelos utilizados na sua rede):
pxe-service=x86PC, "Boot from local disk"
pxe-service=x86PC, "iPXE – Open Source Boot Firmware", undionly
3º: Instalar o nginx (pode ser Apache ou outro servidor web, estou usando ele porque é leve e fácil de configurar).
Editar ou criar o arquivo /etc/nginx/sites-enabled/default
location /tftproot/ {
alias /tftproot/;
(O importante mesmo são estas últimas linhas em amarelo, as demais não precisam ser alteradas)
4º: Criar o arquivo /tftproot/menu.ipxe (troque o endereço 192.168.0.1 pelo IP do seu servidor):
set boot-url http://192.168.0.1/tftproot
menu iPXE boot
menu item –gap — ————————- Operating systems ——————————
item –gap — ————————- Advanced options ——————————-
item –key c config Configure settings (c)
item –key r reboot Reboot computer (r) item
item –key x exit Exit iPXE and continue BIOS boot (x)
choose –timeout ${menu-timeout} –default ${menu-default} selected || goto cancel
kernel ${boot-url}/vmlinuz boot=live config union=aufs noswap noprompt vga=788 fetch=${boot-url}/filesystem.squashfs
initrd ${boot-url}/initrd.img
(este é o menu do iPXE para escolher o sistema operacional)
5º: Baixar a ISSO do GParted Live. Montar/Abrir a ISSO, entrar no diretório live e extrair apenas os arquivos filesystem, squashfs, initrd.img e vmlinuz para /tftproot/ no servidor.
6º: Entrar no site http://www.rom-o-matic.eu/ para gerar o seu iPXE personalizado. Escolher a opção "UNDI Only (.Kpxe)", não alterar as outras opções, colar o script personalizado que está logo abaixo, e clicar no botão para continuar:
(colar lá na página do rom-o-matic, em "Embedded script")
Observe: Tenho uma versão pronta do iPXE aqui: (http://rafa.eng.br/arquivos/undionly.rar)
7º: Salvar o arquivo, renomear para undionly.0 e copiar para o servidor em /tftproot/
8º: Reiniciar o dnsmasq e testar se o nginx está funcionando. O dnsmasq é meio chato mesmo, não funciona junto com outros servidores de DHCP no mesmo servidor nem na mesma rede. O nginx não costuma dar problemas, é só abrir um navegador e digitar o endereço IP do servidor para verificar se aparece uma página inicial.
9º: Ligar o Computador a ser "Bootado". Ele precisa estar na mesma rede física do servidor (conectados por cabo no mesmo switch, ou até um cabo crossover entre os dois), e também precisa estar com a opção de boot pela rede ativada na BIOS. Dá para testar com o VMware também (aperte F12 na tela de boot), a placa de rede virtual precisa estar no modo bridge.
Se estiver tudo funcionando, o Computador vai se comunicar com o servidor e mostrar a opção iPXE – OpenSource Boot Firmware:
INSTALANDO O WINDOWS 7 OU WINDOWS 8 PELA REDE
Se por acaso você está precisando instalar o Windows 7 ou Windows 8 em um computador que não consegue dar boot nem pelo DVD nem por USB, ou você está com preguiça de limpar o seu pendrive lotado, então você veio ao lugar certo!!!
Aproveite toda a configuração feita acima no "boot pela rede" e continue seguindo os passos:
1º Copiar os arquivos de driver da placa de rede do computador que você vai instalar, compatível com o Windows que você vai usar (7 ou 8, x32 ou x64) e salvar em algum diretório temporário no servidor (são os arquivos .cat, .inf e .sys).
A parte chata é que estes drivers precisam ser carregados manualmente para a rede funcionar durante a instalação do Windows.
Neste exemplo vou inserir os drivers da placa de rede dentro da imagem de boot do Windows. Mas você pode copiar os drivers para um pendrive apenas para conectar na rede para continuar a instalação.
Se você usar a ISSO/DVD de instalação do Windows x64, baixe os drivers para x64. Se sua ISSO é para instalar a versão x32 ou é versão "all in one" (x32 e x64), baixe os drivers para x32.
2º Compartilhar o DVD (ou a ISO extraída) no servidor através do Samba. Exemplo de compartilhamento público (/etc/samba/smb.conf)
3º Copiar do DVD (ou ISSO) do Windows os arquivos bootmgr (está na raiz), sources/boot.wim,boot/boot.sdi e boot/bcd, colando em /tftproot/ no servidor. (se for o Windows 8, copie tambémboot/fonts/segmono_boot.ttf, boot/fonts/segoe_slboot.ttf e boot/fonts/wgl4_boot.ttf para /tftproot/).
4º Editar o arquivo /tftproot/menu.ipxe adicionando um novo item:
item win7 Boot Windows 7
initrd ${boot-url}/bcd BCD
initrd ${boot-url}/boot.sdi boot.sdi
initrd ${boot-url}/segmono_boot.ttf segmono_boot.ttf
initrd ${boot-url}/segoe_slboot.ttf segoe_slboot.ttf
initrd ${boot-url}/wgl4_boot.ttf wgl4_boot.ttf
imgstat boot || goto failed
(as linhas em amarelo são só para o Windows 8)
5º Baixar o wimboot e copiar o arquivo para /tftproot/ no servidor (download alternativo: http://rafa.eng.br/arquivos/wimboot.rar)
6º Inserir os drivers na imagem boot.wim, é necessário instalar o wimlib, geralmente não vem com o Linux então você precisa procurar uma versão para a sua distribuição, ou tentar com a mina versão compilada com bibliotecas estáticas (download: http://rafa.eng.br/arquivos/wimlib-imagex.rar)
Digitar estes comandos no servidor para inserir os arquivos de driver na imagem:
wimlib-imagex update /tftproot/bootwin8.wim 2 –command="add /tmp/drivers /drivers"
(os arquivos .cat, .inf e .sys estão em /tmp/drivers/ no servidor)
Obs: Dá para adicionar os drivers de outra maneira, com o imagex e dism no Windows, ou então copiar em pendrive
7º Ligar o computador a ser instalado, ativando a opção de boot pela rede na BIOS, e escolher o item "BOOT WINDOWS 7" no menu do iPXE que vai aparecer. A instalação do Windows vai começar, mas não clique em nada
Aperte SHIFT+F10 para aparecer o prompt, siga os comandos:
O comando drvload carrega os drivers da placa de rede. Se você inseriu os drivers no arquivo boot.wim, então é a letra x: mesmo. Se você copiou os drivers para um pendrive, então troque pela letra correspondente. (Digite dir d: ou dir e: (f,g,h…) até encontrar a letra do pendrive).
O comando net use conecta no servidor fazendo login como usuário guest (convidado), e senha em branco. Você pode fazer login como outro usuário.
Pronto, a letra z: está mapeada para o DVD do Windows compartilhado no servidor. É só executar o setup.exe dentro do sources e continuar a instalação.