PXE(Preboot eXecution Environment) 서버는 네트워크를 통해 원격으로 운영 체제를 설치할 수 있도록 해주는 환경.
주로 새로운 서버나 클라이언트 장치에 운영 체제를 설치할 때 사용되며, PXE 서버는 클라이언트 장치가 로컬 디스크나 USB 같은 물리적 저장 장치 없이도 부팅할 수 있게 해줌.
PXE 서버는 다음과 같은 주요 구성 요소로 동작:
1. DHCP (Dynamic Host Configuration Protocol) 서버: PXE 클라이언트 장치가 네트워크에 접속했을 때 IP 주소를 할당하고, 부팅할 서버의 위치를 알려줌.
2. TFTP (Trivial File Transfer Protocol) 서버: 클라이언트 장치가 운영 체제 설치에 필요한 파일을 다운로드할 수 있도록 해준다. 주로 커널 이미지와 부팅에 필요한 초기 RAM 디스크(initrd)를 제공.
부팅 이미지: 클라이언트가 네트워크로 부팅할 때 사용할 리눅스 커널과 초기 RAM 디스크 등의 이미지를 제공.
3. Kickstart 파일(선택 사항): 자동화된 설치를 위해 사용하는 스크립트 파일로, 운영 체제 설치 중에 필요한 설정을 미리 정의할 수 있음.
# PXE 서버의 기본 동작 과정
1. PXE 서버의 기본 동작 과정: 클라이언트 장치가 네트워크에서 PXE 부팅을 요청.
2. PXE 서버가 DHCP를 통해 클라이언트에게 IP 주소와 TFTP 서버의 위치를 제공.
3. 클라이언트는 TFTP 서버에서 부팅 이미지(커널 및 initrd)를 다운로드.
4. 부팅 이미지가 로드된 후, OS 설치가 시작됨. Kickstart 파일을 이용해 자동 설치도 가능.
PXE 서버는 대규모 서버 환경이나 클라이언트 PC의 운영 체제 배포 및 설치에 매우 유용.
# 설치 패키지
DHCPD (DHCP Daemon)
DHCP (Dynamic Host Configuration Protocol) 서버 데몬으로, 네트워크 내 클라이언트 장치들에게 IP 주소를 동적으로 할당하는 역할. PXE 환경에서는, 클라이언트 장치가 네트워크로 부팅할 때, DHCP 서버가 IP 주소를 할당하고 PXE 부팅을 위한 TFTP 서버 위치를 알려줌.
TFTP-Server (Trivial File Transfer Protocol Server)
간단한 파일 전송 프로토콜로, PXE 클라이언트가 부팅할 때 필요한 부팅 파일 (예: 커널, initrd 등)을 제공하는 서버.
TFTP는 FTP보다 단순하고 신뢰성 없는 프로토콜이지만, 작은 파일을 빠르게 전송하는데 적합.
Syslinux
주로 네트워크 부팅 또는 라이브 USB 제작에 사용되는 부트로더. PXE 환경에서는 pxelinux.0 파일을 통해 네트워크 부팅을 처리하며, 클라이언트가 TFTP 서버에서 이 파일을 받아와 부팅을 시작. 다양한 파일 시스템 및 부팅 방식을 지원.
VSFTPD (Very Secure FTP Daemon)
FTP 서버 데몬으로, 보안에 중점을 두고 설계된 FTP 서버. PXE 부팅 시, TFTP 서버와 함께 사용할 수 있으며, 클라이언트가 커널 이미지를 다운로드해야 할 경우 FTP 서버를 통해 파일을 제공할 수 있다. PXE 환경에서는 FTP를 통해 대형 이미지나 파일을 전송하는데 더 적합할 수 있다.
테스트 환경 : 버추얼 박스
OS : Rocky-8.6-x86_64-dvd1
CPU : 4개
메모리 : 4G
디스크 : 50GB
네트워크 설정 : NAT, 호스트 전용 어댑터
1. 방화벽 / selinux 비활성화
systemctl stop firewalld
systemctl disable firewalld
vi /etc/selinux/config
SELINUX=enforcing 값을 disabled로 변경
2. dhcpd 설치
dnf -y install dhcp-server
3. dhcpd.conf 편집
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 = "enp0s8"; <- 인터페이스 명 확인 후 입력
subnet 192.168.56.0 netmask 255.255.255.0 { -> PXE 서버의 대역과 넷마스크
option routers 192.168.56.20; -> PXE 서버 주소
option subnet-mask 255.255.255.0; -> 서브넷 주소
range dynamic-bootp 192.168.56.25 192.168.56.30; -> DHCP 할당 IP 대역
default-lease-time 3600;
max-lease-time 7200;
##### pxe setting #####
allow booting;
allow bootp;
next-server 192.168.56.20; -> PXE 서버 주소
filename "pxelinux.0";
}
4. tftp-server 설치 및 구성 / pxe 부팅파일 전송 시 tftp를 사용
dnf install tftp-server -y
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 오픈
5. 서비스 정상 동작 확인
systemctl start tftp-server
systemctl status tftp-server
6. syslinux 설치
dnf install syslinux -y
# 부팅에 필요한 파일 복사
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/
7. PXE 구성파일 설정
mkdir /var/lib/tftpboot/pxelinux.cfg
vi /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 0
timeout 600
ontimeout local
LABEL local
MENU LABEL Boot Local Disk
localboot 0
LABEL RockyLinux8.6
MENU LABEL RockyLinux 8.6 Install
KERNEL /rockylinux8.6/vmlinuz
APPEND initrd=/rockylinux8.6/initrd.img inst.repo=ftp://192.168.56.20/rockylinux8.6
8. FTP 서버를 활용하여 레포지토리 생성
dnf install vsftpd -y
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO 를 YES로 변경 후 저장
# 익명 사용자가 FTP 서버에 접속할 수 있도록 허용한다는 의미. 즉, 사용자 이름과 비밀번호를 입력하지 않고도 누구나 FTP 서버에 접속해 파일을 다운로드하거나, 설정에 따라 업로드까지 할 수 있다.
9. 설치에 필요한 iso 이미지 mount
mount /dev/sr0 /mnt
10. 내용 복사하여 로컬레포지토리 구성
mkdir /var/ftp/rockylinux8.6
cp -r /mnt/. /var/ftp/rockylinux8.6/
11. OS 부팅이미지 복사
mkdir /var/lib/tftpboot/rockylinux8.6
cp /var/ftp/rockylinux8.6/images/pxeboot/initrd.img /var/lib/tftpboot/rockylinux8.6/
cp /var/ftp/rockylinux8.6/images/pxeboot/vmlinuz /var/lib/tftpboot/rockylinux8.6/
12. 서비스 등록 및 시작
systemctl enable vsftpd
systemctl restart vsftpd
systemctl enable tftp-server
systemctl restart tftp-server
systemctl enable dhcpd
systemctl restart dhcpd
13. FTP 확인
정상적으로 조회되는 것 확인
14. 새로운 VM 실행
F12 키를 눌러 boot 모드 진입
l(엘) 입력
방향키 이동하여 "RockyLinux 8.6 Install" 선택
Continue 클릭하여 진행
IP가 사전에 설정된 범위 내에 있는지 확인
추가 세팅 후 설치 시작
이상 숙련된 조교의 시범이었다.
'리눅스(Linux) > PXE & KickStart 세팅' 카테고리의 다른 글
KickStart 세팅하기 (3) | 2024.10.09 |
---|