
Ich habe einen Computer mit pxelinux konfiguriert und kann von DHCP/TFTP booten. Ich kann den Bootloader empfangen und dann von einer lokalen Festplatte oder SSD booten. Aber ich möchte mit dem Bootloader auswählen, von welchem Gerät gebootet werden soll. Auf einem Computer mit zwei Geräten möchte ich beispielsweise auswählen, von welchem Gerät gebootet werden soll. Ich habe mit der Konfiguration von pxelinux herumgespielt und die Dokumentation gelesen, aber es scheint, dass dort nur der Net-Boot-Prozess erwähnt wird. Hier ist meine Beispielkonfigurationsdatei (Standard)
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
Es hat pxelinux 6.0.3 und ich habe fast jede Kombination ausprobiert, aber die einzige Antwort ist immer, dass es den Kernel oder die Datei nicht finden kann initrd
, egal ob ich etwas sage /dev/sda2
oder (hd0,2)
oder so.
Übersehe ich etwas, oder ist diese Aufgabe mit pxelinux nicht möglich?
Bei jeder Option lautet die Antwort immer „Keine solche Datei oder kein solches Verzeichnis“, außer bei Option „zwei“, bei der der Bootvorgang ordnungsgemäß funktioniert. (Ich konnte kein Protokoll von der Konsole abrufen.) TFTP vom Client zum Server funktioniert ohne Probleme.
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
Der Status des xinetd-Daemons zeigt, dass der Client-Tftp die Dateien vom Server anfordert. Es scheint, als würde der Client die Dateien vom Server abrufen. Aber warum verarbeitet er sie nicht...
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
Antwort1
Ich habe herausgefunden, wie ich pxelinux für meine Bedürfnisse konfigurieren kann. tftp lief bereits und funktionierte, ich habe ein „tail -f /var/log/messages“ ausgeführt und festgestellt, dass chain.c32 nicht funktionierte (es wurde geladen, aber es passierte nichts):
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
Dann könnte ich es mit den anderen Dateien versuchen, ich habe die vmlinuz und initrd Dateien in der../tftpboot/pxelinux.cfg/defaultKonfigurationsdatei:
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 hat auf dem System auch nicht funktioniert, ich weiß nicht warum, vielleicht versuche ich es herauszufinden, wenn ich noch Zeit habe, ich bin froh, dass es jetzt funktioniert. /var/log/Nachrichtenist eine gute Hilfe bei der Fehlerdiagnose. Es war nicht klar, wer für den tftpd verantwortlich war, aber ich fand heraus, dass er vermutlich von xinetd und nicht von systemd gestartet wurde. Ich änderte den Inhalt von/etc/xinetd.d/tftpZu :
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
}
Grüße und Danke an Cas für seine Hilfe!
Antwort2
Sie müssen den Kettenlader verwenden (Kette.c32) aussyslinuxWie bei den anderen syslinux
Modulen gibt es unterschiedliche Versionen für BIOS, efi32 und efi64.
LABEL local
MENU DEFAULT
MENU LABEL Boot from Local Hard Disk
KERNEL /path/to/chain.c32
APPEND hd0 2
Das ist eine leicht angepasste Version meiner /srv/tftp/default
Datei – meine Version hat KERNEL http://ip.ip.ip.ip/tftp/chain.c32
(mein httpd ist so konfiguriert, dass es /tftp/
von aus bedient wird /srv/tftp
– TFTP würde genauso gut funktionieren) und APPEND hd0 0
.