Diskless em FreeBSD

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:

1.-METODOS.

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.

2.-INICIANDO A CONFIGURACION

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.

3.-CONFIGURANDO Os SERVOS TFTP e NFS

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`

4.-CONTRUYENDO UM KERNEL DISKLESS

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

5.-PREPARANDO O SISTEMA DE ARQUIVOS RAIZ

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).

6.-CONFIGURANDO A SWAP

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 Silva 
To: [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
---------------------------------------

a.-Fiz um novo diret�rio, onde o sistema de arquivos raiz sistema diskless sera instalado.

  
# mkdir -p /usr/diskless/rootfs 

b.-Com /stand/sysinstall fiz em Options:

InstallRoot -> /usr/diskless/rootfs


em Configure /Distribution:

Distributions->bin->crypto->src/sys

E in�cio a instalacion.

c.-Configuracion do kernel: Isto j� esta explicado, crio eu, mas o incluo de todas maneiras.

# 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

d.- Configuracion de etc /diskless

# 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

e.-Configuracion do isc-dhcpd

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";
	}
} 

 

f.-Configuracion do servi�o TFTP

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

g.-Configuracion do servo NFS.

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.

7.-FIN??

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).


Hosted by www.Geocities.ws

1