
Configurei um computador com pxelinux e consigo inicializar a partir de DHCP/TFTP. Posso receber o bootloader e inicializar a partir de um disco rígido ou SSD local. Mas quero escolher com o bootloader de qual dispositivo ele deve inicializar. Por exemplo, em um computador com dois dispositivos, quero escolher de qual dispositivo ele deve inicializar. Eu mexi na configuração do pxelinux e li a documentação, mas parece que ela menciona apenas o processo de inicialização pela rede. Aqui está 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 initrd
arquivo, não importa se eu disser /dev/sda2
ou (hd0,2)
algo assim.
Estou faltando alguma coisa ou esta tarefa não é possível com o pxelinux?
Para cada opção, a resposta é sempre algo como "Esse arquivo ou diretório não existe", exceto a opção "dois", que inicializa bem. (Não consegui obter um log do console). 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á obtendo os arquivos do servidor. Mas por que não processa isso...
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
Responder1
Eu descobri como configurar o pxelinux para minhas necessidades. tftp já estava rodando e funcionando, fiz um "tail -f /var/log/messages" para descobrir que 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 os outros arquivos, forneci os arquivos vmlinuz e initrd no../tftpboot/pxelinux.cfg/defaultarquivo de configuração:
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, não sei porque, talvez eu tente descobrir se ainda tenho tempo, fico feliz que agora esteja funcionando. /var/log/mensagensé uma boa ajuda para diagnóstico de erros, não estava claro quem era o responsável pelo tftpd, mas descobri que provavelmente foi iniciado pelo xinetd e não pelo systemd. Eu mudei o conteúdo de/etc/xinetd.d/tftppara :
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 obrigado ao cas pela ajuda!
Responder2
Você precisa usar o carregador de corrente (cadeia.c32) desyslinux. Tal como acontece com os outros syslinux
módulos, 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 foi ligeiramente adaptado do meu /srv/tftp/default
arquivo - minha versão tem KERNEL http://ip.ip.ip.ip/tftp/chain.c32
(meu httpd está configurado para servir /tftp/
de /srv/tftp
- tftp funcionaria tão bem) e APPEND hd0 0
.