PXE 소개

Preboot execution environment 의 약자로써, 원격 네트워크 연결을 통한
OS 부팅을 가능하게 하는 표준

PXE 서버 사전 준비

Virtualbox 에서 테스트하며, Host-only Adapter 를 사용한다.

Virtualbox 실행 - File - Host Network Manager

IPv4 Address: 10.0.0.254/24
DHCP Server: None

CentOS 07 VM PXE:
  NIC 2EA 할당 ( 공인망/사설망)

CentOS 07 VM Client:
  NIC 1EA 할당 (사설망)

PXE 서버 네트워크 설정

# Public
cat << EOF | sudo tee /etc/sysconfig/network-scripts/ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
EOF

# Private
cat << EOF | sudo tee /etc/sysconfig/network-scripts/ifcfg-enp0s8
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=no
NAME=enp0s8
DEVICE=enp0s8
ONBOOT=yes

IPADDR=10.0.0.11
PREFIX=24
EOF

sudo systemctl restart network
sudo systemctl status network

PXE 서버 DHCP 설치

sudo yum install -y dhcp

sudo mkdir /etc/dhcp/dhcpd.d/

cat << EOF | sudo tee /etc/dhcp/dhcpd.conf
option domain-name-servers     10.0.0.11;
## 10.0.0.11 -> PXE 서버 사설 IP

default-lease-time 600;
max-lease-time 7200;

authoritative;
## DHCPNAK send enable

filename        "pxelinux.0";
next-server     10.0.0.11;
## tftp 서버 IP

subnet 10.0.0.0 netmask 255.255.255.0 {
    range dynamic-bootp 10.0.0.200 10.0.0.253;
    option broadcast-address 10.0.0.255;

    # option routers 10.0.0.11;
    ## Client 가 자동 할당받는 Gateway IP
    ## 해당 예제에서는 사설망이므로 주석 처리
}

EOF

sudo systemctl enable --now dhcpd
sudo systemctl status dhcpd

PXE 서버 TFTP 설치

리눅스 부팅에 필요한 파일을 전송하기 위한 tftp 설치

sudo yum install -y syslinux tftp tftp-server
sudo cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

sudo systemctl enable --now tftp
sudo systemctl status tftp

tftp
(to) 10.0.0.11
tftp> verbose
tftp> trace
tftp> get pxelinux.0

PXE 서버 ISO 부팅 설정

wget http://mirror.navercorp.com/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-2009.iso

sudo mkdir /var/lib/tftpboot/centos7

sudo mount CentOS-7-x86_64-Minimal-2009.iso /mnt
## sudo mount -t iso9660 -o loop CentOS-7-x86_64-Minimal-2009.iso /mnt

sudo cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/centos7/
sudo cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/centos7/
sudo cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/

sudo mkdir /var/lib/tftpboot/pxelinux.cfg/

cat << EOF | sudo tee /var/lib/tftpboot/pxelinux.cfg/default
timeout 100
default menu.c32

menu title ######### PXE Boot Menu #########
label 1
   menu label ^1) Install CentOS 7
   kernel centos7/vmlinuz
   append initrd=centos7/initrd.img method=http://10.0.0.11/iso devfs=nomount

label 2
   menu label ^2) Boot from local drive
   localboot
EOF

sudo yum install -y httpd

cat << EOF | sudo tee /etc/httpd/conf.d/pxeboot.conf
Alias /iso /mnt
<Directory /mnt>
    Require ip 127.0.0.1 10.0.0.0/24
</Directory>
EOF

sudo systemctl enable --now httpd
sudo systemctl disable --now firewalld

PXE 서버 ISO 부팅 테스트

Virtualbox - VM - Settings

첫번째 NIC 은 dhcpd 서버에서 사용하는 NIC 과 동일한 대역의 장비로 설정한다. (첫번째 NIC 이 다른 대역의 장비인 경우 미동작한다.)

VM Start - 단축키 F12 - Boot Manager - l) LAN (단축키 L 입력)

CentOS 설치화면을 확인할 수 있다.

PXE 서버 결론

PXE 서버와 다른 PC 의 네트워크 부팅을 통해 CentOS 설치를 가능하게
해보았다. 이외에도 initrd(=램디스크) 의 옵션에 따라 CentOS 자동
설치(kickstart)도 가능하고 nfs 에서 가져온 PXE 서버의 루트 파일시스템을
통해 원격 부팅도 가능하다.

image_print
카테고리: Linux

호스트웨이 시스템 팀

호스트웨이 시스템1팀