본문 바로가기

운영체제/Linux

Rocky Linux 8 PXE 서버 구축(1)

PXE(Pre-boot eXecution Environment)

- NIC를 통해 컴퓨터를 부팅할 수 있게 하는 환경

 

 

테스트 환경

운영체제 : VMwareESXi 7.0 (무료 라이센스 사용)

 

 

PXE boot용 가상 스위치 생성

내부망 목적으로 만들것이기 때문에 업링크 포트는 제거한다.

 

 

 

포트 그룹 추가

위에서 생성한 가상스위치를 선택하여 추가한다.

 

( VMWare Workstation 에서도 DHCP기능을 뺀 host-only 가상어댑터를 추가로 만들어서 위 처럼 환경을 만들 수 있다. )

 

 

VM생성

운영체제 : Rocky Linux 8.4 (vm)

vCPU : 2개

메모리 : 4G

DISK : 50GB

네트워크 : 1. 패키지 설치용 NAT 네트워크

               2. 위에서 만든 PXE 전용 네트워크

 

 

테스트 환경이기 때문에 방화벽 / selinux는 내리고 진행하겠음

systemctl stop firewalld
systemctl disable firewalld
setenforce 0

 

 

dhcpd 설치

dnf install dhcp-server

# vi /etc/dhcp/dhcpd.conf

#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
dhcpd_interface = "ens34";

subnet 10.22.22.0 netmask 255.255.255.0 {
        option routers 10.22.22.1;
        option subnet-mask 255.255.255.0;
        range dynamic-bootp 10.22.22.20 10.22.22.220;
        default-lease-time 3600;
        max-lease-time 7200;
        ##### pxe setting #####
        allow booting;
        allow bootp;
        next-server 10.22.22.1;
        filename "pxelinux.0";
}

PXE interface 이름 확인하고 넣을 것

 

 

TFTP-SERVER 설치 및 구성

dnf install tftp-server

pxe 부팅파일 전송에 tftp를 사용한다. 

 

cp /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service
cp /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket

 

systemd에서 정상적으로 동작할 수 있게 파일을 아래처럼 수정할 것이다.

 

# vi /etc/systemd/system/tftp-server.service

[Unit]
Description=Tftp Server
Requires=tftp-server.socket
Documentation=man:in.tftpd

[Service]
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
StandardInput=socket

[Install]
WantedBy=multi-user.target
Also=tftp-server.socket

 

 

# vi /etc/systemd/system/tftp-server.socket

[Unit]
Description=Tftp Server Activation Socket

[Socket]
ListenDatagram=69
BindIPv6Only=both

[Install]
WantedBy=sockets.target
  • ListenDatagram = udp프로토콜 포트번호
  • BindIPv6Only=both = IPv4, IPv6 오픈

 

systemctl start tftp-server
systemctl status tftp-server

서비스 정상 동작 확인

 

 

 

 

syslinux 설치

dnf install syslinux

 

부팅파일에 필요한 파일 복사

cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/libutil.c32 /var/lib/tftpboot/

 

PXE 구성파일 설정

mkdir /var/lib/tftpboot/pxelinux.cfg

 

# vi /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32
prompt 0
timeout 150
ontimeout local

LABEL local
        MENU LABEL Boot Local Disk
        localboot 0
   
LABEL RockyLinux8.4
        MENU LABEL RockyLinux 8.4 Install
        KERNEL /rockylinux8.4/vmlinuz
        APPEND initrd=/rockylinux8.4/initrd.img inst.repo=ftp://10.22.22.1/rockylinux8.4

 

 

FTP 서버 활용하여 로컬 레포지토리 생성

dnf install vsftpd

#vi /etc/vsftpd/vsftpd.conf

anonymous_enable=YES

ftp 계정을 설정해서 해도 상관없지만 PXE 테스트 환경이므로 편의상 익명ftp로 진행하겠음

 

 

설치에 필요한 iso 이미지 mount 

설치에 사용했던 iso 이미지를 /mnt에 마운트

CD 내용 복사하여 로컬레포지토리 구성

mkdir /var/ftp/rockylinux8.4
cp -r /mnt/. /var/ftp/rockylinux8.4/

 

RHEL 8 이후 버전들은 cp -r /mnt/. 으로 복사하지않고 cp -r /mnt/* 으로 진행하면

숨김파일 복사가 안되서 PXE로 설치시 레포지토리 오류발생함

 

OS 부팅이미지 복사

mkdir /var/lib/tftpboot/rockylinux8.4
cp /var/ftp/rockylinux8.4/images/pxeboot/initrd.img /var/lib/tftpboot/rockylinux8.4/
cp /var/ftp/rockylinux8.4/images/pxeboot/vmlinuz /var/lib/tftpboot/rockylinux8.4/

 

서비스 시작

systemctl restart vsftpd
systemctl restart tftp-server
systemctl restart dhcpd

 

FTP 확인

# curl ftp://localhost/rockylinux8.4/
dr-xr-xr-x    4 0        0            4096 Dec 03 15:30 AppStream
dr-xr-xr-x    4 0        0            4096 Dec 03 15:34 BaseOS
dr-xr-xr-x    3 0        0            4096 Dec 03 15:29 EFI
-r--r--r--    1 0        0            2204 Dec 03 15:29 LICENSE
-r--r--r--    1 0        0             883 Dec 03 15:29 TRANS.TBL
dr-xr-xr-x    3 0        0            4096 Dec 03 15:30 images
dr-xr-xr-x    2 0        0            4096 Dec 03 15:30 isolinux
-r--r--r--    1 0        0              86 Dec 03 15:29 media.repo

파일목록이 정상적으로 보인다.

 

PXE 부팅 정상 동작 확인

PXE 테스트 VM생성

PXE부팅용 네트워크 어댑터를 할당 하고 VM 생성

 

VM실행 후 PXE 부팅 확인

 

 

DHCP 할당 확인

/var/log/message에서 dhcpd 로그를 확인할 수 있음. 테스트 VM IP가 10.22.22.24로 할당이 된 것을 확인할 수 있다.

 

 

 

설치화면 확인

1) 초기화면

2) 설치 소스 확인

SOFTWARE - Installation Source 에서 설치 경로가 ftp서버로 잡힌것을 확인할 수 있다.

 

3) 할당 된 ip확인

dhcpd 로그에서 봤던 것 처럼 10.22.22.24로 설정되어 있다.

 

설치까지 자동으로 해주는 kickstart 에 대해서는 나중에 작성 하겠음

 

 

-끝-