Remote Boot and PXE Configuration 
Para instalação remota, que pode ser via NFS, FTP, HTTP, CDROM, é necessário um boot inicial no
node que pode ser um disquete, um cd, um pendrive ou através do pxe. O kickstart facilita a instalação pois automatiza o processo sem a necessidade de intervenção do
administrador. Utilizando o kernel padrão da distribuição podemos configurar o boot do mesmo com a opção:
linux ks=floppy 
o instalador anaconda procura o arquivo no disquete ou 
linux ks=file:\ks.cfg 
o instalador procura no mesmo diretorio de instalação ou 
linux ks=nfs:192.168.1.200:/export/ks.cfg
onde o instalador procura pela rede e utiliza o sistema de arquivos nfs.
Vamos ao passo a passo para configurar uma instalação com PXE e NFS:
 
-  Primeiramente, é necessário instalar um DHCP server. O arquivo de configuração /etc/dhcpd.conf, baseado na versão 3.x, deve ser parecido com:
# sample configuration file for DHCP ISC 3.0  
ddns-update-style none;  
option space PXE;  
option PXE.mtftp-ip code 1 = ip-address;  
option PXE.mtftp-cport code 2 = unsigned integer 16;  
option PXE.mtftp-sport code 3 = unsigned integer 16;  
option PXE.mtftp-tmout code 4 = unsigned integer 8;  
option PXE.mtftp-delay code 5 = unsigned integer 8;  
option PXE.discovery-control code 6 = unsigned integer 8;  
option PXE.discovery-mcast-addr code 7 = ip-address;  
# PXE specific options  
class "pxeclients" {  
=match if substring (option vendor-class-identifier, 0, 9) = =  
"PXEClient";  
option vendor-class-identifier "PXEClient";  
vendor-option-space PXE;  
=# At least one of the vendor-specific options must be set in order =  
# for the boot ROM on the client to recognize us as a PXE  
# compliant server. We set the MCAST IP address to 0.0.0.0 to tell  
# the boot ROM we can't provide multicast TFTP, so it will have to  
# use just plain ol' TFTP instead (address 0.0.0.0 is considered  
# as "no address").  
option PXE.mtftp-ip 0.0.0.0;  
}  
subnet 200.136.80.0 netmask 255.255.255.0  
{  
}  
subnet 192.168.1.0 netmask 255.255.255.0 {  
deny unknown-clients;  
min-lease-time 300;  
default-lease-time 1800;  
max-lease-time 1800;  
use-host-decl-names on;  
option subnet-mask 255.255.255.0;  
option routers 192.168.1.200;  
host node01  
{  
hardware ethernet 00:30:48:71:24:23;  
fixed-address node01;  
filename "/tftpboot/pxelinux.0";  
}  
host node02  
{  
hardware ethernet 00:30:48:71:23:A3;  
fixed-address node02;  
filename "/tftpboot/pxelinux.0";  
}}  
 
-  Lembrar de configurar todas as interfaces de rede, mesmo que ela não ofereça o serviço, deixando a em branco. 
-  A seguir, basta instalar o tftp server, normalmente é utilizado o tftp-hpa. 
-  Carregar o serviço com o daemon xinetd. 
-  Verifique se o serviço está ok em /etc/xinetd.d/tftp
-  Com os serviços configurados, agora precisamos configurar o diretório /tftpbootonde o pxe e o sistema carregarão as configurações e o boot para a instalação.
 
Note que em 
dhcpd.conf (
filename "/tftpboot/pxelinux.0";) 
é definido o arquivo binário de boot. Esse arquivo pode ser copiado do próprio cd de instalação ou 
http://syslinux.zytor.com/pxe.php 
 
No Redhat esse arquivo pode ser encontrado em 
/usr/lib/syslinux/pxelinux.0
 
-  A seguir criamos um arquivo de configuração baseado no lilo.conf em 
/tftpboot/pxelinux.cfg/default 
e como exemplo:
# Mensagem a ser apresentada  
DISPLAY pxelinux.cfg/message.txt  
# timeout de espera  
TIMEOUT 100  
# Sempre mostrar o prompt  
PROMPT 1  
# Default e' realizar o boot normal  
DEFAULT boot  
LABEL boot  
LOCALBOOT 0  
LABEL linux  
kernel vmlinuz  
append ks=nfs:192.168.1.200:/export/kickstart/linux.ks initrd=initrd.img devfs=nomount  
#console=ttyS1,19200  
 
