PxE
- 컴퓨터에 운영체제가 설치되어 있지 않아도,네트워크를 통해 OS 설치/부팅이 가능하도록 해주는 기술
- USB도 CD도 없이, 네트워크만으로 설치 가능하게 만들어주는 기술
- 다수의 Bare-metal(OS가 설치되지 않은) 서버에 OS를 설치하는 매커니즘(기술)
- 일반적으로 네트워크를 통해 운영체제를 설치.
PxE 흐름
- PXE 기능이 켜진 컴퓨터를 켬
- BIOS/UEFI 설정에서 PXE 부팅이 설정되어 있어야 해요.
- DHCP 서버로 IP 요청
- PXE 부팅용 파일의 위치(TFTP 주소) 도 함께 요청해요.
→ DHCP + PXE 옵션 (helper address 등) 필요
- TFTP 서버로부터 부트로더 다운로드
- TFTP 서버에서 pxelinux.0 같은 부팅 파일을 받습니다.
- OS 설치 이미지 로딩
- 부트로더가 OS 설치 이미지(vmlinuz, initrd.img 등)를 다운받고 실행
- OS 설치 시작!

- 운영체제가 설치되지않은 Bare-metal 서버들은 혹시라도 누군가 자신에게 아이피를 부여하지 않을까하는 마음에 계속 dhcp discover 메세지를 보낸다.

PxE 서버 구축

[root@pxe ~]# yum install -y dhcp tftp-server vsftpd
# pxe 서버 구현에 필요한 3가지 패키지를 설치.
1.DHCP server 구성
[root@pxe ~]# vi /etc/dhcp/dhcpd.conf
===
subnet 211.183.3.0 netmask 255.255.255.0
{
option routers 211.183.3.2;
#GW
option subnet-mask 255.255.255.0;
#SM
range dynamic-bootp 211.183.3.220 211.183.3.240;
# 고전적인 방식
option domain-name-servers 8.8.8.8;
#DNS
allow booting;
#부팅 허용.
next-server 211.183.3.44;
#PxE(tftp) 서버의 주소.
filename "pxelinux.0";
# next-server에 가서 받아올 파일.
}
===
[root@pxe ~]# systemctl restart dhcpd
[root@pxe ~]# systemctl enable dhcpd

- dhcp 서버로 부터 아이피를 잘 부여받는걸 확인 가능.
2. tftp server 구성
- dhcp를 통해 IP를 부여받은 pxe client가 tftp 서버를 통해 부팅 및 파일 전송에 필요한 환경이 구성되도록 해당 파일들을 복사해오기




- 해당 장치의 iso 파일에 접근하기위해 /media 라는 마운트포인트로 마운팅.

아래의 3가지 파일이 필요하다
- pxelinux.0 = pxe 부팅에 필요한 파일. iso 파일에 없으므로 다운받아야 한다.
- initrd.img = 램디스크 파일(램을 마치 디스크처럼 사용 가능). 우리는 현재 사용할 준비가 되어있는 보조기억장치(디스크)가 없으므로 이 파일을 통해 램을 디스크처럼 사용할 예정.
- vmlinuz = 압축된 리눅스 커널 파일.
[root@pxe ~]# cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot
[root@pxe ~]# cp /media/images/pxeboot/initrd.img /var/lib/tftpboot
[root@pxe ~]# yum install -y syslinux
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

[root@pxe ~]# systemctl restart tftp
[root@pxe ~]# systemctl enable tftp

3.ftp 서버를 구성
- OS설치에 필요한 파일들을 ftp를 통해 보내줄 예정.

- iso 파일 내용 전부를 ftp 디렉토리에 복사해주자.
[root@pxe ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
# 파일 확장자처럼 보이지만 디렉토리를 만들어주자.

[root@pxe pxelinux.cfg]# vi default
# default라는 파일을 통해 어떤 방식으로 부팅을 할지 결정.

DEFAULT centos7_pxe
LABEL centos7_pxe
kernel vmlinuz
APPEND initrd=initrd.img repo=ftp://211.183.3.44/pub
[root@pxe pxelinux.cfg]# systemctl restart vsftpd
[root@pxe pxelinux.cfg]# systemctl enable vsftpd
4.PxE 테스트

