La idea fundamental es la siguiente: el PC buscará su dirección IP en el
servidor de arranque vía protocolo bootp
, usando 0.0.0.0
como
dirección IP inicial y recibiendo su núcleo vía el protocolo tftp
.
Arrancar a través de segmentos (vía un router o encaminador) no es
simple: se puede o bien colocar ambos, servidor y las computadoras sin
disco, en el mismo segmento de red o configurar un asistente de
direcciones UDP en su encaminador hacia la dirección del servidor.
Refiérase al manual de su encaminador para obtener más información.
Para hacer esto siga los siguientes pasos:
Instale el paquete nfsboot
(el paquete estará disponible en su
servidor Linux favorito en el directorio
/pub/Linux/system/Linux-boot
). Este paquete contiene la imagen de
una EPROM de arranque para la tarjeta wd8013 que puede ser grabada
directamente.
Existen varias vías alternativas para preparar el PC:
dd
:
dd if=imagen of=/dev/fd0H1440
Estas imágenes contienen un cliente bootp
y tftp
. Es necesario
preparar también un núcleo de Linux, el cual tenga la opción nfs-root
habilitada.
nfsboot
. Refiérase a
patch(1)
nfs-root
. Puede o no configurar soporte para dispositivos de sistemas de archivo (disquetes o discos duros), pero es obligatorio habilitar soporte TCP/IP, soporte para tarjeta ethernet y soporte de sistema de archivos nfs. Y, una vez realizado esto, recompilar el núcleo de la manera acostumbrada.
bootpd
en el servidorBootpd puede encontrarse en el paquete bootpd-2.4.tar.gz
(el cual
se obtiene de su servidor favorito de software Linux en el directorio
/pub/Linux/system/Network/boot.net
). Obtenga el paquete,
compílelo e instálelo. Si alguna máquina Linux tiene la distribución
Slackware, es posible saltarse este paso instalando la distribución
normal conteniendo bootpd
. El demonio se puede ejecutar directamente
utilizando el comando
bootpd -s
o a través de inetd
. En ese caso será necesario:
/etc/inetd.conf
, eliminando la marca de comentario
(#
) de las siguientes líneas:
# tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /ex
# bootps dgram udp wait root /usr/sbin/in.bootpd bootpd
/etc/services
:
bootps 67/tcp # BOOTP server
tftp 69/udp # TFTP server
inetd
usando
kill -HUP PID_de_inetd
bootpd
en el servidorLo primero de todo: bootpd
tiene un archivo de configuración llamado
bootptab
el cual usualmente se encuentra en /etc
. Debe ser
modificado insertando la dirección IP de su pasarela, servidor de nombres
y la/s dirección/es ethernet de su/s máquina/s sin disco. Un ejemplo de
/etc/bootptab
:
global.prof:\
:sm=255.255.255.0:\
:ds=192.168.1.5:\
:gw=192.168.1.19:\
:ht=ethernet:\
:bf=linux:
machine1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.1
machine2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.1
machine3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.1
global.prof
: Archivo de esquema general para las
configuraciones de cada máquina, donde:
sm
: Corresponde a la Máscara de subredds
: Dirección del servidor de nombres (DNS)gw
: Dirección de la pasarela por defectoht
: Tipo de hardware de redbf
: Nombre del archivo de arranqueDespués de esto, cada máquina debe tener una línea:
hd
contiene el directorio del archivo de arranquetc
ha
contiene la dirección de hardware de la tarjeta de redip
contiene la dirección ip que se asignatftp
TFTP (Trivial File Transfer Protocol) es un protocolo de transferencia de archivos, como lo es ftp, pero mucho más simple, a fin de que quepa en las EPROMs. TFTP puede ser usado de dos maneras:
El cliente puede acceder a la totalidad de su sistema de archivos. Es simple pero puede generar un gran problema de seguridad (cualquiera puede obtener su archivo de claves vía tftp).
El servidor tftp
utiliza un llamada de
sistema chroot.2
para cambiar a su propio directorio raíz. Cualquier
cosa que esté fuera del nuevo directorio raíz es completamente
inaccesible, ya que el directorio que sufre el chroot se transforma en el
nuevo directorio raíz; el campo hd
del archivo bootptab
debe
reflejar esta nueva situación.
Por ejemplo: cuando se utiliza tftp
simple, el campo hd
contiene el path o camino completo del directorio de arranque:
/export/root/machine1
. Cuando se utiliza tftp
seguro con
/export
como directorio raíz, entonces /export
pasa a
ser /
y el campo hd
debe ser /root/machine1
.
Asimismo, cada implementación Unix contiene el servidor tftp
y,
probablemente, no sea necesario que Usted instale su propio servidor.
El servidor debe contener los paquetes a, ap, n y x de la distribución Slackware. No hay inconvenientes para instalar más cosas; sin embargo, los paquetes mencionados son suficientes para los propósitos de una terminal X sin disco.
Para la instalación se necesita un sistema Linux funcionando.
Buscar algo de espacio en disco para exportarlo para lectura-escritura en la máquina remota.
Montar el directorio exportado en algún lugar (por ej. /mnt
)
sobre el sistema de archivos de la máquina Linux.
Iniciar la instalación de Linux y cambiar el lugar de instalación de
/
a /mnt
. Instalar los paquetes referidos de la forma
usual. Si se desea correr sólo un Linux sin disco no son necesarios más
cambios. De otra forma, si se planea utilizar más de una máquina sin disco
esta instalación no funcionará ya que algunos archivos y directorios deben
ser privados para cada máquina. El problema puede ser solucionado
moviendo /usr
(que no contiene elementos privados) y creando
subdirectorios separados para cada máquina sin disco. Por ejemplo, si
/export/linux/machine1
fue montado en /mnt
entonces la
estructura de directorios después de la instalación inicial se verá así:
/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/machine1/usr
Y después de los cambios debe de quedar:
/export/linux/machine1/bin
/export/linux/machine1/sbin
/export/linux/machine1/lib
/export/linux/machine1/etc
/export/linux/machine1/var
/export/linux/usr
Ahora es posible crear los subdirectorios para las otras máquinas.
Asumimos que las máquinas sin disco son llamadas machine1
,
machine2
, machine3
, etc.; puede utilizar el siguiente macro de
bash para instalar los otros directorios:
cd /export/linux
for x in machine2 machine3 ; do
mkdir $x; cd $x
(cd ../machine1; tar cf - *) | tar xvf -
done
Una vez hecho esto, realice las siguientes exportaciones:
/export/linux/usr
: Sólo lectura para todo el mundo/export/linux/machine1
: Solamente para machine1
con
permisos rw,root
/export/linux/machine2
: Solamente para machine2
con
derechos rw,root
/export/linux/machine3
: Solamente para machine3
con
derechos rw,root
como se indica a continuación (el formato de este ejemplo está en la
sintaxis de SunOs 4.1.3 para export
)
# Este archivo es /etc/export
# para terminales X con Linux remotas
# La siguiente linea es una unica:
/etc/root/usr -access=linuxnet
# Las siguientes lineas corresponden a una por cada maquina
/export/root/machine1 rw=machine1,root=machine1
/export/root/machine2 rw=machine2,root=machine2
/export/root/machine3 rw=machine3,root=machine3
No olvidar ejecutar exportfs -a
tftp
Ahora es el momento de configurar el servidor tftp
. Si no necesita
seguridad en el protocolo tftp
todo resultará más simple para sus
clientes ya que arrancarán desde el directorio /export
.
Si utiliza seguridad con el protocolo tftp
entonces se debe crear una
estructura de directorio completa /export/linux
bajo
/tftpboot
(con un núcleo real y enlaces simbólicos para las otras
máquinas), o dejar que el directorio /export
sea el directorio de
arranque para el tftp
seguro. O, si dispone de un directorio
tftpboot
separado necesita, de igual forma, la estructura de
directorios original con un núcleo único y enlaces simbólicos para los
otros. Se puede conseguir esta configuración ejecutando lo siguiente:
mkdir -p /tftpboot/export/linux/machine1
cd /tftpboot/export/linux/machine1
cp /export/linux/machine1/nombre_del_nucleo
Teclee lo siguiente:
mkdir -p /tftpboot/export/linux/machine2
cd ../machine2
ln -s ../machine1/nombre_del_nucleo
Para terminar, se debe insertar:
/sbin/mount nombre_servidor_nfs:/export/linux/usr /usr
como la primera línea de
/export/linux/machineX/etc/rc.d/rc.S
Todo lo indicado ha sido comprobado únicamente con Slackware 2.3; para otras distribuciones/versiones los datos que se indican a continuación pueden variar.
/tmp
. No
olvide ponerlo a punto con mkswap
y swapon
.