
AFAIU, tftp
서버를 사용하는 경우pxe
때 클라이언트는 서버에 요청을 보내고 서버는 몇 가지 파일(initrd, kernel, config 등)을 다시 보냅니다. 서버는 클라이언트의 IP 주소에 따라 클라이언트에 보낼 파일을 결정할 수 있습니다. 클라이언트는 해당 파일의 URL을 모릅니다.
내 질문은 다음과 같습니다.
서버를 테스트하고 싶습니다 tftp
. 명령이나 (간단한) 스크립트를 실행하고 싶습니다.tftp
서버에 접속하여 파일을 받고 이 파일을 디스크에 저장하는
즉, 내가 하고 싶은 일은 이것이다.
서버 측에서는 차이가 없습니다. 서버는 클라이언트가 PXE를 통해 부팅하기를 원한다고 생각하고 파일을 클라이언트에 보냅니다.
클라이언트 측: 클라이언트는 실제로 부팅을 원하지 않습니다. 단지 파일을 디스크에 복사(저장)하려고 합니다.
이를 수행하는 가장 쉬운 방법은 무엇입니까?
답변1
귀하의 질문에 대한 @Patrick의 의견은 정확했습니다. PXE를 부트스트랩하는 데 필요한 모든 클라이언트 시스템은 DHCP 요청을 브로드캐스트하는 것입니다. DHCP 서버(일반적으로 PXE 부팅 서버에 있음)는 클라이언트 장치의 MAC 주소를 확인하고 이를 사용하여
- 클라이언트에게 IP 주소 제공
- 클라이언트에게 PXE 서버에서 어떤 파일을 가져와야 하는지 알려줍니다.
그 시점에서 클라이언트는 서버의 주소와 서버에서 무엇을 얻을 수 있는지 알게 됩니다. 불행하게도 PXE 클라이언트를 위한 특수 구성이 있는 DHCP 서버가 하나만 있을 수 있고 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
이 VM이 부팅할 실제 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