CentOS 네트워크 설치(PXE Boot) 구축하기

CentOS 네트워크 설치 PXE Boot 완벽 가이드

CentOS를 여러 대의 서버나 PC에 동시에 설치해야 하는 상황, 혹은 운영체제 설치 CD/DVD나 USB 드라이브 없이 설치해야 하는 상황이 있으신가요? PXE (Preboot Execution Environment) Boot를 이용하면 네트워크를 통해 CentOS를 간편하게 설치할 수 있습니다. 이 가이드는 PXE Boot의 개념부터 구축 방법, 문제 해결 팁까지 상세하게 안내합니다.

PXE Boot란 무엇일까요?

PXE Boot는 네트워크 인터페이스를 사용하여 클라이언트 컴퓨터가 네트워크 상의 서버로부터 운영체제 이미지를 다운로드하여 부팅하는 기술입니다. 쉽게 말해, CD나 USB 없이 네트워크를 통해 컴퓨터를 켜고 운영체제를 설치하는 방법입니다.

PXE Boot의 장점

어떤 경우에 PXE Boot를 사용하면 좋을까요?

PXE Boot 구축을 위한 준비물

PXE Boot 서버 구축 단계별 가이드

1단계 DHCP 서버 설정

클라이언트 컴퓨터가 네트워크 부팅을 하기 위해서는 IP 주소를 할당받아야 합니다. DHCP 서버를 설정하여 클라이언트 컴퓨터에게 IP 주소를 할당해줍니다. 이미 DHCP 서버가 있다면 해당 설정을 수정하면 됩니다.

DHCP 서버 설정 파일 (예시: /etc/dhcp/dhcpd.conf)




subnet 192.168.1.0 netmask 255.255.255.0 {

  range 192.168.1.100 192.168.1.200;

  option routers 192.168.1.1;

  option domain-name-servers 8.8.8.8, 8.8.4.4;

  next-server 192.168.1.10; # PXE 서버 IP 주소

  filename "pxelinux.0";     # 부트 로더 파일 이름

}



주의 자신의 네트워크 환경에 맞게 IP 주소 범위, 라우터 IP 주소, DNS 서버 IP 주소, PXE 서버 IP 주소 등을 수정해야 합니다.

DHCP 서버 재시작




systemctl restart dhcpd



2단계 TFTP 서버 설치 및 설정

TFTP (Trivial File Transfer Protocol) 서버는 클라이언트 컴퓨터에게 PXE 부트 로더 파일 (pxelinux.0)을 전송해주는 역할을 합니다. CentOS에 TFTP 서버를 설치하고 설정합니다.

TFTP 서버 설치




yum install tftp-server syslinux



TFTP 서버 설정 파일 (/etc/xinetd.d/tftp)




service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /var/lib/tftpboot

        disable                 = no

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

}



주의 disable = no 로 설정하여 TFTP 서버를 활성화합니다.

TFTP 서버 디렉토리 생성




mkdir /var/lib/tftpboot



TFTP 서버 재시작




systemctl restart xinetd



PXE 부트 로더 파일 복사




cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/



3단계 CentOS 설치 파일 준비

CentOS ISO 이미지 파일을 다운로드하고, HTTP 또는 NFS 서버를 통해 클라이언트 컴퓨터에게 제공합니다. 여기서는 HTTP 서버를 사용하는 방법을 설명합니다.

CentOS ISO 이미지 마운트




mkdir /mnt/centos

mount -o loop CentOS-7-x86_64-Minimal-1810.iso /mnt/centos # CentOS ISO 파일 이름에 맞춰 수정



HTTP 서버 디렉토리 생성 및 파일 복사




mkdir /var/www/html/centos

