IES Miguel Romero Esteo - Departamento de Informática - Linux/Unix

Gestores de arranque / práctica 5

Comandos:

Aplicaciones:

Enunciado:


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

The PXE boot process
  1. When the client computer tries to boot with PXE, it first emits a DHCP request on the network to get an IP address.
  2. 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.
  3. 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.
  4. The TFTP server sends the boot loader files (pxelinux) and the text files displayed on the screen by pxelinux.
  5. 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.
  6. The TFTP server sends the kernel and initramfs files (eg: vmlinuz + sysresccd.img) to the client.
  7. The client boots this kernel and executes the init programs that come with the initramfs.
  8. 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.
  9. 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.
  10. The client download sysrcd.dat and it can now complete the boot process.
  11. 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
.

B)    Instalar en pxserv:

   
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:

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