
He configurado una computadora con pxelinux y puedo arrancar desde DHCP/TFTP. Puedo recibir el gestor de arranque y luego arrancar desde un disco duro o SSD local. Pero quiero elegir con el gestor de arranque desde qué dispositivo debo arrancar. Por ejemplo, en una computadora con dos dispositivos, quiero elegir desde qué dispositivo debo iniciar. Jugué con la configuración de pxelinux y leí la documentación, pero parece que solo menciona el proceso de arranque en red. Aquí está mi archivo de configuración de ejemplo (predeterminado)
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
Tiene pxelinux 6.0.3 y he probado casi todas las combinaciones, pero la única respuesta siempre es que no puede encontrar el kernel o el initrd
archivo, no importa si digo /dev/sda2
o (hd0,2)
algo así.
¿Me estoy perdiendo algo o esta tarea no es posible con pxelinux?
Para cada opción, la respuesta siempre es "No existe tal archivo o directorio", excepto la opción "dos", que arranca bien. (No pude obtener un registro de la consola). tftp del cliente al servidor funciona sin ningún problema.
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
El estado del demonio xinetd muestra que el cliente tftp está solicitando los archivos del servidor. Parece como si el cliente estuviera obteniendo los archivos del servidor. Pero por qué no lo procesa...
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
Respuesta1
Descubrí cómo configurar pxelinux para mis necesidades. tftp ya se estaba ejecutando y funcionando, hice un "tail -f /var/log/messages" para descubrir que chain.c32 no funcionaba (se estaba cargando, pero no pasó nada):
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
Luego podría probarlo con los otros archivos, proporcioné los archivos vmlinuz e initrd en el../tftpboot/pxelinux.cfg/defaultarchivo de configuración:
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 tampoco funcionó en el sistema, no sé por qué, tal vez intente averiguar si me queda tiempo, me alegro de que ahora esté funcionando. /var/log/mensajeses una buena ayuda para el diagnóstico de errores, no estaba claro quién era el responsable del tftpd, pero descubrí que presumiblemente fue iniciado por xinetd y no por systemd. Cambié el contenido de/etc/xinetd.d/tftpa :
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
}
saludos y gracias a cas por su ayuda!
Respuesta2
Necesitas usar el cargador de cadena (cadena.c32) desyslinux. Al igual que con el resto syslinux
de módulos, existen diferentes versiones para BIOS, efi32 y efi64.
LABEL local
MENU DEFAULT
MENU LABEL Boot from Local Hard Disk
KERNEL /path/to/chain.c32
APPEND hd0 2
Esto está ligeramente adaptado de mi /srv/tftp/default
archivo: mi versión tiene KERNEL http://ip.ip.ip.ip/tftp/chain.c32
(mi httpd está configurado para servir /tftp/
desde /srv/tftp
; tftp funcionaría igual de bien) y APPEND hd0 0
.