PxE (Preboot eXecution Environment) 서버

wera4677·2025년 6월 4일

리눅스

목록 보기
22/23

PxE

  • 컴퓨터에 운영체제가 설치되어 있지 않아도,네트워크를 통해 OS 설치/부팅이 가능하도록 해주는 기술
  • USB도 CD도 없이, 네트워크만으로 설치 가능하게 만들어주는 기술
  • 다수의 Bare-metal(OS가 설치되지 않은) 서버에 OS를 설치하는 매커니즘(기술)
  • 일반적으로 네트워크를 통해 운영체제를 설치.

PxE 흐름

  1. PXE 기능이 켜진 컴퓨터를 켬
  • BIOS/UEFI 설정에서 PXE 부팅이 설정되어 있어야 해요.
  1. DHCP 서버로 IP 요청
  • PXE 부팅용 파일의 위치(TFTP 주소) 도 함께 요청해요.
    → DHCP + PXE 옵션 (helper address 등) 필요
  1. TFTP 서버로부터 부트로더 다운로드
  • TFTP 서버에서 pxelinux.0 같은 부팅 파일을 받습니다.
  1. OS 설치 이미지 로딩
  • 부트로더가 OS 설치 이미지(vmlinuz, initrd.img 등)를 다운받고 실행
  1. 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 라는 마운트포인트로 마운팅.

  • 설치 iso 파일의 내용들..

아래의 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 테스트

  • 이런 화면까지 진입했다면 성공.
profile
꿈나무🌳

0개의 댓글