본문 바로가기

카테고리 없음

[Centos7] PXE 서버 구성 및 설치 (FTP사용 + kickstart)

[ PXE 개념 소개 및 구성요소 ]

 

PXE (Preboot Excution Environment) 기반의 운영체제 자동설치 방법은 앞서 강좌에서 소개한 다양한 서버 구축 기술을 적용하여 편리하게 운영체제를 설치할 수 있다.

서버들은 기본적으로 BIOS와 NIC (Network Interface Card : 랜카드)를 내장하고 있는데, 이 2개의 하드웨어 구성요소는 Network Boot/PXE 기술을 기본 지원한다.

설치가 다소 복잡해 보이지만, 동작방식을 이해하면 설치를 쉽게 할 수 있다.

 

우선 PXE 아래와 같은 구성요소들이 핵심으로 동작한다.

 

Server 구성요소

  • dhcpd - 설치할 클라이언트와 서버간의 동작은 DHCP 기반으로 모든 네트워크 정보를 주고 받기 때문에 반드시 필요하다. (구성 파일 - /etc/dhcp/dhcpd.conf)

  • TFTP - 설치에 필요한 서버 구성 내용과 PXE boot 이미지는 모두 TFTP로 동작시킨다. (구성파일 - /var/lib/tftpboot/pxelinux.cfg, PXE 이미지 - /var/lib/tftpboot/vmlinuz,initrd.img)

  • FTP / HTTP/ NFS - PXE 부트이후 실제 리눅스 이미지를 설치하려면 서버에서 서비스를 제공해 주어야 한다. 네트워크 서비스가 가능한 패키지가 있어야 한다. 웹 서비스, FTP, NFS 등 지원이 가능하다.

  • Kickstart - 실제 리눅스 설치시 환경에 대해서 미리 설정하면 해당 설정파일을 참조해서 설치한다. (구성파일 - 네트워크서비스 디렉토리에 포함 시킨다. centos에서는 root directory에 anaconda-ks.cfg라는 파일로 샘플 파일이 존재한다.)

 

Client 구성요소

  • BIOS/NIC - BIOS에서 PXE Boot가 우선되거나, 설정되어야 하고 NIC에서 PXE boot를 지원해야 한다. 거의 대부분 서버가 지원한다.

 

1. PXE 구성을 위한 패키지 설치

yum -y install tftp ttfp-server xinetd'

yum -y install vsftpd

yum -y install dhcpd

yum -y install syslinux

 

2. 서버에서 필요한 보안 정책을 구성

systemctl stop firewalld

systemctl disable firewalld

systemctl stop NetworkManager

systemctl disable NetworkManager

vi /etc/sysconfig/seliunx

=disabled

iptables -F

 

3. 이미지 파일 마운트 할 폴더 생성 + 마운트 하기

mkdir -p /var/ftp/pub/centos7

mount /dev/~~ /var/ftp/pub/centos7

 

4. 부팅 파일 및 pxe서버 구성에 필요한 파일 가져오기

cp /var/ftp/pub/centos7/image/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/(본인이 원하는 pxe폴더명)

cp /var/ftp/pub/centos7/isolinux/vesamenu.c32 /var/lib/tftpboot/(본인이 원하는 pxe폴더명) 또는

cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/(본인이 원하는 pxe폴더명)

 

vesamenu.c32와 menu.c32의 차이는 그래픽 / 텍스트 차이

 

5. default 파일 설정과 경로 디렉토리 생성

cd /var/lib/tftpboot/("")

mkdir pxelinux.cfg

vi pxelinux.cfg/default

 

6. vi pxelinux.cfg/default

default menu.c32

timeout 100
menu background splash.jpg
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color timeout_msg 0 #ffffffff #00000000
menu color timeout 0 #ffffffff #00000000
menu color cmdline 0 #ffffffff #00000000
menu tabmsg Press ENTER to Install or TAB to edit a menu entry
menu title ####  OS Installer Boot Menu  ####

label 1
menu label      CentOS7.6_DVD_Auto_Install
        kernel (path)/vmlinuz //경로에 맞게 설정하세요.
        append initrd=/(path)/initrd.img repo=ftp://10.0.0.1/pub/centos7 ks=ftp://10.0.0.1/(path)/7ks.cfg

 

 

7. tftp 사용을 위한 disable 풀기

vi /etc/xinetd.d/tftp 

14번째줄 disable = yes 를 disalble = no로 수정

 

8. dhcp 설정 

vi /etc/dhcp/dhpcd.conf

  option space PXE; 
  option PXE.mtftp-ip    code 1 = ip-address; 
  option PXE.mtftp-cport code 2 = unsigned integer 16; 
  option PXE.mtftp-sport code 3 = unsigned integer 16; 
  option PXE.mtftp-tmout code 4 = unsigned integer 8; 
  option PXE.mtftp-delay code 5 = unsigned integer 8; 
  option arch code 93 = unsigned integer 16; # RFC4578 

  subnet 10.0.0.0 netmask 255.255.255.0 { 
          option routers 10.0.0.254; 
          range 10.0.0.2 10.0.0.253 //ip 알맞게 바꾸세요

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

#                if option arch = 00:07 {  //UEFI때 필요한 것
#                          filename "(pxe디렉토리)/bootx64.efi";  // 오류나면 주석처리하고 안나면 그냥 주석 지우세요
#                  } else { 
                          filename "(pxe디렉토리)/pxelinux.0"; 
#                  } 
          } 
  }

 

9. 재시작해 설정 적용해주기

systemctl restart dhcpd

systemctl restart xinetd

systemctl restart tftp

systemctl restart xinetd

 

10. 재부팅후에도 자동으로 시작하게 만들기

systemctl enable dhcpd

systemctl enable xinetd

systemctl enable tftp

systemctl enable xinetd