
pxelinux로 컴퓨터를 구성했고 DHCP/TFTP에서 부팅할 수 있습니다. 부트로더를 받은 다음 로컬 HDD 또는 SSD에서 부팅할 수 있습니다. 하지만 어떤 장치에서 부팅해야 하는지 부트로더를 사용하여 선택하고 싶습니다. 예를 들어, 두 개의 장치가 있는 컴퓨터에서 부팅할 장치를 선택하고 싶습니다. pxelinux의 구성을 만지작거리고 문서를 읽었지만 네트워크 부팅 프로세스만 언급된 것 같습니다. 내 예제 구성 파일은 다음과 같습니다(기본값).
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
pxelinux 6.0.3이 있고 거의 모든 조합을 시도했지만 유일한 대답은 내가 뭐라고 initrd
말하든 상관없이 항상 커널이나 파일을 찾을 수 없다는 것입니다 ./dev/sda2
(hd0,2)
제가 뭔가를 놓치고 있는 걸까요, 아니면 이 작업이 pxelinux에서는 불가능합니까?
모든 옵션에 대해 대답은 항상 "해당 파일 또는 디렉터리 없음"입니다. 옵션 "2"를 제외하고는 정상적으로 부팅됩니다. (콘솔에서 로그를 가져올 수 없습니다.) 클라이언트에서 서버로의 tftp가 문제 없이 작동하고 있습니다.
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
xinetd 데몬의 상태는 클라이언트 tftp가 서버로부터 파일을 요청하고 있음을 보여줍니다. 클라이언트가 서버에서 파일을 가져오는 것처럼 보입니다. 그런데 왜 처리가 안되나요...
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
답변1
내 필요에 맞게 pxelinux를 구성하는 방법을 알아냈습니다. tftp는 이미 실행 중이고 작동 중이었습니다. "tail -f /var/log/messages"를 만들어 chain.c32가 작동하지 않는다는 것을 발견했습니다(로드 중이었지만 아무 일도 일어나지 않았습니다).
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
그런 다음 다른 파일로 시도해 볼 수 있습니다. vmlinuz 및 initrd 파일을../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는 시스템에서 작동하지 않았습니다. 이유는 모르겠지만 아마도 시간이 남아 있는지 알아보려고 노력할 것입니다. 이제 작동하고 있어서 기쁩니다. /var/log/메시지오류 진단에 좋은 도움이 됩니다. tftpd의 책임자가 누구인지는 확실하지 않습니다. 하지만 아마도 systemd가 아닌 xinetd에 의해 시작되었다는 것을 알게 되었습니다. 내용을 바꿨어요/etc/xinetd.d/tftp에게 :
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
}
도움을 주신 Cas에게 감사 인사를 전합니다!
답변2
체인 로더(체인.c32) 에서시스리눅스. 다른 syslinux
모듈과 마찬가지로 BIOS, efi32 및 efi64에도 다양한 버전이 있습니다.
LABEL local
MENU DEFAULT
MENU LABEL Boot from Local Hard Disk
KERNEL /path/to/chain.c32
APPEND hd0 2
그것은 내 /srv/tftp/default
파일에서 약간 조정되었습니다. 내 버전은 (내 httpd는 다음에서 KERNEL http://ip.ip.ip.ip/tftp/chain.c32
제공하도록 구성되었습니다 . tftp도 잘 작동합니다) 및 ./tftp/
/srv/tftp
APPEND hd0 0