Diskless en FreeBSD

Autor: sHakY
Fecha: 14/04/2002


Sin duda alguna, en las actuales redes se observa que el personal tecnico lucha por mantenerse con las demandas de conectividad, cambios y recon-figuraciones de la misma, por ello es conveniente tener la configuracion y las imagenes de software en una estacion de arranque (aunque pueden ser mas). Así al arrancar los sistemas interactuan con un servidor de arranque, toman los parametros de arranque y opcionalmente descargan software apropiado.

Como es sabido, cada computadora conectada a una red TCP/IP tiene los siguientes datos:

Su direccion IP. Su máscara de red. La dirección IP de un router. La dirección IP de un servidor de nombres.

Todo esto se guarda en los ficheros de configuracion de nuestro sistema operativo.

Existen tres protocolos que permiten transfeir esta informacion por la red:

RARP (Reverse Address Resolution Protocol) sólo proporciona la direccion IP al computador sin disco. Debido a esto RARP no está implementado en la mayoría de los sistemas y se ha eliminado totalmente de TCP/IP v6.

BOOTP (Bootstrap Protocol) es un protocolo cliente/servidor diseñado para proporcionar los cuatro tipos de información mencionados anteriormente, a un computador sin disco.

DHCP (Dinamic Host Configuration Protocol) es una extensión de BOOTP, es decir, lo mejora.

Bien, una maquina puede arrancar a traves de la red y operar sin un disco duro local usando un sistema de archivos montado de un servidor NFS, eso es lo que se verá a continuación, haciendolo con FreeBSD ;) Hay dos métodos principales para cargar el kernel en nuestras maquinas a traves de la red, así que empecemos:

1.-METODOS.

PXE: (Intel's Preboot Execution Enviroment system) la cual es una forma rapido arranque ROM y se basa principalmente en algunas tarjetas de red o en las placas madre. pxeboot(8) para más detalles.

The etherboot port: (/usr/ports/net/etherboot) permite que sea el arranque desde una tarjeta de red o también de un floppy local (y también el disco duro) incluso corriendo un sistema MS-DOS. Según el manual muchas tarjetas de red son soportadas.

2.-INICIANDO LA CONFIGURACION

El instalar un sistema DHCP en su red, le ahorra un trabajo de configuración para su red. Todas las computadoras piden información de la red y se configuran automaticamente, muy recomendable para un administracion facil.

** El metodo etherboot usa DHCP por default o bootp (que necesita configurarse) para "buscar" al kernel. (Nota: PXE utiliza DHCP).

** El kernel usa BOOTP para hallar la raiz NFS (NFS root)

** El servidor isc-dhcp (que debe ser instalado) puede responder a peticiones BOOTP y DHCP.

El archivo de configuracion de este servidor es a menudo llamado /usr/local/etc/dhcpd.conf y consta de lo siguiente:

default-lease-time 600;
max-lease-time 7200;
authoritative;


option domain-name "example.com";
option domain-name-servers ;
option routers ;

subnet  netmask  {
use-host-decl-names on;      (1)
option subnet-mask ;
option broadcast-address ;

host margaux {
hardware ethernet 01:23:45:67:89:ab;
fixed-address margaux.example.com;
next-server ;   (2)
filename "/tftpboot/kernel.diskless";   (3)
option root-path ":/data/misc/diskless";   (4)
 }
}

Comentarios: (1)Dice a dhcpd que envie en las declaraciones host como el hostname para el host diskless. (2)Designa al servidor TFTP, por default se usa al servidor DHCP (3)Define el archivo que etherboot usara como kernel (4)Da el path al sistema de archivos raiz.

Ahora hay que instalar (y posiblemente compilar) el package etherboot. Para nuestra configuracion se usara disquette de arranque; para hacer uno, en la maquina que tiene instalado etherboot, situese en el directorio src en el arbol de etherboot y teclee:

# gmake bin32/tipo_de_dispositivo.fd0

tipo_de_dispositivo depende del tipo de tarjeta de red de la estacion de trabajo diskless. Vease el archivo NIC en el mismo directorio para que determine el tipo de dispositivo.

3.-CONFIGURANDO LOS SERVIDORES TFTP y NFS

Se necesita activar tftpd en el servidor que hara el papel de servidor tftp; para ello:

** Se crea un directorio del cual tftpd sera el servidor de archivos , es decir: /tftpboot

** Se agrega la siguiente linea a /etc/inet.conf:

tftp dgram udp wait nobody /usr/libexec/tftpd tftpd

* Reiniciando el demonio inetd

# kill -HUP `cat /var/run/inetd.pid`

Es posible localizar el tftpboot en algun directorio del servidor, pero estando seguro de que esta presente tanto en inetd.conf como en dhcpd.conf

Tambien es necesario activar el servicio NFS asi como exportar los sistemas de archivos apropiados:

** Agregar esto a /etc/rc.conf:

nfs_server_enable="YES"

** Exportar el sistema de archivos donde directorio raiz del sistema diskless esta localizado, agregando lo siguiente a /etc/exports:

/data/misc -alldirs -ro margaux

** Hay que decirle a mountd que hubo cambios en el archivo de configuracion:

  # kill -HUP `cat /var/run/mountd.pid`

4.-CONTRUYENDO UN KERNEL DISKLESS

Bueno, este punto se refiere a crear un archivo de configuración del kernel para las estaciones cliente, para ello se agregan las siguientes opciones:

options BOOTP #Usando BOOTP para obtener la direcc. IP 
options BOOTP_NFSROOT	#Para montar el sistema de archivos raiz a usar 
options BOOTP_COMPAT #HAY QUE TRADUCIR

Es posible tambine agregar las opciones:

BOOTP_NFSV3 BOOTP_WIRED_TO 

"Construya" el kernel y copie en el directorio tftp,bajo el nombre indicado en dhcp.conf

5.-PREPARANDO EL SISTEMA DE ARCHIVOS RAIZ

Se necesita crear un sistema de archivos raiz para las estaciones diskless en el lugar que nos dice rootpath en dhcp.conf, una manera facil de hacer esto es usar el shell script

/usr/share/examples/diskless/clone_root

el cual necesita personalizacion, asi como darle el lugar a donde el sistema de archivos sera creado (la variable DEST).

6.-CONFIGURANDO LA SWAP

En caso de necesitarse, un archivo swap puede ser colocado en el servidor, y puede ser accesado via NFS. Es de hacer notar que las opciones exactas correspondientes a los archivos bootptab o dhcp.conf no estan claramente documentadas ahora, lo que a continuacion se presenta ha trabajado en algunas instalaciones utilizando iscdhcp 3.0rc11

** Agregue lo siguiente 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 ":/netswapvolume/netswap";
             option swap-size 64000;

                      }

