본문으로 바로가기

[RHEL8] PXE & Kickstart 서버 구축

category Linux/RHEL7 & 8 2021. 10. 25. 19:36
반응형

RHEL 8 (8.4)에 PXE 서버를 구축하여 OS를 자동으로 설치할 수 있게 구성하는 방법입니다.

본 가이드에서는 httpd. tftp, dhcp, syslinux, xinetd 를 활용하였습니다.

 

PXE서버는 2core / 4G / 40G VM을 기반으로 구축하였으며, PXE 서버의 NIC은 2개로 구성하였습니다.

1개는 SSH 접속 및 인터넷, 나머지 1개는 PXE 전용 (192.168.1.0/24)

 

 

 

1. 필요패키지 설치

[root@hk-pxe ~]# dnf install -y dhcp-server tftp-server syslinux httpd

 

 

2. 디렉토리 생성

[root@hk-pxe pxelinux]# mkdir -p /var/lib/tftpboot/pxelinux/pxelinux.cfg

 

 

3. OS 설치에 사용되는 OS iso 파일 mount

[root@hk-pxe xinetd.d]# mount -t iso9660 /root/cent7.iso /mnt/iso -o loop,ro

[root@hk-pxe xinetd.d]# df -h
Filesystem                         Size  Used Avail Use% Mounted on
devtmpfs                           1.9G     0  1.9G   0% /dev
tmpfs                              1.9G     0  1.9G   0% /dev/shm
tmpfs                              1.9G  8.6M  1.9G   1% /run
tmpfs                              1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel_hk--cobbler-root   39G  3.9G   36G  10% /
/dev/vda1                         1014M  197M  818M  20% /boot
/dev/loop0                         942M  942M     0 100% /mnt/iso
tmpfs                              374M     0  374M   0% /run/user/0

 

 

4. syslinux 파일 복사 및 default 파일 작성

[root@hk-pxe iso]# cd /usr/share/syslinux/

[root@hk-pxe syslinux]# cp *.* /var/lib/tftpboot/pxelinux

[root@hk-pxe syslinux]# cp -pr diag/ /var/lib/tftpboot/pxelinux

[root@hk-pxe syslinux]# cp -pr dosutil/ /var/lib/tftpboot/pxelinux



[root@hk-pxe pxelinux.cfg]# vi /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
default vesamenu.c32
prompt 1
timeout 600

display boot.msg

label linux
  menu label ^Install system
  menu default
  kernel images/cent7/vmlinuz
  append initrd=images/cent7/initrd.img ip=dhcp inst.repo=http://192.168.1.5/111/ ks=http://192.168.1.5/ks/cent7.cfg
label local
  menu label Boot from ^local drive
  localboot 0xffff

 

 

5. 부팅에 필요한 커널등을 위해 mount했던 iso파일 복사

[root@hk-pxe xinetd.d]# cd /mnt/iso

[root@hk-pxe iso]# mkdir /var/www/html/111

[root@hk-pxe iso]# cp -pr CentOS_BuildTag EFI EULA GPL LiveOS Packages RPM-GPG-KEY-CentOS-7 RPM-GPG-KEY-CentOS-Testing-7 TRANS.TBL images isolinux repodata

## 전체를 복사해도 아래 2개 파일은 복사되지 않는다. 아래 2개 파일을 수동으로 복사한다.
[root@hk-pxe iso]# ls -alh
total 113K
drwxr-xr-x  8 root root 2.0K Sep 12  2019 .
drwxr-xr-x. 3 root root   17 Oct 22 15:40 ..
-rw-r--r--  1 root root   29 Sep  6  2019 .discinfo
-rw-r--r--  1 root root  354 Sep  6  2019 .treeinfo


[root@hk-pxe iso]# cp -pr .discinfo .treeinfo /var/www/html/111/

 

 

6. initrd 및 vmlinux 파일 복사

[root@hk-pxe ~]# mkdir -p /var/lib/tftpboot/pxelinux/images/cent7/

[root@hk-pxe ~]# cd /var/lib/tftpboot/pxelinux/images/cent7/

[root@hk-pxe cent7]# cp -pr /mnt/iso/images/pxeboot/initrd.img .

[root@hk-pxe cent7]# cp -pr /mnt/iso/images/pxeboot/vmlinuz .

 

 

7. kickstart 파일 생성

[root@hk-pxe ~]# mkdir -p /var/www/html/ks

[root@hk-pxe ~]# cd /var/www/html/ks


[root@hk-pxe ks]# vi cent7.cfg

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use HTTP installation media
url --url="http://192.168.1.5/111/"

# Root password
rootpw --iscrypted $1$hnH8IhAc$AP7VZTNP1AqX4Y7E5wJIL/

# Network information
network --bootproto=dhcp --device=eth0 --onboot=on

# Reboot after installation
reboot

# System authorization information
auth useshadow passalgo=sha512

# Use graphical install
text

firstboot yes

# System keyboard
keyboard us

# System language
lang en_US

# SELinux configuration
selinux disabled

# Installation logging level
logging level=info

# System timezone
timezone Asia/Seoul

# System bootloader configuration
bootloader --location=mbr --boot-drive=vda

clearpart --all --initlabel
part swap --asprimary --fstype="swap" --size=1024
part /boot --fstype xfs --size=500
part pv.01 --size=1 --grow
volgroup root_vg01 pv.01
logvol / --fstype xfs --name=lv_01 --vgname=root_vg01 --size=1 --grow

%packages
@^minimal

@core
%end
%addon com_redhat_kdump --disable --reserve-mb='auto'
%end

 

 

8. dhcp 설정

[root@hk-pxe ~]# cd /etc/dhcp/


[root@hk-pxe dhcp]# vi dhcpd.conf
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#

option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;

subnet 192.168.1.0 netmask 255.255.255.0 {
	option routers 192.168.1.5;
	range 192.168.1.10 192.168.1.200;

	class "pxeclients" {
	  match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
	  next-server 192.168.1.5;

	  if option architecture-type = 00:07 {
	    filename "BOOTX64.efi";
	    } else {
	    filename "pxelinux/pxelinux.0";
	  }
	}
}

 

 

9. 관련 서비스 활성화 및 시작

[root@hk-pxe ~]# systemctl enable dhcpd tftp httpd --now

 

 

10. 테스트 VM 생성 및 PXE 부팅 (/w 결과)

install system 선택

 

아래와 같이 자동으로 설치가 진행되는 것을 확인할 수 있습니다.

728x90