🎆 Cloud Project/🧪 On-Premise Projects

PxE 서버에 대해 알아보자

나리 집사 2023. 9. 18. 11:37

이론

PxE 서버

운영체제 설치가 필요한 서버가 여러대 있을때 설치CD나 USB없이 네트워크로 운영체제를 설치 가능.

 

1. 서버나 PC를 켜면, 부팅 우선순위(priority)에 따라서 디바이스(디스크)를 선택한다. 해당 디스크에 운영체제를 탐색한다.

2. 운영체제가 어떤 곳에도 없다면, 네트워크로 운영체제를 탐색한다.

3. <1~2> 안된다면, 마지막으로 운영체제를 설치해줄 수 있는 서버(PxE server)가 있는지 탐색한다. = PxE client

 

PxE Server의 구성.

1. DHCP server = IP가 없는 baremetal 서버에 아이피를 부여. (통신을 해야하므로)

2. TFTP server = OS 설치에 필요한 절차가 담긴 간단한 파일을 전송.

3. FTP(or HTTP)를 통해 실제 OS 파일을 전송.

 

실습

CentOS-7-x86 64-DVD-2009.iso 파일을 다운로드 받는다.

https://mirror.kakao.com/centos/7.9.2009/isos/x86_64/

 

VMWare Workstation에서 환경 설정을 한다.

Memory: 4096

Software Selection: Server with GUI

IPv4 Settings: Address = 211.183.3.21 / Netmask = 24 / Gateway = 211.183.3.2 / DNS servers = 8.8.8.8

user 설정 꼭 해주기

 

설치 이후 Settings에서 설정을 해주기

Power - Blank screen = never

Privacy - Automatic Screen Lock = off, Show Notifications = off

 

터미널에서 설정

1. DHCP 설정 실습

# Network Manager 끄기 (NetworkManager와 ifcfg-ensXX 설정파일(network 데몬)과 잦은 충돌.)
$ systemctl disable --now NetworkManager

# 방화벽 끄기
$ systemctl disable --now firewalld

# 문자열 치환
$ sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
# sed = 문자열 치환
# s/바뀌기전/바뀐후/g
# /etc/selinux/config 치환할 파일명
# 바꾸고 싶은 내용이 하나로 특정되는지 확인

# 패키지 설치
$ yum -y install dhcp tftp-server vsftpd

# dhcp 설정 수정
$ vi /etc/dhcp/dhcpd.conf
# 아래의 내용 추가
subnet 211.183.3.0 netmask 255.255.255.0
{
	option routers 211.183.3.2;
	#GW
	option subnet-mask 255.255.255.0;
	#SM
	range dynamic-bootp 211.183.3.240 211.183.3.250;
	#ip를 받아올 수 없는 상황(bare-metal)에서도 ip를 부여받을 수 있도록.

	option domain-name-servers 8.8.8.8;
	#DNS

	allow booting;
	#부팅 허용.
	next-server 211.183.3.21;
	#PxE 서버의 주소
	filename "pxelinux.0";
	# next-server에 가서 받아올 파일.
}

$ systemctl restart dhcpd
# dhcpd 재시작 후 클라이언트에서 IP 받아오는지 확인
# 간단한 client를 설치하고 CD를 넣지 않고 서버를 동작시키면 dhcp로 ip를 가져옴

Clinet에서 DHCP로 IP를 받아오는 것을 확인할 수 있다.

 

 

2. file 구조 확인 실습

Guest를 실행하고 있는 상태에서 설정에서 CD/DVD - Devices status - Connected 클릭 (체크 = dvd를 삽입)

/media는 미디어 장치를 마운트하는 폴더이다.

$ mount /dev/cdrom /media

cd rom에 있는 파일을 mount 해줘야 한다. (문을 달아줘야 한다.

centos7-dvd-2009.iso 파일의 내용물을 말한다. 안에는 부트로더를 포함해서 운영체제 설치파일이 들어있다.

부트로더(boot-loader) = 부팅을 하기 위한 로딩, 사전 절차

 

3. TFTP 설정 실습

TFTP로 전송해줄 파일 3개.

1. vmlinuz = 압축된 커널

2. initrd.img = 임시 저장공간으로 사용할 램디스크. (OS 설치 이전에는 디스크가 존재하지 않기 때문이다.)

3. pxelinux.0 = pxe에 부팅에 필요한 파일.

 

$ cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot/
$ cp /media/images/pxeboot/initrd.img /var/lib/tftpboot/
# /var/lib/ftfpboot = 사용자가 tftp로 접속했을 때 가는 기본 경로이다.
# vmlinuz(압축된 커널), initrd.img(임시 저장공간으로 사용할 램디스크)를 복사한다.

$ yum -y install syslinux
# pxelinux.0이 들어있는 패키지를 다운로드 받는다.

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

$ systemctl status tftp
# inactive(dead) 상태
$ systemctl enable --now tftp

# Restart Guest

$ vi /etc/xinetd.d/tftp
# disable을 "no"로 수정한다.

$ systemctl restart tftp

$ cp -r /media/* /var/ftp/pub
# 운영체제 파일(centos7-dvd-2009.iso)을 FTP로 전송할 준비한다.

$ mkdir /var/lib/tftpboot/pxelinux.cfg
$ cd /var/lib/tftpboot/pxelinux.cfg
# 디렉토리를 생성하고 이동한다.

$ vi default
# pxe 설치를 위한 절차를 정의한다. 아래와 같이 수정한다.
DEFAULT         CentOS7_Auto_Install
LABEL           CentOS7_Auto_Install
# 이 pxe의 이름은 CentOS7_Auto_Install 이다.
kernel         vmlinuz
#커널 정보는 여기 담겨있다.
APPEND   initrd=initrd.img repo=ftp://211.183.3.21/pub
#임시공간은 initrd.img 파일이고, 설치할 운영체제는 repo 경로에 있다.

$ systemctl enable --now vsftpd
# ftp도 동작시킨다.

 

무엇인가가 되고 있다.

 

Clinet에서 이 화면이 뜨면 잘 된 것이다.