Como selecionar um disco de inicialização wie pxelinux

3

Eu configurei um computador com o pxelinux e sou capaz de inicializar a partir do DHCP / TFTP. Eu posso receber o bootloader e depois inicializar a partir de um disco rígido local ou ssd. Mas eu quero escolher com o bootloader de qual dispositivo ele deve inicializar. Por exemplo, em um computador com dois dispositivos, desejo escolher de qual dispositivo ele deve ser inicializado. Eu pesquisei a configuração do pxelinux e li a documentação, mas parece que ela menciona apenas o processo de inicialização da rede. Aqui está o meu arquivo de configuração de exemplo (padrão)

default ssd
prompt 1
ONTIMEOUT local
timeout 3000

MENU TITLE PXE Menu

LABEL hdd
    MENU LABEL Boot local hard drive
    root= (hd0,2)
    kernel /boot/vmlinuz-3.11.6-4-desktop
    initrd=(hd0,2)/boot/initrd-3.11.6-4-desktop

LABEL ssd
    MENU LABEL Boot local hard drive
    LOCALBOOT -1

Ele tem o pxelinux 6.0.3 e eu tentei quase todas as combinações, mas a única resposta é sempre que ele não consegue encontrar o kernel ou o arquivo initrd , não importa se eu disser /dev/sda2 ou (hd0,2) ou algo assim.

Estou faltando alguma coisa ou essa tarefa não é possível com o pxelinux?

Para cada opção, a resposta é sempre algo que é "Nenhum tal arquivo ou diretório", exceto pela opção "dois", que inicializa ok. (Eu não consegui obter um log do console). O tftp do cliente para o servidor está funcionando sem problemas.

default menu.c32
prompt 0
ONTIMEOUT local
timeout 3000

MENU TITLE PXE Menu

LABEL one
        MENU LABEL Boot local hard drive
    root= hd0 2
    kernel /boot/vmlinuz-3.11.6-4-desktop

LABEL two
        MENU LABEL Boot local hard drive
        LOCALBOOT 0

LABEL three
        MENU LABEL Boot local hard drive
    root=/dev/sda2
    kernel vmlinuz-3.11.6-4-desktop
    initrd=/boot/initrd-3.11.6-4-desktop.gz

LABEL four
        MENU LABEL VIER
    root=/dev/sda2 rw
        KERNEL ftp://179.99.99.1/chain.c32

LABEL five
    MENU LABEL Hole chain.c32 uebers Netz
    root hd0 2
    KERNEL chain.c32

LABEL six
        MENU LABEL VIER
    root=(hd0,2) rw
        KERNEL /boot/chain.c32

LABEL seven
    MENU LABEL Hole chain.c32 uebers Netz
    root hd0 2
    KERNEL /boot/chain.c32
    initrd=/boot/initrd-3.11.6-4-desktop.gz 

O status do daemon xinetd mostra que o cliente tftp está solicitando os arquivos do servidor. Parece que o cliente está recebendo os arquivos do servidor. Mas por que não o processa ...

xinetd.service - Xinetd A Powerful Replacement For Inetd
   Loaded: loaded (/usr/lib/systemd/system/xinetd.service; enabled)
   Active: active (running) since Wed 2016-06-29 16:08:46 CEST; 21min ago
 Main PID: 1536 (xinetd)
   CGroup: /system.slice/xinetd.service
           |-1536 /usr/sbin/xinetd -stayalive -dontfork
           '-2938 in.tftpd -s /rde/installation/tftpboot -vvv

