AFAIU, tftp
서버를 pxe
부팅하는 데 사용할 때 클라이언트는 서버에 요청을 보내고 서버는 일부 파일(initrd, kernel, config 등)을 다시 보냅니다. 서버는 클라이언트의 IP 주소를 기반으로 클라이언트에 보낼 파일을 결정할 수 있습니다. 클라이언트는 이러한 파일의 URL을 모릅니다.
내 질문은 이것입니다:
tftp
서버를 테스트하고 싶습니다 . 명령이나 (간단한) 스크립트를 실행하여 서버에 접속하고 tftp
, 파일을 받고, 해당 파일을 디스크에 저장하고 싶습니다.
즉, 내가 하고 싶은 일은 다음과 같습니다.
서버 측에서는 차이가 없습니다. 서버는 클라이언트가 PXE를 통해 부팅하기를 원한다고 생각하고 파일을 클라이언트에 보냅니다.
클라이언트 측: 클라이언트가 실제로 시작을 원하지 않습니다. 단지 파일을 디스크에 복사(저장)하려고 합니다.
이를 수행하는 가장 쉬운 방법은 무엇입니까?
답변1
귀하의 질문에 대한 @Patrick의 의견은 절대적으로 정확합니다. PXE를 부팅하는 데 필요한 모든 클라이언트 컴퓨터는 DHCP 요청을 브로드캐스트하는 것입니다. DHCP 서버(일반적으로 PXE 부팅 서버에 있음)는 클라이언트 장치의 MAC 주소를 확인하고 이를 사용하여
- 클라이언트에게 IP 주소 제공
- 클라이언트에게 PXE 서버에서 가져와야 하는 파일을 알려줍니다.
이 시점에서 클라이언트는 서버의 주소와 서버에서 무엇을 얻을 수 있는지 알고 있습니다. 불행하게도 DHCP 서버는 하나만 있을 수 있고, PXE 클라이언트에 대한 특수 구성이 있고, TFTP 서버를 실행해야 하는 등 복잡한 문제가 많이 있습니다.
매우 유용한 단계별 가이드가 있습니다.https://wiki.debian.org/PXEBootInstall. 배포판을 지정하지 않았지만 대부분의 PXE 시스템은 최소한 이 지침을 준수합니다.
귀하의 문제는 PXE 서버의 주소를 알고 싶지 않다는 점을 이해합니다. 그러나 이를 수행할 수 있는 유일한 방법은(자신의 클라이언트를 작성하지 않고) PXE 클라이언트 DHCP 요청자/처리기를 사용하는 것입니다. 이 부분을 포기하고 싶다면 지도하는 데 필요한 많은 능력을 포기하는 것입니다.
실제로 테스트 목적으로 많은 PXE 프로토콜을 구현하게 되는 시스템 부팅을 원하지 않는다는 것을 알고 있습니다. 사용할 수 있는 임시 머신이 없다면 왜 PXE를 테스트해야 하는지 궁금합니다.
답변2
답변3
내가 가장 잘 알고 있는 방법은 다음과 같다.구두 수선공TFTP를 설정하므로 이것이 관련성이 있는지 확실하지 않지만 어쨌든 이 정보를 제공하겠습니다. Cobbler는 pxelinux.0
다음을 사용하여 부트로더를 설정합니다.@Patrick이 댓글에 설명했습니다.또한@msw. 그러나 pxelinux.cfg/
서버에 연결할 각 시스템의 MAC 주소가 포함된 해당 디렉터리도 설정됩니다 .
이러한 파일에는 pxelinux.cfg
다음 파일 정보가 포함되어 있습니다.
$ more 01-54-52-00-ff-ff-ff
default linux
prompt 0
timeout 1
label linux
kernel /images/Centos56-x86_64/vmlinuz
ipappend 2
append initrd=/images/Centos56-x86_64/initrd.img ksdevice=bootif lang= console=ttyS0,115200 text serial kssendmac ks=http://192.168.1.207/cblr/svc/op/ks/system/kvmcobblertest
가상 머신이 부팅할 실제 Linux 커널은 TFTP 액세스 가능 디렉터리에 포함되어 있습니다 /images/Centos56-x86_64/vmlinuz
. 서버 뒷면에서 전체 TFTP 디렉토리 구조는 다음과 같습니다.
$ ls -l /tftpboot/
total 348
drwxr-xr-x 2 root root 4096 Jun 22 2011 etc
drwxr-xr-x 2 root root 4096 Jul 9 2012 grub
drwxr-xr-x 6 root root 4096 Jul 9 2012 images
drwxr-xr-x 2 root root 4096 Jun 30 2011 images2
-rw-r--r-- 1 root root 20020 Jul 9 2012 memdisk
-rw-r--r-- 1 root root 39188 Jul 9 2012 menu.c32
drwxr-xr-x 2 root root 4096 Jun 22 2011 ppc
-rw-r--r-- 1 root root 14716 Jul 9 2012 pxelinux.0
drwxr-xr-x 2 root root 4096 Jul 9 2012 pxelinux.cfg
drwxr-xr-x 2 root root 4096 Jul 9 2012 s390x
-rw-r--r-- 1 root root 198192 Jul 9 2012 yaboot
다른 사람들이 설명했듯이 이 TFTP 서버에 대해 시작된 서버가 처음에 액세스할 수 있는 유일한 것은 pxelinux.0
특정 서버의 MAC 주소에 해당하는 구성 파일입니다.
사진 카탈로그
궁금하다면 다음과 같습니다.
$ tree /tftpboot/images
/tftpboot/images
|-- Centos56-x86_64
| |-- initrd.img
| `-- vmlinuz
|-- Centos56-xen-x86_64
| |-- initrd.img
| `-- vmlinuz
`-- Centos60-x86_64
|-- initrd.img
`-- vmlinuz
3 directories, 6 files