HOWTO
para criação de imagens para boot remoto
Frederico
Henrique Goldschmidt Neto
V2.1 Janeiro de 2000
1. Introdução
1.1 A Origem da Idéia
1.2 Como Funciona o Processo
1.3 Considerações Sobre o Processo
1.4 Finalidade deste HOWTO
2. Criando as Imagens
2.1 Arquivos Utilizados no Servidor
2.2 Arquivos Utilizados no Cliente
2.3 Criando Imagens para Windows 95
2.3.1 Salvando a Imagem no Servidor
2.3.2 Configurando Arquivos do Servidor para
a Nova Imagem
2.4 Criando Imagens para Windows NT
2.4.1 Salvando a Imagem no Servidor
2.4.2 Configurando Arquivos do Servidor para
a Nova Imagem
2.5 Criando Imagens para Linux
2.5.1 Salvando a Imagem no Servidor
2.5.2 Configurando Arquivos do Servidor para
a Nova Imagem
3. Considerações
finais
3.1 Dicas
3.2 Resolução de Problemas
1. Introdução
1.1 A Origem da Idéia
A implantação da estratégia de boot remoto para
máquinas de laboratórios de informática foi iniciada
no segundo semestre de 1997. Diversos fatos contribuiram para adoção
desta estratégia, tais como:
Necessidade de diferentes configurações de software e
sistemas operacionais para as aulas em laboratório.
Dificuldade de implantação de boot remoto para windows
95 em servidor Novell.
Reinstalação frequente de programas devido a problemas
com softwares.
Constantes interrupções de aulas por falta de programas,
deleção de ícones, máquinas sem sistema operacional.
Descontentamento de professores, alunos e funcionários com a
situação dos laboratórios
Analisando o cenário descrito acima, tornou-se necessário
a solução do problema de uma forma eficiente e definitiva.
Foram analisadas diversas alternativas para solucionar o problema, tendo
sido adotada a solução de Marc Vuilleumier Stückelberg,
Sandro Viale e David Clerc, descrita no documento Linux
Remote-Boot mini-HOWTO, com algumas modificações para
adequação a nossa realidade.
Baseado nesta documentação, adquirimos as eproms para
boot remoto via tcp/ip comercializadas pela InCom,
não antes sem testar a solução através de download
de um demodisk disponível naquele site para simulação
do processo de boot.
Atualmente temos esta solução em uso em nossos cinco Campi
(laboratórios com 21 máquinas), e em dois laboratórios
no Campus principal (165 + 63 máquinas). Em todos os laboratórios
o servidor responsável pela tarefa de prover o boot-remoto utiliza
como sistema operacional o Linux (RedHat 5.0).
1.2 Como Funciona o Processo
- Ao ligarmos a máquina, a eprom de boot remoto toma conta do
processo de boot.
- A eprom faz uma requisição BOOTP/DHCP para obter os parametros
de configuração IP
- Se o endereço MAC da máquina for conhecido pelo servidor
(estiver no arquivo /etc/dhcpd.conf), será enviada uma resposta
BOOTP/DHCP contendo informações tais como endereço
IP do cliente, default gateway e qual imagem de boot deverá ser
solicitada.
- A eprom de boot carrega via TFTP a imagem do servidor, esta imagem
nada mais é do que o programa bpbatch.P, que será
o responsável por interpretar as requisições em tempo
de boot
- O interpretador procura pelo item "option-155" nas command-line
options, para saber o nome do batch a ser executado.
- As instruções contidas no arquivo batch são executadas.
Entre elas:
- Carregar definições de teclado;
- Autenticar usuário em um servidor remoto (Unix, Radius ou Windows
NT).
- Permitir que o usuário escolha que sistema operacional deseja
trabalhar.
- De acordo com a escolha do sistema operacional, reparticionar o disco
e realizar formatação rápida caso seja necessário.
- Checar se a versão da imagem armazenada no fim do disco é
a mesma do servidor, atualizando-a se necessário.
- Descomprimir a imagem existente no fim do disco na partição
principal.
- Se o sistema operacional for Linux, carregar o kernel e iniciá-lo.
- Se o sistema for DOS ou Windows, disparar o sistema operacional com
a imagem descompactada.
Desta forma os computadores dos laboratórios podem ser desligados
no botão, sem haver a necessidade de preocupações
em finalizar a máquina, acabando também com os problemas
de re-instalação de software, desaparecimento de ícones,
papeis de parede com motivos não convencionais, etc.
A instrução a ser dada ao aluno ou professor em caso de
problemas é: Reinicia máquina que tudo volta a funcionar
!!!
1.3 Considerações
Sobre o Processo
Como o processo de criação de imagem se baseia em compressão
de dados de disco rígido, quando utilizamos o windows 95 como sistema
operacional, devemos atentar para a característica deste sistema
de tentar reconhecer novos hardwares a cada boot, isto é, esta solução
funciona adequadamente em ambientes homogêneos, com máquinas
que possuam a mesma configuração de hardware, pois a criação
de uma imagem para cada PC torna inviável o processo, devido ao
grande espaço necessário no servidor para armazenar estas
imagens.
1.4 Finalidade deste HOWTO
A primeira versão deste HOWTO teve como finalidade servir de
material de consulta para os funcionarios responsáveis pelos laboratórios
de informática existentes na UPF, pois como nossa instituição
funciona em uma estrutura multi-Campi, tornava-se inviável a administração
e geração de imagens de boot de forma centralizada.
Aproveitando a oportunidade, colocamos a disposição destes
mesmos funcionários a versão deste HOWTO na INTERNET, para
que as atualizações, bem como resolução de
possíveis problemas fossem documentadas em um único lugar.
Em contatos mantidos com os idealizadores da idéia, acabou sendo
criado um link a partir da página original para esta, para que as
experiências fossem compartilhadas..
Comentários, sugestões, correções serão
bem-vindas, bastando para isto enviar-me um e-mail
.
2. Criando as Imagens
2.1 Arquivos Utilizados no
Servidor
- dhcpd - Arquivo residente no /usr/sbin, ja disponibilizado na
distribuição do RedHat.
Este programa é responsável pelo atendimento da solicitação
BOOTP/DHCP, ou seja a configuração de rede da máquina
cliente.
Em nosso caso, como um de nossos servidores possui 3 placas de rede, para
diminuir o domínio de colisão, foi necessário atualizar
o dhcpd, visto que o existente não atendia requisições
em mais de uma interface. Utilizamos o dhcpd existente no www.isc.org.
- dhcpd.conf - Arquivo residente no diretório /etc, neste
arquivo identificamos os clientes a serem atendidos pelo servidor, bem
como as informações a serem enviadas em resposta a uma solicitação
BOOTP/DHCP. Abaixo um exemplo deste arquivo:
shared-network BOOT {
subnet 192.168.41.0 netmask 255.255.255.0 {
option domain-name "upf.tche.br";
option routers 192.168.41.1;
option domain-name-servers 192.168.41.1;
default-lease-time 7200;
max-lease-time 86400;
range 192.168.41.50 192.168.41.60;
}
}
group {
filename "/tftpboot/bpbatch.P";
option domain-name "upf.tche.br";
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.41.255;
option routers 192.168.41.1;
option domain-name-servers 192.168.41.1;
option option-155 "menu";
default-lease-time 7200;
max-lease-time 86400;
host bootp1 { hardware ethernet 08:00:00:19:67:23;
fixed-address 192.168.41.50; }
}
Maiores detalhes sobre os campos deste arquivo podem ser obtidos através
de consulta a man page do dhcpd e dhcpd.conf.
- tftpd - Utilizar o fornecido pela InCom (tftpd extended). Este
utilitário permite a transferência de arquivos com blocos
de 1048 bytes ao invés dos 512 bytes que é o tamanho máximo
de bloco quando se utiliza o in.tftpd nativo do LINUX.
Este programa atende as solicitações de carga de arquivos
das máquinas clientes.
Possuímos versão
compilada para Linux em nosso ftp.
2.2 Arquivos Utilizados no
Cliente
- mrzip.exe/mrzip - Programa responsável pela criação
de imagem comprimida do disco rígido (Windows e Linux).
2.3 Criando Imagens para
Windows 95
Adicione no servidor Linux um usuário para criação
de imagens, crie no home deste usuário três diretórios:
imagens copie para este diretório o arquivo mrzip.exe.
softwares copie para este diretório os discos do windows
95, bem como outros softwares que se queira instalar via rede.
tftpboot diretório onde serão armazenadas as imagens
para boot, copie para este diretório os arquivos bpbatch.P, bpbatch.hlp,
bpbatch.ovl .
Crie um link simbólico do arquivo /etc/dhcpd.conf para
o diretório tftpboot do usuário (não esqueça
de dar permissão de escrita neste arquivo para este usuário),
crie também um link simbólico do diretório tftpboot
deste usuário para o diretório /, desta forma a pessoa responsável
pela criação das imagens não necessita de acesso como
root ao sistema.
Crie um script de inicialização do serviço de tftp,
este script pode estar localizado abaixo do diretório /etc/rc.d,
sendo chamado a partir do arquivo /etc/rc.d/rc.local.
O tftpd extended pode atender tanto na porta 59 como na 69, bastando para
isto deixar comentada a linha deste serviço no arquivo /etc/inetd.conf.
Exemplo abaixo:
#!/bin/bash
/usr/sbin/tftpd -v 1 -s 1408 59 -r -h -d /tftpboot &
Instale o windows 95 em uma das máquinas que utilizarão
o esquema de boot remoto, procure deixar a instalação o mais
enxuta possível, isto é, elimine tudo aquilo que não
será utilizado pelo usuário (Microsoft Fax, Opções
de Acessibilidade, Microsoft Exchange, etc ..), não esqueça
de configurar a parte de rede (tcp/ip), pois será necessário
acessar o servidor linux para gravar a imagem.
Crie um arquivo no diretório imagens do servidor, w95.mrz, por
exemplo, este arquivo deverá conter instruções para
o mrzip gerar a imagem do cliente (windows 95) no servidor, abaixo exemplo
deste arquivo:
showlog
hidebootprom
filter -"temp/*"
filter -"*.swp"
set FragmentSize="85 Mb"
fullzip "c:/" "d:/w95.imz"
Como a imagem será gerada a partir do disco rígido de
um PC, as configurações que serão carregadas nas outras
maquinas após a carga da imagem serão iguais, o que ocasionará
problemas na rede, pois todas as máquinas possuirão o mesmo
IP e nome.
Para evitar tal problema, devemos alterar o registro do windows 95 em
tempo de carga dos arquivos iniciais do sistema (autoexec.bat, config.sys),
adotando os seguintes procedimento:
- Criar um arquivo com os ítens do registro que deverão
ser alterados, por exemplo:
REGEDIT4
[HKEY_LOCAL_MACHINE\Network\Logon]
"username"=""
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\control\ComputerName\ComputerName]
"ComputerName"="${macid}"
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\VxD\VNETSUP]
"ComputerName"="${macid}"
A variável "${macid}" será traduzida pelo bpbatch
em tempo de boot para os seis últimos números representativos
do endereço MAC da placa de rede.
Salvar este arquivo no servidor, no diretório tftpboot com o nome
de patch.ref, por exemplo.
- Adicionar a seguinte linha no arquivo autoexec.bat:
REGEDIT /L:c:\WINDOWS\SYSTEM.DAT /R:C:\WINDOWS\USER.DAT C:\BOOT\altera.REG
2.3.1 Salvando a Imagem no
Servidor
- Informar na na janela de logon do windows o nome do usuario criado
no servidor linux para criação das imagens
- Entrar no Windows Explorer selecionar a opção
Ferramentas/Mapear Unidade de Rede, no ítem caminho
informar o nome do compartilhamento no servidor que será utilizado
para a geração da imagem (\\servidor\usuario)
- Entrar no prompt do DOS, na unidade de rede atribuída quando
executado o mapeamento e executar o mrzip, por exemplo:
d:\>mrzip w95
- Após a execução do comando, o disco rígido
será comprimido, e a imagem será gerada no diretório
de imagens do servidor (arquivo com extensão imz).
Caso a imagem ultrapasse o tamanho setado através da opção SetFragmentSize,
serão gerados arquivos com extensão .imN, onde N
representa o número de seqüencia da imagem.
A opção SetFragmentSize não deveria ser necessária,
mas em algumas gerações de imagens houve problema de loop
de carregamento de arquivo devido ao tamanho da primeira imagem ter ultrapassado
os 90 Mb.
2.3.2 Configurando Arquivos
do Servidor para a Nova Imagem
Passos a serem seguidos:
- Mover do diretório imagens para o diretório tftpboot
os arquivos com extensão im*
- Criar arquivo para procedimentos de boot a serem executados pelo bpbatch.
Este arquivo deverá ter o mesmo nome da imagem e a extensão
bpb,abaixo exemplo deste arquivo:
drawgif "logo.gif"
hidelog
setpartitions "bigdos:1024"
setbootpart 1
fullunzip "w95.imz" 1
set macid = "$BOOTP-Client-ID"{3-6}
patch "patch.ref" "{:1}windows/patch.reg"
hidebootprom
hdboot :1
2.4 Criando Imagens para
Windows NT
Como o mrzip não suporta NTFS, a solução para criar
uma imagem do NT é instala-lo usando a FAT16, desta forma o mrzip
conseguirá ler o sistema de arquivos gerando a imagem desejada.
O procedimento para instalação do NT é o seguinte:
Copie o seu w95.bpb para wnt.bpb, modificando as partições
através da alteração da cláusula
setpatitions --> setpartitions "BIGDOS:512 BIGDOS:512"
Reinicie sua máquina usando o novo script
Instale o NT no drive C
Remova o windows 95 do disco
Edite o boot.ini (c:\boot.ini), retirando a linha que faz referencia
ao boot pelo windows 95
Se sua imagem for utilizada em mais de uma máquina, será
necessário inibir a rede do NT, pois não é possível
importar dados antes da carga do sistema operacional, como é feito
no windows 95, desta forma assim que a segunda máquina entrar no
ar, acontecerão problemas de nomes e ips repetidos.
Acesse as propriedades do Meu computador-->Perfis de hardware-->propriedades
de configuração original, na opcão rede, marque
perfil de hardware com rede desativada
Reinicie sua máquina, pressionando a barra de espaço
para abortar o boot remoto, ou utilize a opção hdboot
do bpbatch, fazendo as modificações que julgar necessário.
2.4.1 Salvando a Imagem no
Servidor
Como o NT não permite acesso direto ao disco, o mrzip
não consegue ler os setores de boot. A melhor maneira para gerar
a imagem no servidor é usar a imagem do windows 95, rodando o mrzip
de dentro de uma janela DOS. Para que isto seja feito é necessário
mudar o arquivo winnt.bpb, fazendo que a imagem do windows 95 seja
restaurada na segunda partição, ficando desta forma a primeira
com o NT, podendo-se gerar a imagem. Abaixo como deve ficar o winnt.bpb:
hidelog
setpartitions "BIGDOS:512 BIGDOS:512"
setbootpart 2
fullunzip "win95.imz" 2
hidebootprom
hdboot :2
- Se você tiver algum patch (alteração de registro
do windows), mude para "{:2}"
- Inicie sua máquina com este script, desta forma voce terá
o windows 95 rodando no drive C e o todos os arquivos do NT no drive
D
- Gere a imagem do NT exatamente como se fosse a do windows 95, trocando
o drive de origem para D
2.4.2 Configurando Arquivos
do Servidor para a Nova Imagem
- Altere novamente o winnt.bpb como abaixo:
hidelog
setpartitions "BIGDOS:512 BIGDOS:512"
setbootpart 1
fullunzip "winnt.imz" 1
clean 2
#fullunzip "win95.imz" 2
#hdboot :2
hidebootprom
hdboot :1
- A configuração do NT está pronta, você pode
usar uma partição só, mas no caso de precisar gerar
novamente a imagem, será necessário refazer o winnt.bpb,
sendo que para fins educacionais é até bom ter a segunda
partição livre, pois os alunos poderão formatá-la
com o NTFS
2.5 Criando Imagens para
Linux
- Instale o Linux com todos os pacotes que julgar necessário.
- Dependendo da distribuição que for usada, será
necessário atualizar o kernel pelo menos até a versao 2.0.32,
pois caso se deseje acrescentar o suporte a filecache, o patch fornecido
(filecache.tar.gz)
é para esta versão do kernel (verifique esta informação
no arquivo patch-filecache).
- A documentação sobre como aplicar patch ao kernel pode
ser obtida no arquivo /usr/src/linux/README, enquanto que os patches
para o kernel podem ser obtidos em ftp.kernel.org
.
- Para aplicar o patch-filecache, copie este arquivo para o diretorio
/usr/src, e digite o comando: cat patch-filecache | patch -p0.
- Rode o make menuconfig, ou make xconfig, habilitando
dentro do ítem filesystems a opção filecache.
- Recompile e instale o novo kernel.
- Copie o arquivo binário filecache para o diretório
/sbin.
- Crie um mount-point chamado /cache (mkdir /cache).
- Crie um arquivo no /etc com o nome de filecache.conf,
adicionando as seguintes linhas:
Max 100 MB 50 % #
Cache /cache /usr
- Crie uma entrada no /etc/fstab para o mount-point, exemplo abaixo:
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 swap swap defaults 0 0
/dev/fd0 /mnt/floppy ext2 noauto 0 0
192.168.5.99:/tftpboot/usr /cache nfs defaults
none /proc proc defaults 0 0
- Copie o conteúdo do /usr para o servidor.
- Exporte no servidor, o diretório escolhido como repositório
do /usr das imagens Linux atraves do /etc/exports, abaixo exemplo
deste arquivo:
/tftpboot/usr 192.168.73.0/255.255.255.0(no_root_squash,ro)
- Mova o diretório /usr para /usr.orig
- Crie um link simbólico do /cache para /usr ( ln
-s /cache /usr).
- Copie o arquivo filecache.init para o diretório /etc/rc.d/init.d
- Crie um link simbólico de /etc/rc.d/rc3.d/S35filecache para
/etc/rc.d/init.d/filecache.init. (ln -s /etc/rc.d/init.d/filecache.init
/etc/rc.d/rc3.d/S35filecache).
- Reinicie a sua máquina com a nova configuração,
verificando se tudo funciona a contento.
- Para que o linux use o bootp para configurar a interface de rede, é
necessário alem de habilitar esta opção no kernel,
alterar o arquivo /etc/sysconfig/scripts/ifcfg-eth0, veja exemplo
abaixo:
DEVICE=eth0
#IPADDR=192.168.41.113
#NETMASK=255.255.255.0
#NETWORK=192.168.41.0
#BROADCAST=192.168.41.255
BOOTP=yes
ONBOOT=yes
- Reinicie sua máquina e verifique se a interface de rede será
corretamente configurada.
- Tudo funcionando, remova o diretório /usr.orig, e sua
imagem do Linux está pronta.
2.5.1 Salvando a Imagem no
Servidor
- Copie o kernel atual de sua máquina para o diretório
/tftpboot do servidor, com o nome de kernel.krn.
- Copie o arquivo mrzip para a sua máquina, para o diretório
"/tmp".
- Crie um arquivo de instruções para o mrzip, com
o nome de linux.mrz, exemplo abaixo:
showlog
filter -"tmp/*"
fullzip "/" "/tmp/linux.imz"
- Execute o mrzip (./mrzip linux).
- Copie o arquivo linux.imz gerado no diretorio /tmp para
o diretório /tftpboot do servidor.
2.5.2 Configurando Arquivos
do Servidor para a Nova Imagem
- Crie um arquivo linux.bpb (instruções para o bpbatch)
, no diretório /tftpboot, exemplo abaixo:
hidelog
setpartitions "linux-ext2:992 linux-swap:32"
fullunzip "linux.imz" 1
clean 2
linuxboot "linux.krn" "root=/dev/hda1"
- Inclua a opção de boot para linux em seu menu de opções.
3. Considerações
Finais
3.1 Dicas
- Mantenha no servidor linux cópia dos softwares utilizados nas
estações, por exemplo windows 95, office, etc.., desta forma
o processo de reconfiguração de imagens poderá ser
otimizado através de acesso aos arquivos de software via rede.
- Quando estiver no processo de geração de imagens, procure
sempre usar uma segunda máquina para o teste da nova imagem, pois
em caso de algum esquecimento basta corrigi-lo na máquina onde a
imagem foi gerada.
- Crie atalhos dentro da área de trabalho dos programas mais usados
no windows
- Em ambiente de laboratórios, procure segmentar a rede adicionando
mais placas de rede ao servidor, bloqueando se possível o acesso
a rede do Campus
- Não esqueça de executar o comando chmod 755 no diretório
tftpboot, pois caso contrário o programa tftpd não conseguirá
carregar os arquivos.
- Caso sua imagem tenha X (interface gráfica), para que as definições
de teclado sejam usadas, é necessário descomentar a linha
XkbDisable, no arquivo de configuração (/etc/X11/XF86Config).
- Mantenha uma opção escondida no menu inicial, com a cláusula
interact, isto permitirá que você faça testes,
ou manutenções, sem precisar alterar o arquivo dhcpd.conf.
3.2 Resolução
de Problemas
- Não se consegue mapear o servidor no Windows Explorer.
Verifique se o tcp/ip está corretamente configurado, selecione
o tcp/ip como protocolo padrão.
- Mensagem de erro alertando sobre mesmo nome de computador na rede
ou desabilitando a interface de rede
Verifique se o registro do windows foi alterado, provavelmente foi
esquecida a chamada do regedit no autoexec.bat, ou a alteração
do arquivo patch.ref, atraves do comando patch, dentro do arquivo bpb responsável
pela carga da imagem.
- Problemas com a carga de imagens.
Reinicie a máquina, este problema geralmente ocorre devido a
timeout do reply do servidor de tftp.
- DHCP não funciona.
Adicione a seguinte linha no /etc/rc.d/rc.local, ou outro script de inicialização:
route add -host 255.255.255.255 eth0