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
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) 설치 소스 확인
3) 할당 된 ip확인
설치까지 자동으로 해주는 kickstart 에 대해서는 나중에 작성 하겠음
-끝-
'운영체제 > Linux' 카테고리의 다른 글
[Rocky Linux 8] Rocky Linux GUI 설치 (GNOME) (0) | 2022.01.16 |
---|---|
[Rocky Linux 8] Rocky Linux 로컬 레포지토리 만들기 (0) | 2022.01.16 |
[Rocky Linux 8] Rocky Linux 8 패스워드 초기화 (0) | 2021.12.14 |
Rocky Linux 8 PXE 서버 구축 (2) - kickstart (0) | 2021.12.14 |