Boot PXE - servidor Linux e cliente OpenBSD

4

Eu tenho uma máquina antiga aqui que estou tentando configurar como um cliente sem disco executando o OpenBSD, inicializando a partir da minha máquina fedora 10.

Eu configurei o tftp e o dhcp e ambos parecem estar corretos, mas o cliente acabou tentando carregar o pxeboot.

# /etc/xinetd.d/tftp 
service tftp
{
    disable = no
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /tftpboot -vv
    per_source      = 11
    cps         = 100 2
    flags           = IPv4
}

[root@blueblock ~]# ls -la /tftpboot/
total 12100
drwxrwxrwx  2 root root    4096 2009-07-25 03:12 .
drwxr-xr-x 26 root root    4096 2009-07-25 02:41 ..
-rwxrwxrwx  1 root root 6696212 2009-02-28 22:41 bsd
-rw-r--r--  1 root root 5592688 2009-02-28 22:41 bsd.rd
-rwxrwxrwx  1 root root   53276 2009-02-28 22:41 pxeboot

# /etc/dhcpd.conf
host longshot {
  hardware ethernet 00:0b:db:07:83:35;
  fixed-address 10.0.2.21;
  next-server 10.0.2.5;
  option root-path "/tftpboot/";
  filename "pxeboot";
}

Eu posso me conectar ao servidor tftp de outras máquinas na rede e obter com êxito o arquivo pxeboot.

O cliente está obtendo as configurações corretas do endereço IP, e eu posso vê-lo se conectando ao servidor tftp.

Jul 25 04:11:51 localhost dhcpd: DHCPDISCOVER from 00:0b:db:07:83:35 via eth0
Jul 25 04:11:51 localhost dhcpd: DHCPOFFER on 10.0.2.21 to 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost dhcpd: DHCPREQUEST for 10.0.2.21 (10.0.2.5) from 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost dhcpd: DHCPACK on 10.0.2.21 to 00:0b:db:07:83:35 via eth0
Jul 25 04:11:53 localhost in.tftpd[1457]: RRQ from 10.0.2.21 filename pxeboot
Jul 25 04:11:53 localhost in.tftpd[1457]: tftp: client does not accept options
Jul 25 04:11:53 localhost in.tftpd[1458]: RRQ from 10.0.2.21 filename pxeboot

Existe algo simples que eu perdi aqui? Ou há mais alguma coisa que eu possa fazer para tentar diagnosticar o problema?

Edit: eu coloquei os arquivos pxeboot e bsd em uma máquina openbsd que eu tinha, e mudei o próximo servidor para o ipaddress desta máquina, habilitei seu servidor tftp, e o cliente inicializou pela primeira vez. / p>     

por theotherreceive 25.07.2009 / 05:13

6 respostas

1

Eu construo o servidor tftp do netkit , e isso funcionou pela primeira vez com o meu arquivo pxeboot.

Este servidor tftp é empacotado como tftpd no debian / ubuntu, mas não parece ser empacotado para o fedora, que usa o servidor tftp-hpa.

Esta é a configuração de trabalho que usei para inicializar o sistema.

#/etc/xinetd.d/tftp
service tftp
{
        disable = no
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/local/sbin/in.tftpd
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

#/etc/dhcpd.conf
host longshot {
  hardware ethernet 00:0b:db:07:83:35;
  fixed-address 10.0.2.21;
  next-server 10.0.2.5;
  filename "pxeboot";
}

Como este era um cliente sem disco, eu precisava de bootparams e rarpd para que o kernel pudesse usar o sistema de arquivos sobre o nfs. Isso não é necessário para inicializar o kernel do ramdisk (bsd.rd).

#/etc/bootparams 
longshot root=10.0.2.5:/export/longshot/root swap=10.0.2.5:/export/longshot/swap
10.0.2.21 root=10.0.2.5:/export/longshot/root swap=10.0.2.5:/export/longshot/swap

#/etc/sysconfig/rarpd 
OPTIONS="-e"
INTERFACE="eth0"

# /etc/ethers 
00:0b:db:07:83:35   10.0.2.21

# /etc/exports
/export/longshot 10.0.2.0/255.255.255.0(rw,no_root_squash,sync)
    
por 25.07.2009 / 21:23
6

A primeira coisa que vi foi que você está usando "-s / tftpboot" no xinetd.conf e adicionando a opção "root-path" do dhcpd.conf. Definir a opção "-s" para o tftpd significa que é o diretório "/" como visto para o cliente tftp. Portanto, seu dhcpd.conf deve ter apenas "filname / pxeboot", sem a opção do caminho-raiz.

De "man tftpd":

-s

Change root directory on startup. This means the remote host does not need 
to pass along the directory as part of the transfer, and may add security.
When -s is specified, exactly one directory should be specified on the command
line. The use of this option is recommended for security as well as compatibility
with some boot ROMs which cannot be easily made to include a directory name 
in its request.
    
por 25.07.2009 / 09:58
2

katriel já deu a resposta que eu teria dado, então eu darei mais conselhos genéricos ...

OBSERVAÇÃO: isso não responde à pergunta original (recebendo o cliente pxe), ele aborda o que fazer depois que o problema for resolvido.

Eu recomendo usar o gpxelinux.0 do projeto syslinux em vez do programa pxeboot ' re usando (que é provavelmente uma versão antiga do programa pxelinux do syslinux mesmo assim).

não se deixe enganar pelo nome, o gpxelinux.0 é um programa de bootstrap genérico do PXE que pode ser usado para inicializar qualquer sistema operacional. Eu uso ele para inicializar o linux, windows, clonezilla, e várias imagens de disquete e CD (principalmente imagens do MS-DOS / Freedos com alguma atualização de firmware em um disquete - o que é melhor do que gravar uma atualização em CD ou disquete e carregá-la para todas as máquinas).

Uma das principais vantagens do gpxelinux.0 em relação a outros programas de inicialização pxe é que ele entende mais do que apenas o protocolo tftp, então você pode buscar kernels, initramfs e outros sistemas de arquivos compactados, e qualquer outra coisa por http ou ftp que tftp. isso é muito mais rápido e, na minha experiência, muito mais confiável. você ainda precisa de um servidor tftp, porque o arquivo gpxelinux.0 atual e seu arquivo cfg padrão ainda precisam ser atendidos pelo tftp.

inclui também uma útil opção de linha de comando que lhe permite substituir manualmente as opções de inicialização (semelhante ao que você pode fazer com o grub).

apenas mudar para http para imagens de inicialização quase eliminou os problemas de inicialização da rede que eu estava tendo (todos, exceto alguns pequenos detalhes de configuração, como path / filename)

    
por 25.07.2009 / 10:22
1

A primeira coisa que eu tentarei é tcpdump o tráfego do tftp, para ver se a transferência está realmente sendo concluída com sucesso; se for, então, presumivelmente, o cliente não gosta do arquivo pxeboot - ele está corrompido, a arquitetura errada ou, de outra forma, não é adequado.

    
por 25.07.2009 / 05:20
1

Dê uma olhada no howto que escrevi há vários anos . Embora não descreva o BSD de inicialização, ele descreve todo o processo em muitos detalhes. Talvez isso ajude você a descobrir o que deu errado.

    
por 25.07.2009 / 08:15
0

qual é o conteúdo do /tftpboot/pxeboot/pxeboot.cfg/default ou equivalente? isso precisa conter informações sobre o kernel e initrd.img e às vezes até mesmo a placa de rede que você está usando

    
por 25.07.2009 / 07:08