반응형
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
'Linux > RHEL7 & 8' 카테고리의 다른 글
[Linux] 디렉토리(폴더) 별 디스크 사용량 확인 (0) | 2021.11.19 |
---|---|
[RHEL8] Cobbler 설치 및 구성하기 (0) | 2021.10.27 |
[RHEL/CentOS 8] cockpit (웹 콘솔)설치방법 (0) | 2021.10.08 |
[RHEL/CentOS 8] SSH는 접속이 되는데 SFTP는 안되는 현상 (0) | 2021.10.07 |
[RHEL/CentOS 8] KVM install 설치방법 (0) | 2021.10.07 |