-  Note que configuramos o boot, parecido com lilo.conf, porém ele será utilizado pelo node remotamente através do pxe.
-  Também podemos configurar a mensagem que aparece no boot remoto. Em
/tftpboot/pxelinux.cfg/message.txt 
conforme o arquivo anterior: 
DISPLAY pxelinux.cfg/message.txt
  
"boot" para boot via hd
“linux” para instalar o node
 
-  Lembre-se que os termos em “” depende da definição do arquivo anterior: LABEL linux.
-  Explicando sobre o kickstart:
# Kickstart file automatically generated by anaconda.  
 
-  Essa primeira parte define o teclado e o suporte de linguas
lang en_US.UTF-8  
langsupport --default en_US.UTF-8 en_US.UTF-8 pt_BR.UTF-8  
keyboard us-acentos  
 
-  Define se será configurado um mouse no sistema 
mouse genericwheelps/2 --device psaux  
  
reboot  
 
-  Metodo de instalacao pode ser upgrade ou install 
install
 
-  Modo de instalaçao se será grafico ou texto 
text
 
-  De onde posso pegar os arquivos para instalação, nesse caso, são os arquivos contidos no cd ou ftp da distribuição
-  NFS ou CD ou FTP ou HTTP
nfs --server 192.168.1.100 --dir /raid1/SL_308_i386  
#Configurando o X  
 
-  A primeira linha eh especifica para o node novo, a segunda eh generica, onde é detectada a placa de video
#xconfig --card "ATI Radeon (generic)" --videoram 16384 --hsync 30-70 --vsync 50-160 --resolution 1024x768 --depth 24 --defaultdesktop gnome  
xconfig --resolution 1024x768 --depth 24 --defaultdesktop gnome  
 
-  Definindo a placa de rede. Você pode definir como sera a placa de rede e quais interfaces
#network --device eth0 --bootproto dhcp  
network --device eth1 --bootproto dhcp  
 
-  Senha criptografada: itautec
rootpw --iscrypted $1$96lpAZKJ$RpfvtqR8nP9AHrScGgjQM.  
 
-  Habilita ou desabilita o firewall
firewall –disabled  
 
-  Define autenticacao e timezone
authconfig --enableshadow --enablemd5  
timezone America/Sao_Paulo  
#System bootloader, utiliza o grub como padrão e instala na mbr  
bootloader --location=mbr  
#Partition, particionamento automático  
zerombr yes  
clearpart --all  
part /boot --fstype ext3 --size 100 --asprimary  
part / --fstype ext3 --size 12288 --asprimary  
part swap --size 4096 --asprimary  
part /var --fstype ext3 --size 4096  
part /tmp --fstype ext3 --size 2048  
part /scratch --fstype ext3 --size 1 --grow  
 
-  Definicao dos pacotes a serem instalados. @ quer dizer que são grupos, os pacotes listados a seguir são opcionais aos grupos e os pacotes que possuem – no inicio, são para não serem instaladas mesmo sendo dos grupos.
%packages  
@ engineering-and-scientific  
@ brazilian-support  
@ admin-tools  
@ portuguese-support  
@ editors  
@ system-tools  
@ base-x  
@ graphics  
@ development-tools  
@ misc-sl  
@ gnome-desktop  
@ dialup  
@ apt-rpm  
@ yum  
@ openafs-client  
@ server-cfg  
pine  
-octave  
net-snmp-utils  
SL_enable_serialconsole  
anacron  
firefox  
-pvm  
-units  
kernel  
grub  
pcp  
-samba-client  
-blas  
kernel-module-openafs-2.4.21-47.0.1.ELsmp  
-lam  
kernel-smp-unsupported  
-lapack  
kernel-smp  
 
-  Aqui voce pode personalizar a instalacao, rodando scripts bash padrao após a instalacao basica. Um detalhe, eh que na instalacao o source (onde estao os arquivos) esta montado em /mnt/source e o seu hd (o sistema que foi instalado) em 
/mnt/sysimage
%post --nochroot  
 
-  Aqui por exemplo, configura os serviços que serão ou não utilizados
echo "Configurando chkconfig"  
for f in sshd  
{chroot /  
mnt/sysimage chkconfig ${f} on  
}  
for f in cups hpoj pcmcia rhnsd sendmail yum  
{chroot /  
mnt/sysimage chkconfig --level 23456 ${f} off  
}