CentOS 네트워크 설치 PXE Boot 완벽 가이드
CentOS를 여러 대의 서버나 PC에 동시에 설치해야 하는 상황, 혹은 운영체제 설치 CD/DVD나 USB 드라이브 없이 설치해야 하는 상황이 있으신가요? PXE (Preboot Execution Environment) Boot를 이용하면 네트워크를 통해 CentOS를 간편하게 설치할 수 있습니다. 이 가이드는 PXE Boot의 개념부터 구축 방법, 문제 해결 팁까지 상세하게 안내합니다.
PXE Boot란 무엇일까요?
PXE Boot는 네트워크 인터페이스를 사용하여 클라이언트 컴퓨터가 네트워크 상의 서버로부터 운영체제 이미지를 다운로드하여 부팅하는 기술입니다. 쉽게 말해, CD나 USB 없이 네트워크를 통해 컴퓨터를 켜고 운영체제를 설치하는 방법입니다.
PXE Boot의 장점
- 시간 절약 여러 대의 컴퓨터에 동시에 운영체제를 설치할 수 있습니다.
- 편의성 CD/DVD나 USB 드라이브가 필요 없습니다.
- 유연성 다양한 운영체제 이미지를 네트워크를 통해 제공할 수 있습니다.
- 자동화 Kickstart 파일을 활용하여 설치 과정을 자동화할 수 있습니다.
어떤 경우에 PXE Boot를 사용하면 좋을까요?
- 데이터 센터나 서버 팜에서 다수의 서버를 관리하는 경우
- 운영체제를 자주 재설치해야 하는 개발 환경
- CD/DVD 드라이브가 없는 서버
- 가상 머신 환경에서 운영체제를 빠르게 설치해야 하는 경우
PXE Boot 구축을 위한 준비물
- CentOS 서버 PXE 서버로 사용할 CentOS 서버 (최신 버전 권장)
- 네트워크 환경 PXE 서버와 클라이언트 컴퓨터가 동일한 네트워크에 연결되어 있어야 합니다.
- DHCP 서버 클라이언트 컴퓨터에게 IP 주소를 할당해주는 DHCP 서버
- TFTP 서버 운영체제 이미지 파일을 클라이언트 컴퓨터에게 전송해주는 TFTP 서버
- HTTP 또는 NFS 서버 CentOS 설치 파일을 제공해주는 서버 (선택 사항, HTTP 권장)
- CentOS ISO 이미지 설치할 CentOS ISO 이미지 파일
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 문제 해결 팁
- 클라이언트 컴퓨터가 IP 주소를 받지 못하는 경우 DHCP 서버 설정을 확인하고, 네트워크 연결 상태를 점검합니다.
- TFTP 서버에 연결할 수 없는 경우 TFTP 서버 설정 파일(/etc/xinetd.d/tftp)을 확인하고, 방화벽 설정을 점검합니다.
- CentOS 설치 파일에 접근할 수 없는 경우 HTTP 서버 설정 및 방화벽 설정을 확인합니다.
- 화면이 멈추는 경우 메모리 부족일 수 있습니다. 클라이언트 컴퓨터의 메모리 용량을 확인하거나, PXE 설정 파일에서 불필요한 옵션을 제거합니다.
- Kickstart 파일을 사용하는 경우 Kickstart 파일에 오류가 없는지 확인합니다.
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 서버는 네트워크를 통해 운영체제 이미지를 제공하므로 보안에 특히 신경 써야 합니다.
- TFTP 서버 보안 TFTP 서버는 익명 접근을 허용하므로, 불필요한 파일이 노출되지 않도록 주의해야 합니다.
- HTTP 서버 보안 HTTP 서버에 접근 통제를 설정하여 허가된 사용자만 접근할 수 있도록 합니다.
- Kickstart 파일 보안 Kickstart 파일에 root 비밀번호가 포함되어 있으므로, 안전하게 관리해야 합니다.
- 네트워크 보안 PXE 서버와 클라이언트 컴퓨터가 연결된 네트워크를 안전하게 보호합니다.
마치며
이 가이드를 통해 CentOS 네트워크 설치 (PXE Boot)를 성공적으로 구축하고 활용할 수 있기를 바랍니다. 궁금한 점이 있다면 언제든지 질문해주세요. 성공적인 시스템 구축을 응원합니다!