
AFAIU, cuando tftp
se utiliza el servidor para pxe
el arranque, el cliente envía una solicitud al servidor y el servidor devuelve algunos archivos (initrd, kernel, config, ...). El servidor puede decidir qué archivos enviar al cliente dependiendo de la dirección IP del cliente. El cliente no conoce la URL de esos archivos.
Mi pregunta es esta:
Me gustaría probar tftp
el servidor. Me gustaría ejecutar un comando o un script (simple) que se comunique con el tftp
servidor, reciba los archivos y los guarde en el disco.
En otras palabras, lo que quiero hacer es esto:
Del lado del servidor, no hay diferencia: el servidor cree que el cliente quiere arrancar a través de PXE y envía los archivos al cliente.
Del lado del cliente: el cliente en realidad no quiere arrancar. Sólo quiere copiar (guardar) los archivos en el disco.
¿Cuál sería la forma más sencilla de hacer esto?
Respuesta1
El comentario que @Patrick hizo a su pregunta fue totalmente correcto: todo lo que la máquina cliente necesita para iniciar PXE es transmitir una solicitud DHCP. El servidor DHCP (normalmente en el servidor de arranque PXE) verá la dirección MAC del dispositivo cliente y la utilizará para
- darle al cliente una dirección IP
- decirle al cliente qué archivos debe obtener del servidor PXE
en ese punto, el cliente sabe la dirección del servidor y qué obtener de él. Desafortunadamente, hay un montón de detalles complicados, como que solo puede haber un servidor DHCP que tenga la configuración especial para el cliente PXE, que debe estar ejecutándose un servidor TFTP, etc.
Hay una guía paso a paso bastante buena enhttps://wiki.debian.org/PXEBootInstall. No especificaste tu distribución, pero la mayoría de los sistemas PXE al menos rimarán con esa guía.
Sé que tu pregunta dice que no quieres saber la dirección del servidor PXE. Pero sólo hay una manera (sin escribir su propio cliente) que se puede hacer, con un solicitante/procesador DHCP de cliente PXE. Si desea renunciar a esa parte, desechará gran parte de las capacidades necesarias para iniciarse.
Sé que en realidad no deseas iniciar la máquina, lo que te coloca en la posición de implementar gran parte del protocolo PXE con fines de prueba. Si no tiene una máquina virtual disponible, tengo curiosidad por saber por qué necesita probar PXE.
Respuesta2
Respuesta3
Estoy más familiarizado con cómoZapateroconfigura TFTP, así que no estoy seguro de si esto es relevante, pero ofreceré esta información de todos modos. Cobbler configura un gestor de arranque usando pxelinux.0
como@Patrick explica en los comentariosasí como@msw. Pero también configura un pxelinux.cfg/
directorio correspondiente al lado que contiene direcciones MAC para cada sistema que se conectará al servidor.
Estos archivos contienen pxelinux.cfg
información de archivo como esta:
$ more 01-54-52-00-ff-ff-ff
default linux
prompt 0
timeout 1
label linux
kernel /images/Centos56-x86_64/vmlinuz
ipappend 2
append initrd=/images/Centos56-x86_64/initrd.img ksdevice=bootif lang= console=ttyS0,115200 text serial kssendmac ks=http://192.168.1.207/cblr/svc/op/ks/system/kvmcobblertest
El kernel de Linux real que arrancará esta VM está contenido en este directorio accesible TFTP, /images/Centos56-x86_64/vmlinuz
. Toda la estructura del directorio TFTP se ve así desde la parte posterior del servidor:
$ ls -l /tftpboot/
total 348
drwxr-xr-x 2 root root 4096 Jun 22 2011 etc
drwxr-xr-x 2 root root 4096 Jul 9 2012 grub
drwxr-xr-x 6 root root 4096 Jul 9 2012 images
drwxr-xr-x 2 root root 4096 Jun 30 2011 images2
-rw-r--r-- 1 root root 20020 Jul 9 2012 memdisk
-rw-r--r-- 1 root root 39188 Jul 9 2012 menu.c32
drwxr-xr-x 2 root root 4096 Jun 22 2011 ppc
-rw-r--r-- 1 root root 14716 Jul 9 2012 pxelinux.0
drwxr-xr-x 2 root root 4096 Jul 9 2012 pxelinux.cfg
drwxr-xr-x 2 root root 4096 Jul 9 2012 s390x
-rw-r--r-- 1 root root 198192 Jul 9 2012 yaboot
Lo único a lo que inicialmente pueden acceder los servidores que arrancan en este servidor TFTP es, como lo han descrito otros, el pxelinux.0
+ el archivo de configuración que corresponde a la dirección MAC de un servidor en particular.
Directorio de imágenes
Esto se ve así si tienes curiosidad:
$ tree /tftpboot/images
/tftpboot/images
|-- Centos56-x86_64
| |-- initrd.img
| `-- vmlinuz
|-- Centos56-xen-x86_64
| |-- initrd.img
| `-- vmlinuz
`-- Centos60-x86_64
|-- initrd.img
`-- vmlinuz
3 directories, 6 files