** Para /etc/bootptab:

T128=":/netswapvolume/netswap":T129=64000

** En el archivo swap del servidor NFS, cree el archivo(s) swap:

# mkdir /netswapvolume/netswap 
# cd /netswapvolume/netswap 
# dd if=/dev/zero bs=1024 count=64000 of=swap. 
# chmod 0600 swap.

donde es la direccion IP para el cliente diskless.

** Por ultimo en el servidor NFS hay que agregar la siguiente linea a /etc/exports

/netswapvolume -maproot=0:10 -alldirs margaux

Y reinicie mountd, para que lea la nueva configuracion.

Saliendo ya de la teoria aqui un ejemplo enviado a freebsd-questions, obvio, se envio en ingles yo nada mas lo traduje, la ventaja, es que quien lo envio es mi profesor de sistemas....


---------- Forwarded message ----------
Date: Mon, 8 Apr 2002 10:25:21 -0500 (CDT)
From: Eduardo Viruena Silva 
To: freebsd-questions
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 idea
to have this message in the questions list.

Hope it helps.

-Eduardo
---------------------------------------

a.-Hice un nuevo directorio, donde el sistema de archivos raiz sistema diskless sera instalado.

  
# mkdir -p /usr/diskless/rootfs 

b.-Con /stand/sysinstall hice en Options:

InstallRoot -> /usr/diskless/rootfs


en Configure/Distribution:

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

E inicio la instalacion.

c.-Configuracion del kernel: Esto ya esta explicado, creo yo, pero lo incluyo de todas maneras.

# chroot /usr/diskless/rootfs 
# cd /sys/i386/conf #config diskless	
# cd ../../compile/diskless 
# make depend 
# make 
# make install 
# exit

diskless es el nombre del kernel que se esta configurando

La configuracion diskless incluye:

options MFS 
options BOOTP 
options BOOTP_COMPAT 
options BOOTP_NFSROOT

d.- Configuracion de /etc diskless

# chroot /usr/diskless/rootfs 
# cd / 
# passwd root [cambiando el password de root]	
# newaliases

en /etc/hosts, he agregado una linea con la direccion IP del servidor:

  
# echo   server >>  /etc/hosts

en /etc/fstab, agrego dos lineas, para montar los sistemas de archivos / y /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 su archivo /etc a /conf/default/

 
# mkdir -p /conf/default 
# cp -r etc /conf/default 
# exit

e.-Configuracion del isc-dhcpd

He instalado isc-dhcp3-3.0.1.r4 de los ports

  
# cd /usr/local/etc 

Este es mi archivo /usr/local/etc/dhcpd.conf:

ddns-update-style none;

default-lease-time 600;
max-lease-time 7200;

subnet  netmask  {
option domain-name-servers ;
option domain-name "esfm.ipn.mx";
option routers ;
option broadcast-address ;
default-lease-time 600;
max-lease-time 7200;

host Paula {
	fixed-address ;
	hardware ethernet 00:01:03:BE:A4:C5;
	option root-path ":/usr/diskless/rootfs";
	filename "pxeboot";
	}
} 

 

f.-Configuracion del servicio TFTP

Basta con borrar el caracter # en la linea:

tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot

en /etc/inetd.conf y reiniciar inetd:

# killall -HUP inetd

Se crea el directorio /tftpboot. Como no me gusta que este en mi directorio raiz, lo hice en /usr y cree una liga:

# cd / #mkdir -p usr/tftpboot 
# ln -s /usr/tftpboot

copio pxeboot a este lugar

# cp /boot/pxeboot /tftpboot

g.-Configuracion del servidor NFS.

En /etc/exports, agregar la linea:

/usr -maproot=0:0 -alldirs 

y, entonces:

# killall -HUP mountd

Ver exports(5) para mas informacion.

7.-FIN??


Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb

Bueno, espero que al menos en algo ayude este documento a la comunidad de eldemonio.org, pues al menos yo no encontre informacion sobre diskless en castellano para FreeBSD, me base en algunos documentos sobre linux, y por supuesto el manual de FreeBSD ;) aclaro que habra a quien no le parezca claro lo que expongo: Paciencia por favor, es mi primera vez, ademas soy un novato. Se omitieron acentos, por flojera aclaro. Me despido con un saludo para mi querida gem299!!! Y gracias a mrspock por su ayuda (es mi maestro).


eldemonio.org El site BSD en Castellano Articles catalogue

Website templates are pre-designed websites all you need to do is add your own personal content and you're ready to jump start your own website. Website templates by Vooweb

eldemonio.org v 4_2