Jun 29 16:21:47 uaewg-srv in.tftpd[4161]: RRQ from ::ffff:199.99.99.10 filename menu.c32
Jun 29 16:22:32 uaewg-srv in.tftpd[4279]: RRQ from ::ffff:199.99.99.10 filename chain.c32
Jun 29 16:22:32 uaewg-srv in.tftpd[4280]: RRQ from ::ffff:199.99.99.10 filename chain.c32
Jun 29 16:22:36 uaewg-srv in.tftpd[4288]: RRQ from ::ffff:199.99.99.10 filename chain.c32
Jun 29 16:24:17 uaewg-srv in.tftpd[4544]: RRQ from ::ffff:199.99.99.10 filename pxelinux.0
Jun 29 16:24:17 uaewg-srv in.tftpd[4545]: RRQ from ::ffff:199.99.99.10 filename ldlinux.c32
Jun 29 16:24:17 uaewg-srv in.tftpd[4556]: RRQ from ::ffff:199.99.99.10 filename pxelinux.cfg/default
Jun 29 16:24:17 uaewg-srv in.tftpd[4558]: RRQ from ::ffff:199.99.99.10 filename menu.c32
Jun 29 16:24:34 uaewg-srv in.tftpd[4580]: RRQ from ::ffff:199.99.99.10 filename chain.c32
Jun 29 16:24:38 uaewg-srv in.tftpd[4588]: RRQ from ::ffff:199.99.99.10 filename chain.c32
    
por Coliban 23.06.2016 / 15:44

2 respostas

1

Eu descobri, como configurar o pxelinux para minhas necessidades. o tftp já estava rodando e funcionando, eu fiz um "tail -f / var / log / messages" para descobrir que o chain.c32 não estava funcionando (estava carregando, mas nada aconteceu):

2016-06-29T16:15 uaewg-srv xinetd[1536]: START: tftp from=::ffff:172.99.199.9
2016-06-29T16:15 uaewg-srv in.tftpd[2939]: RRQ from ::ffff:172.99.199.9 filename chain.c32
2016-06-29T16:18 uaewg-srv sshd[3183]: Accepted keyboard-interactive/pam for uae_wg_sim from 127.0.0.1 port 54948 ssh2

Então eu poderia tentar com outros arquivos, eu forneci os arquivos vmlinuz e initrd no arquivo de configuração ../ tftpboot / pxelinux.cfg / default :

prompt 0
ONTIMEOUT local
timeout 3000

MENU TITLE PXE Menu

LABEL local
        MENU LABEL Boot local hard drive
        LOCALBOOT 0

LABEL hdd
      kernel vmlinuz-3.11.6-4-desktop
      APPEND initrd=initrd-3.11.10-21-desktop  root=/dev/sda2

chain.c32, menu.c32 ou não funcionou no sistema, eu não sei porque, talvez eu tente descobrir se eu tenho tempo sobrando, estou feliz que agora está funcionando. / var / log / messages é uma boa ajuda para o diagnóstico de erros, não ficou claro, quem foi responsável pelo tftpd, mas descobri que presumivelmente foi iniciado pelo xinetd e não pelo systemd. Alterei o conteúdo de /etc/xinetd.d/tftp para:

service tftp
{
#   per_source      = 11
    cps         = 100 2
    socket_type     = dgram
    protocol        = udp
    wait            = yes
    user            = root
    server          = /usr/sbin/in.tftpd
    server_args     = -s /rde/installation/tftpboot -vvv
    flags           = IPv6 IPv4
}

cumprimentos e agradecimentos a Cas por sua ajuda!

    
por 30.06.2016 / 16:33
1

Você precisa usar o carregador de corrente ( chain.c32 ) de syslinux . Tal como acontece com os outros módulos syslinux , existem versões diferentes para BIOS, efi32 e efi64.

LABEL local
    MENU DEFAULT
    MENU LABEL Boot from Local Hard Disk
    KERNEL /path/to/chain.c32
    APPEND hd0 2

Isso é um pouco adaptado do meu arquivo /srv/tftp/default - minha versão tem KERNEL http://ip.ip.ip.ip/tftp/chain.c32 (meu httpd está configurado para servir também /tftp/ de /srv/tftp - tftp funcionaria tão bem) e APPEND hd0 0 .

    
por 24.06.2016 / 07:55

Tags