Autor: sHakY
Data: 14/04/2002.
Sem d�vida alguma, nas atuais redes se observa que o pessoal tecnico luta por manter-se com as demandas de conectividad, mudan�as e recon-figura��es da mesma, por isso � conveniente ter a configuracion e as imagenes de software numa estacion de arranque (ainda que podem ser mas). Assim ao arrancar os sistemas interactuan com um servo de arranque, tomam os parametros de arranque e opcionalmente descarregam software apropriado.
Como � sabido, cada computadora conectada a uma rede TCP/IP tem os seguintes dados:
Seu direccion IP. Sua m�scara de rede. A dire��o IP de um router. A dire��o IP de um servo de nomes.
Todo isto se guarda nos ficheros de configuracion de nosso sistema operativo.
Existem tr�s protocolos que permitem transfeir esta informacion pela rede:
RARP (Reverse A ddress Resolution Protocol) s� proporciona a direccion IP ao computador sem disco. Devido a isto RARP n�o est� implementado na maioria dos sistemas e se eliminou totalmente de TCP/IP v6.
BOOTP (Bootstrap Protocol) � um protocolo cliente/servo desenhado para proporcionar os quatro tipos de informa��o mencionados anteriormente, a um computador sem disco.
DHCP (Dinamic Host Configuration Protocol) � uma extens�o de BOOTP, � dizer, melhora-o.
Bem, uma maquina pode arrancar a traves da rede e operar sem um disco duro local usando um sistema de arquivos montado de um servo NFS, isso � o que se ver� a continua��o, haciendolo com FreeBSD ;) H� dois m�todos principais para carregar o kernel em nossas maquinas a traves da rede, assim que comecemos:
PXE: (Intel's Preboot Execution Enviroment system) a qual � uma forma rapido arranque ROM e se baseia principalmente em alguns cart�es de rede ou nas placas m�e. pxeboot(8) para mais detalhes.
The etherboot port: (/usr/ports/net/etherboot) permite que seja o arranque desde um cart�o de rede ou tamb�m de um floppy local (e tamb�m o disco duro) inclusive correndo um sistema MS-DOS. Segundo o manual muitas cart�es de rede s�o suportadas.
O instalar um sistema DHCP em sua rede, poupa-lhe um trabalho de configura��o para sua rede. Todas as computadoras pedem informa��o da rede e se configuram automaticamente, muito recomend�vel para um administracion facil.
** O metodo etherboot usa DHCP por default ou bootp (que precisa configurar-se) para "procurar" ao kernel. (Nota: PXE utiliza DHCP).
** O kernel usa BOOTP para achar a raiz NFS (NFS root)
** O servo isc-dhcp (que deve ser instalado) pode responder a peti��es BOOTP e DHCP.
O arquivo de configuracion deste servo � a menudo chamado /usr/local/etc/dhcpd.conf e consta do seguinte:
default-lease-time 600;
max-lease-time 7200;
authoritative;
option domain-name "example.com";
option domain-name-servers 192.168.4.1;
option routers 192.168.4.1;
subnet 192.168.4.0 netmask 255.255.255.0 {
use-host-decl-names on; (1)
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.4.255;
host margaux {
hardware ethernet 01:23:45:67:89:ab;
fixed-address margaux.example.com;
next-server 192.168.4.4; (2)
filename "/tftpboot/kernel.diskless"; (3)
option root-path "192.168.4.4:/data/misc/diskless"; (4)
}
}
Coment�rios: (1)Diz a dhcpd que envie nas declara��es host como o hostname para o host diskless. (2)Designa ao servo TFTP, por default se usa ao servo DHCP (3)Define o arquivo que etherboot usasse como kernel (4)D� o path ao sistema de arquivos raiz.
Agora h� que instalar (e possivelmente compilar) o package etherboot. Para nossa configuracion se usasse disquette de arranque; para fazer um, na maquina que tem instalado etherboot, situese no diret�rio src no arbol de etherboot e teclee:
# gmake bin32/tipo_de dispositivo.fd0.
tipo_de dispositivo depende do tipo de cart�o de rede da estacion de trabalho diskless. Vease o arquivo NIC no mesmo diret�rio para que determine o tipo de dispositivo.
Precisa-se ativar tftpd no servo que hara o papel de servo tftp; para isso:
** Cria-se um diret�rio do qual tftpd sera o servo de arquivos , � dizer: /tftpboot
** Agrega-se a seguinte linea a etc //inet.conf:
tftp dgram udp wait nobody /usr/libexec/tftpd tftpd
* Reiniciando o demonio inetd
# kill -HUP `cat /var/run/inetd.pid`
� poss�vel localizar o tftpboot em algun diret�rio do servo, mas estando seguro de que esta presente tanto em inetd .conf como em dhcpd .conf
Tambien � necess�rio ativar o servi�o NFS asi como exportar os sistemas de arquivos apropriados:
** Agregar isto a etc //rc.conf:
nfs_server_enable="YES"
** Exportar o sistema de arquivos onde diret�rio raiz do sistema diskless esta localizado, agregando o seguinte a etc //exports:
/data/misc -alldirs -ro margaux
** H� que lhe dizer a mountd que teve mudan�as no arquivo de configuracion:
# kill -HUP `cat /var/run/mountd.pid`
Bueno, este ponto se refere a criar um arquivo de configura��o do kernel para as esta��es cliente, para isso se agregam as seguintes op��es:
options BOOTP #Usando BOOTP para obter a direcc. IP options BOOTP_NFSROOT #Para montar o sistema de arquivos raiz a usar options BOOTP_COMPAT #H� QUE TRADUZIR
� poss�vel tambine agregar as op��es:
BOOTP_NFSV3 BOOTP_WIRED_TO
"Construa" o kernel e copie no diret�rio tftp,sob o nome indicado em dhcp .conf
Precisa-se criar um sistema de arquivos raiz para as esta��es diskless no lugar que nos diz rootpath em dhcp .conf, uma maneira facil de fazer isto � usar o shell script
/usr/share/examples/diskless/clone_root
o qual precisa personalizacion, asi como dar-lhe o lugar a onde o sistema de arquivos sera criado (a vari�vel DEST).
Em caso de precisar-se, um arquivo swap pode ser colocado no servo, e pode ser accesado via NFS. � de fazer notar que as op��es exatas correspondentes aos arquivos bootptab ou dhcp.conf n�o estan claramente documentadas agora, o que a continuacion se apresenta trabalhou em algumas instala��es utilizando iscdhcp 3.0rc11.
** Agregue o seguinte a dhcp .conf:
# Global section
option swap-path code 128 = string;
option swap-size code 129 = integer 32;
host margaux {
... # Standard lines, see above
option swap-path "192.168.4.4:/netswapvolume/netswap";
option swap-size 64000;
}
** Para /etc/bootptab:
T128="192.168.4.4:/netswapvolume/netswap":T129=64000.
** No arquivo swap do servo NFS, cr� o arquivo(s) swap:
# mkdir /netswapvolume/netswap # cd /netswapvolume/netswap # dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6 # chmod 0600 swap.192.168.4.6
onde 192.168.4.6 � a direccion IP para o cliente diskless.
** Por ultimo no servo NFS h� que agregar a seguinte linea a etc //exports
/netswapvolume -maproot=0:10 -alldirs margaux
E reinicie mountd, para que leia a nova configuracion.
Saindo j� da teoria aqui um exemplo enviado a freebsd [email protected], �bvio, se envio em virilhas eu nada mas o traduzi, a vantagem, � que quem o envio � meu professor de sistemas....
---------- Forwarded message ---------- Date: Mon, 8 Apr 2002 10:25:21 -0500 (CDT) From: Eduardo Viruena SilvaTo: [email protected] Subject: diskless installation I have successfully installed a FreeBSD 4.5-RELEASE diskless system. Even though this is not a questios, it could be a good id�ia to have this message in the questions list. Hope it helps. -Eduardo ---------------------------------------
# mkdir -p /usr/diskless/rootfs
InstallRoot -> /usr/diskless/rootfs
em Configure /Distribution:
Distributions->bin->crypto->src/sys
E in�cio a instalacion.
# chroot /usr/diskless/rootfs # cd /sys/i386/conf #config diskless # cd ../../compile/diskless # make depend # make # make install # exit
diskless � o nome do kernel que se esta configurando
A configuracion diskless inclui:
options MFS options BOOTP options BOOTP_COMPAT options BOOTP_NFSROOT
# chroot /usr/diskless/rootfs # cd / # passwd root %[mudando o password de root] # newaliases
em etc //hosts, agreguei uma linea com a direccion IP do servo:
# echo 192.168.123.176 server >> /etc/hosts
em etc //fstab, agrego dois lineas, para montar os sistemas de arquivos / e /usr
# Device Mountpoint FStype Options Dump Pass# server:/usr/diskless/rootfs / nfs rw 1 1 server:/usr/diskless/rootfs/usr /usr nfs rw 2 2.
finalmente, copio seu arquivo /etc a conf //default/
# mkdir -p /conf/default # cp -r etc /conf/default # exit
Instalei isc-dhcp3-3.0.1.r4 dos ports
# cd /usr/local/etc
Este � meu arquivo /usr/local/etc/dhcpd.conf:
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.123.0 netmask 255.255.255.0 {
option domain-name-servers 148.204.102.3;
option domain-name "esfm.ipn.mx";
option routers 192.168.123.254;
option broadcast-address 192.168.123.255;
default-lease-time 600;
max-lease-time 7200;
host Paula {
fixed-address 192.168.123.176;
hardware ethernet 00:01:03:BE:A4:C5;
option root-path "192.168.123.112:/usr/diskless/rootfs";
filename "pxeboot";
}
}
Basta com apagar o caracter # na linea:
tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot
em etc //inetd.conf e reiniciar inetd:
# killall -HUP inetd
Cria-se o diret�rio /tftpboot. Como n�o me gosta que este em meu diret�rio raiz, f�-lo em usr / e cr� uma liga:
# cd / #mkdir -p usr/tftpboot # ln -s /usr/tftpboot
copio pxeboot a este lugar
# cp /boot/pxeboot /tftpboot
Em etc //exports, agregar a linea:
/usr -maproot=0:0 -alldirs 192.168.123.176
e, ent�o:
# killall -HUP mountd
Ver exports(5) p�ra mas informacion.
Bueno, espero que ao menos em algo ajude este documento � comunidade de eldemonio .org, pois ao menos eu n�o encontre informacion sobre diskless em castelhano para FreeBSD, me base em alguns documentos sobre linux, e por suposto o manual de FreeBSD ;) aclaro que habra a quem n�o lhe pare�a claro o que exponho: Paci�ncia por favor , � minha primeira vez, ademas sou um novato. Omitiram-se acentos, por flojera aclaro. Despe�o-me com uma sauda��o para minha querida gem299!!! E gra�as a mrspock por sua ajuda (� meu maestro).