Con esta práctica el alumno
experimentará con el cargador de arranque pxelinux. Hasta ahora se ha trabajo
con sistemas que se inician desde dispositivos locales, es
decir, el cargador y el sistema estan en el mismo hardware
físico (o virtual). Ahora le toca el turno a este bootloader que
permite iniciar un sistema traído desde un nodo de red,
algo especialmente útil para activar puestos de trabajos que no
cuentan con discos duros o lo que es mejor, iniciar un sistema
de emergencia en caso de desastres.
Lo primero que debe aprender el alumno es la
secuencia que se ejecuta para llevar un sistema a estado de uso
a una máquina (VM o Real-iron) utilizando únicamente su tarjeta
de red y los recursos lógicos que se hayen disponibles en la red
a la que se conecta la tarjeta. Ciertamente esta secuencia
(descrita a continuación en perfecto inglés) tiene adaptaciones
para culminar con éxito el inicio se un sistema sysresccd, por tanto, algunas cosas
diferirían si fuera otro el sistema a cargar (Debian, CentOS, etc...):
- When the client
computer tries to boot with PXE, it first emits a DHCP
request on the network to get an IP address.
- Then a DHCP server replies with a DHCP offer that
contains a new IP address that was not already allocated and
some specific options (DNS, default route) and the IP
address of the TFTP server.
- The client receives this DHCP offer and accepts it.
It connects to the TFTP server (it received its IP address
in the previous stage) to get the boot loader files.
- The TFTP server sends the boot loader files (pxelinux) and the text files
displayed on the screen by pxelinux.
- The client displays
the pxelinux prompt,
and the user can choose the boot options. It then requests
from the TFTP server the kernel and
initramfs files necessary to boot the
system.
- The TFTP server
sends the kernel and initramfs files (eg: vmlinuz + sysresccd.img) to
the client.
- The client boots
this kernel and executes the init programs that come with
the initramfs.
- During its
initialization the kernel makes a DHCP request again because
of the ip=dhcp
kernel boot parameters. Indeed the kernel does not know the
IP address used by the computer at the pxelinux stage.
- The client needs the
sysrcd.dat. If you use HTTP or
TFTP for the third stage, then sysrcd.dat
will be downloaded into RAM so the client has to have enough
memory (estimated requirement: 1GB). If you use either NFS
or NBD then you don’t have this memory requirement and the
client will make permanent requests to the server each time
it needs a file from the root filesystem.
- The client download
sysrcd.dat and it can now
complete the boot process.
- At this stage the
client holds all the files in memory, if you used TFTP/HTTP
for the third stage, so it does not require a boot server
any more. If you are using NFS or NBD, the connection is
still required.
Entendido lo que va a pasar si el alumno monta el belén
corréctamente, procedemos ahora a describir los pasos necesarios
para llegar a buen puerto. Los apartados más abajo conforman un
conjunto de tareas que el alumno va a realizar. Si esas tareas
tienen relación con el procedimiento de arriba descrito en
inglés, se vinculan con el número de The PXE boot process que resuelve,
para ello se utilizará esta sintáxis: "2-PXEbp"
(<- en este ejemplo se hace referencia al punto 2 de The PXE boot
process).
Las tareas tienen que ejecutarse en el
orden descrito y finalizarse completamente antes de pasar a la
siguiente.
A) Crear una máquina virtual con las
especificaciones de abajo. Lo que no se indique queda a criterio
del alumno. El VDI podrá estar alojado en el soporte
que determine el alumno pero para
recibir soporte del profesor la VM debe ejecutarse en el
anfitrión del aula que tiene asignado.
- Nombre
- RED
- NIC-1 (red
interna)
- NIC-2 (red sólo
anfitrión - En el escenario de cloud-DS la creada por el
profesor)
- NIC-3 (red NAT - En el escenario de
cloud-DS la creada por el alumno)
- VDI
- Nombre: pxesrv.vdi
- Tamaño y tipo
determinado por el alumno.
- AUDIO
B) Instalar en pxserv:
- S.O. Debian
GNU/Linux base. Sin entorno gráfico.
- SSH server.
- DHCP server.
- TFTP server.
- HTTP server.
C) Parar pxesrv y eliminar el interface NIC-3.
D) Arrancar pxesrv,
acceder con un terminal remoto a través de la IP de NIC-2 y
adquirir privilegios de root.
E) Configuración de NIC-1 con IP
fija-automática 10.20.30.100/24.
Las especificaciones de esta configuración las encontrará el
alumno en $HOME/practicas/bootloader/p05/especificaciones.profe.
F) Configuración y puesta en marcha del
servidor DHCP.
El servidor debe iniciarse automáticamente
con el arranque de pxesrv, algo
que por defecto, recien instalado, no ocurre. El alumno tiene
que hacer determinadas operaciones sobre las piezas de este
producto para que todo funcione como se desea. Aquí están las
pistas:
- Indicaciones técnicas.
- Los ficheros de
configuración sobre los que hay que actuar son: /etc/dhcp/dhcpd.conf y /etc/default/isc-dhcp-server.
- Para resolver 2-PXEbp se utiliza la
instrucción next-server.
- Para resolver 3-PXEbp y 4-PXEbp
se utiliza la instrucción filename.
- Especificaciones de funcionamiento
- Las direcciones IP se
servirán exclusivamente a través de NIC-1. Debe
proporcionar un rango de direcciones comprendido entre
la 10.20.30.10
y la 10.20.30.50
ambas inclusive los valores indicados en el
archivo $HOME/practicas/bootloader/p05/especificaciones.profe.
G) Configuración y puesta en marcha
del servidor TFTP.
Inmediantamente después de ser
instalado tftpd
funciona con cada arranque de pxesrv.
Para servir a nuestro propósito debe contener en su directorio
de suministro de contenidos los ficheros relacionados más
abajo ubicados en los directorios indicados. Todos ellos se
pueden encontrar en el interior del ".iso" del
system-rescue-cd disponible en /var/tmp/repodisk/ el
servidor ftp://192.168.50.70. Se recuerda al alumno
que para leer en el interior de un archivo ".iso" se utiliza el comando mount con la opción loop.
./isolinux/f1boot.msg
./isolinux/maps
./isolinux/maps/be.ktl
./isolinux/maps/cz.ktl
./isolinux/maps/lt.ktl
./isolinux/maps/fi.ktl
./isolinux/maps/slovene.ktl
./isolinux/maps/us.ktl
./isolinux/maps/es.ktl
./isolinux/maps/uk.ktl
./isolinux/isolinux.bin
./isolinux/rescue32
./isolinux/isolinux.old
./isolinux/pxelinux.0
./isolinux/ifcpu64.c32
./isolinux/memdisk
./isolinux/boot.cat
./isolinux/menu.c32
./isolinux/isolinux.cfg
./isolinux/f5troubl.msg
./isolinux/f7net.msg
./isolinux/f2images.msg
./isolinux/kbdmap.c32
./isolinux/vesamenu.c32
./isolinux/f3params.msg
./isolinux/reboot.c32
./isolinux/f6pxe.msg
./isolinux/rescue64
./isolinux/netboot
./isolinux/f4arun.msg
./isolinux/initram.igz
./isolinux/chain.c32
./pxelinux.0
./version
./ifcpu64.c32
./pxelinux.cfg/default
./rescue64
./initram.igz
En azul están marcados el kernel (ifcpu64.c32) y el
postkernel (rescue64). El postkernel se
inserta como primer argumento de la instrucción APPEND del
fichero de configuración del cargador de arranque pxelinux.0.
En rojo están marcado los archivos
pertenecientes a la pieza "cargador
de arranque pxelinux" los cuales intervienen en 4-PXEbp. Al respecto de estas
piezas hay que saber los siguiente: El fichero
./pxelinux.cfg/default es el fichero de
configuración standard de los productos EXTLINUX,
debe contener las instrucciones a seguir por parte del
cargador de arranque ./pxelinux.0. y ha sido tratado por el
alumno en dos prácticas anteriores. La
novedad en
el caso que nos ocupa es que al kernel hay que proporcionarle
tres parámetros nuevos acompañando a la instrucción APPEND, a
saber:
rescue64 -
Segunda
parte del kernel (postkernel)
ip=dhcp - I
ndica
al kernel que configure la IP via DHCP.
boothttp=http://<ip-nic1>/sysrcd.dat -
Indica al kernel que el grueso del sistema
operativo está en un archivo que debe descargar de un servidor
HTTP.
H)
Configuración y puesta en marcha del servidor HTTP.
Inmediantamente después de ser
instalado el servidor HTTP funciona con cada arranque de pxesrv. Para servir a nuestro
propósito debe contener en su directorio de suministro de
contenidos los ficheros relacionados más abajo. Todos ellos se
pueden encontrar en el interior del ".iso" del
system-rescue-cd disponible en /var/tmp/repodisk/
el servidor ftp://192.168.50.70.
./sysrcd.dat
./sysrcd.md5
I) Crear
una máquina virtual con las siguientes especificaciones. Lo que
no se indique queda a criterio del alumno.
J) Poner en marcha pxesrv y verificar el
funcionamiento de todos los servicios. A continuación iniciar pxecli y comprobar que se realiza
con éxito The PXE boot process hasta que pxecli ofrece uns sistema sysresccd usable.