cp -r /mnt/centos/* /var/www/html/centos/



HTTP 서버 설정 (Apache 사용 시)

Apache 웹 서버가 설치되어 있어야 합니다. 만약 설치되어 있지 않다면 `yum install httpd` 명령으로 설치합니다.

HTTP 서버 재시작




systemctl restart httpd



4단계 PXE 설정 파일 생성

PXE 설정 파일은 클라이언트 컴퓨터가 부팅할 때 실행될 메뉴와 설치 옵션을 정의합니다.

PXE 설정 디렉토리 생성




mkdir /var/lib/tftpboot/pxelinux.cfg



기본 설정 파일 생성 (default)




vi /var/lib/tftpboot/pxelinux.cfg/default



설정 파일 내용 (예시)




DEFAULT menu.c32

PROMPT 0

TIMEOUT 50


MENU TITLE CentOS 7 PXE Boot Menu


LABEL centos7

  MENU LABEL Install CentOS 7

  KERNEL images/pxeboot/vmlinuz

  APPEND initrd=images/pxeboot/initrd.img method=http://192.168.1.10/centos # HTTP 서버 IP 주소



주의 HTTP 서버 IP 주소를 자신의 서버 IP 주소로 변경해야 합니다.

커널 및 initrd 이미지 복사




cp /mnt/centos/images/pxeboot/vmlinuz /var/lib/tftpboot/images/pxeboot/

cp /mnt/centos/images/pxeboot/initrd.img /var/lib/tftpboot/images/pxeboot/



메뉴 표시를 위한 파일 복사 (선택 사항)




cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/



5단계 방화벽 설정

방화벽에서 DHCP, TFTP, HTTP 서비스를 허용해야 합니다.




firewall-cmd --permanent --add-service=dhcp

firewall-cmd --permanent --add-service=tftp

firewall-cmd --permanent --add-service=http

firewall-cmd --reload



6단계 클라이언트 컴퓨터 설정

클라이언트 컴퓨터의 BIOS 설정에서 네트워크 부팅 (PXE Boot)을 활성화합니다. 부팅 순서에서 네트워크를 가장 먼저 설정해야 합니다.

PXE Boot 문제 해결 팁

Kickstart 파일을 이용한 자동 설치

Kickstart 파일은 CentOS 설치 과정을 자동화하는 설정 파일입니다. PXE Boot와 함께 사용하면 더욱 편리하게 다수의 컴퓨터에 CentOS를 설치할 수 있습니다.

Kickstart 파일 생성

Kickstart 파일은 `system-config-kickstart` 명령을 사용하여 GUI 환경에서 생성하거나, 직접 텍스트 편집기로 작성할 수 있습니다.

Kickstart 파일 예시 (ks.cfg)




install

url --url http://192.168.1.10/centos # HTTP 서버 IP 주소


System language

lang en_US.UTF-8

Keyboard layout

keyboard us

Root password

rootpw --iscrypted $6$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

System timezone

timezone America/New_York

Network configuration

network --bootproto=dhcp --device=eth0 --onboot=on

Partitioning

clearpart --all --initlabel part /boot --fstype=xfs --size=500 part swap --size=2048 part / --fstype=xfs --size=1 --grow

Packages

%packages @core %end

Post-installation script

%post echo "Installation complete!" %end

주의 Kickstart 파일 내용을 자신의 환경에 맞게 수정해야 합니다. 특히, root 비밀번호는 암호화된 형태로 입력해야 합니다.

Kickstart 파일 적용

PXE 설정 파일에서 Kickstart 파일 위치를 지정합니다.




vi /var/lib/tftpboot/pxelinux.cfg/default



수정된 설정 파일 내용




DEFAULT menu.c32

PROMPT 0

TIMEOUT 50


MENU TITLE CentOS 7 PXE Boot Menu


LABEL centos7

  MENU LABEL Install CentOS 7 (Auto)

  KERNEL images/pxeboot/vmlinuz

  APPEND initrd=images/pxeboot/initrd.img method=http://192.168.1.10/centos ks=http://192.168.1.10/ks.cfg # HTTP 서버 IP 주소 및 Kickstart 파일 경로



주의 HTTP 서버 IP 주소 및 Kickstart 파일 경로를 정확하게 지정해야 합니다.

다양한 운영체제 설치

하나의 PXE 서버에서 여러 운영체제를 설치하도록 구성할 수도 있습니다. PXE 설정 파일에 각 운영체제에 대한 메뉴 항목을 추가하면 됩니다.

예를 들어, CentOS 7과 CentOS 8을 동시에 설치할 수 있도록 구성하려면 다음과 같이 설정합니다.

PXE 설정 파일 (/var/lib/tftpboot/pxelinux.cfg/default)




DEFAULT menu.c32

PROMPT 0

TIMEOUT 50


MENU TITLE PXE Boot Menu


LABEL centos7

  MENU LABEL Install CentOS 7

  KERNEL centos7/vmlinuz

  APPEND initrd=centos7/initrd.img method=http://192.168.1.10/centos7


LABEL centos8

  MENU LABEL Install CentOS 8

  KERNEL centos8/vmlinuz

  APPEND initrd=centos8/initrd.img method=http://192.168.1.10/centos8



각 운영체제별로 커널 및 initrd 이미지를 별도의 디렉토리에 복사해야 합니다.

보안 고려사항

PXE Boot 서버는 네트워크를 통해 운영체제 이미지를 제공하므로 보안에 특히 신경 써야 합니다.

마치며

이 가이드를 통해 CentOS 네트워크 설치 (PXE Boot)를 성공적으로 구축하고 활용할 수 있기를 바랍니다. 궁금한 점이 있다면 언제든지 질문해주세요. 성공적인 시스템 구축을 응원합니다!

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다