
AFAIU, Quando tftp
o servidor é usado para pxe
inicializar, o cliente envia uma solicitação ao servidor, e o servidor envia de volta alguns arquivos (initrd, kernel, config, ...). O servidor pode decidir quais arquivos enviar ao cliente dependendo do endereço IP do cliente. O cliente não conhece a URL desses arquivos.
Minhas perguntas são estas:
Eu gostaria de testar tftp
o servidor. Gostaria de executar um comando ou um script (simples) que entre em contato com o tftp
servidor, receba os arquivos e salve esses arquivos no disco.
Em outras palavras, o que eu quero fazer é o seguinte:
Do lado do servidor não há diferença: o servidor acha que o cliente quer inicializar via PXE e envia os arquivos para o cliente
Do lado do cliente: o cliente não deseja realmente inicializar. Ele só quer copiar (salvar) os arquivos no disco.
Qual seria a maneira mais fácil de fazer isso?
Responder1
O comentário que @Patrick fez à sua pergunta estava certo: tudo o que a máquina cliente precisa para inicializar o PXE é transmitir uma solicitação DHCP. O servidor DHCP (geralmente no servidor de inicialização PXE) verá o endereço MAC do dispositivo cliente e o utilizará para
- forneça ao cliente um endereço IP
- diga ao cliente quais arquivos ele deve obter do servidor PXE
nesse ponto, o cliente sabe o endereço do servidor e o que obter dele. Infelizmente, há um monte de coisas complicadas, como só pode haver um servidor DHCP que tenha a configuração especial para o cliente PXE, um servidor TFTP precisa estar em execução e assim por diante.
Há um guia passo a passo muito bom emhttps://wiki.debian.org/PXEBootInstall. Você não especificou sua distribuição, mas a maioria dos sistemas PXE irá pelo menos rimar com esse guia.
Eu sei que sua pergunta diz que você não quer saber o endereço do servidor PXE. Mas só há uma maneira (sem escrever seu próprio cliente) que pode ser feita, com um solicitante/processador DHCP do cliente PXE. Se você quiser renunciar a essa parte, jogue fora muitos dos recursos necessários para inicializar.
Eu sei que você realmente não deseja inicializar a máquina, o que o coloca na posição de implementar grande parte do protocolo PXE para fins de teste. Se você não tem uma máquina de scratch disponível, estou curioso para saber por que você precisa testar o PXE.
Responder2
Responder3
Estou mais familiarizado com comoSapateiroconfigura o TFTP, então não tenho certeza se isso é relevante, mas vou oferecer essas informações de qualquer maneira. O Cobbler configura um bootloader usando pxelinux.0
como@Patrick explica nos comentáriosassim como@msw. Mas também configura um pxelinux.cfg/
diretório correspondente que contém endereços MAC para cada sistema que se conectará ao servidor.
Esses arquivos contêm pxelinux.cfg
informações de arquivo 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
O kernel Linux real que esta VM inicializará está contido neste diretório acessível por TFTP, /images/Centos56-x86_64/vmlinuz
. Toda a estrutura de diretórios TFTP se parece com isto na parte traseira do 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
A única coisa inicialmente acessível pelos servidores que estão inicializando neste servidor TFTP é, como outros descreveram, o pxelinux.0
+ arquivo de configuração que corresponde ao endereço MAC de um servidor específico.
Diretório de imagens
Fica assim se você estiver curioso:
$ 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