티스토리 뷰
CentOS 강좌 PART 2. 10 PXE기반의 CentOS 서버 자동 구축 1편
[ 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를 지원해야 한다. 거의 대부분 서버가 지원한다.
[PXE 동작 프로세스 소개]
PXE 기반의 설치 동작 방식은 크게 11단계 내외로 구성이 된다.
1. 먼저 클라이언트가 부팅하면서 DHCP Discover 패킷을 브로드캐스트로 전송한다. 이 역할은 NIC이 수행하고 이때 DHCP payload에 PXE Client Flag를 넣어서 보낸다.
2. 수신한 서버는 DHCP Offer로 응답하며, 클라이언트가 가져갈 IP 정보들에 대해 제공해 준다. 이때 일반 DHCP에 추가되어 이미 DHCP에 사전에 설정된 Next-Server IP (TFTP서버) 정보도 함께 제공된다. TFTP 서버는 DHCP가 함께 수행해도 되고 그렇지 않을 경우 Proxy 형태로도 제공할 수 있다.
3.클라이언트는 서버로 부터 받은 정보를 가지고 다시 DHCP Request를 한다.
4. DHCP 서버는 DHCP ACK를 통해서 최종적으로 IP 정보와 TFTP 정보를 함께 전송한다.
5. 클라이언트는 DHCP 수신 정보 가운데, TFTP 서버 정보를 보고 NBP(Network Boot Program)으로 PXE 요청을 TFTP 서버에게 보낸다.
6. 서버는 요청을 받고, "pxelinux.0” 를 클라이언트에게 응답하고, 클라이언트는 해당 정보를 수신하면서 랜카드에서 메모리로 로딩을 시작한다.
7. 클라이언트는 이제 실제 구성정보를 서버에게 요청한다.
8. 서버는 PXE boot 이미지와 기타 구성정보가 포함된 “pxelinux.cfg” 내용을 클라이언트에게 전송하고 , 클라이언트는 해당 내용을 수신한다.
9. 클라이언트는 “pxelinux.cfg” 구성에 포함되어 있는 커널과 PXE 이미지 파일을 요청한다.
10. 서버는 클라이언트의 요청내용을 받고 , 서버 내부에 TFTP 지정 디렉토리에서 PXE 커널,부트 이미지를 클라이언트에게 로딩한다.
11. 클라이언트는 PXE 커널 및 부트 이미지를 로딩하고 , 추가적으로 정보에 포함된 리눅스 파일을 로딩하여 부팅을 시작한다.
이때 kickstart 정보를 통해서 설치시 필요한 정보 (언어, 시간, 패키지 선택, 패스워드 등등)에 대해 이 파일을 참조하고 설치를 완료한다.
1.PXE 구성을 위한 패키지 설치
먼저 서버에서 필요한 패키지들을 설치한다.
1 2 3 4 | [root@centrepo ~]# yum -y install tftp ttfp-server xinetd [root@centrepo ~]# yum -y install vsftpd [root@centrepo ~]# yum -y install dhcpd [root@centrepo ~]# yum -y install syslinux | cs |
2. 서버에서 필요한 보안 정책을 구성
서버에서 필요한 보안 정책을 구성해 준다.
1 2 3 4 5 6 7 8 9 10 | [root@centrepo ~]# firewall-cmd --permanent --add-service=ftp [root@centrepo ~]# firewall-cmd --permanent --add-service=tftp [root@centrepo ~]# firewall-cmd --permanent --add-service=dhcp [root@centrepo ~]# firewall-cmd --permanent --add-service=proxy-dhcp [root@centrepo ~]# firewall-cmd --add-port=69/tcp --permanent [root@centrepo ~]# firewall-cmd --add-port=69/udp --permanent [root@centrepo ~]# firewall-cmd --add-port=4011/udp --permanent [root@centrepo ~]# firewall-cmd --reload # 필요한 서비스들을 허용해 주고 , 방화벽을 reload 한다. | cs |
3. 서비스 구동 및 환경설정
서버에서 필요한 서비스들을 구동하고 환경설정을 해 준다.
1 2 3 4 5 6 | [root@centrepo ~]# systemctl start dhcpd && systemctl enable dhcpd [root@centrepo ~]# systemctl start tftp && systemctl enable tftp [root@centrepo ~]# systemctl start xinetd && systemctl enable xinetd [root@centrepo ~]# systemctl enable vsftpd && systemctl start vsftpd # 설치된 서비스들을 구동하고, 재부팅시 사용할 수 있도록 설정한다. | cs |
3. DHCP 설정
DHCP 구성은 일반적인 구성과 동일하지만 TFTP 구성을 위해 몇가지 추가해야 될 내용들이 있으므로 추가해서 넣어 준다. (Bootp, pxe, tftp server선언, 파일명 등…)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | [root@centrepo whchoi]# vi /etc/dhcp/dhcpd.conf # config for the PXE service ddns-update-style interim; ignore client-updates; allow booting; allow bootp; allow unknown-clients; # Top file for the Cisco DC LAB option domain-name "cisko-dc.com"; option domain-name-servers ns1.cisko-dc.com, ns2.cisko-dc.com; default-lease-time 360; max-lease-time 720; authoritative; subnet 10.72.78.128 netmask 255.255.255.128 { option routers 10.72.78.129; option subnet-mask 255.255.255.128; option domain-search "cisko-dc.com"; option domain-name-servers 10.72.86.7; range 10.72.78.131 10.72.78.140; next-server 10.72.78.253; filename "pxelinux.0"; } # PXE service를 위해서 DHCP 서비스에 추가할 항목들이 있다. 해당 부분을 기입한다. # 또한 next-server(TFTP server)와 파일 이미지를 작성한다. | cs |
4. ftp 환경설정.
DHCP 서비스를 제공하기 위해서는 setseboo을 설정한다. ftp 서비스에서는 특별하게 설정할 것은 없으나, 상세한 설정을 원할 경우 "FTP 서버 구축 강좌"를 참조한다.
1 2 3 4 | [root@centrepo whchoi]#setsebool -P allow_ftpd_full_access 1 # vsftpd에 대한 접속을 허가하기 위한 설정을 한다. # 기타 추가설정은 여기에서는 필요없다. | cs |
5. tftp 환경 설정.
리눅스 클라이언트가 DHCP를 사용하기 위해서는 network-script파일을 변경해야 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | [root@centrepo whchoi]# vi /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 } # tftp 서비스 환경설정이 기본 disable=yes 로 되어 있다. 해당 정보를 disable = no로 바꾸어 서비스를 활성화한다. | cs |
6. Syslinux 파일 copy.
앞서 syslinux 부트로더 패키지를 설치했다. 해당 패키지들 중에 실제 TFTP 서비스를 제공할 때 필요한 파일을 tftp 폴더로 복제한다.
1 2 3 4 5 6 7 | [root@centrepo whchoi]# cp -v /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot [root@centrepo whchoi]# cp -v /usr/share/syslinux/menu.c32 /var/lib/tftpboot [root@centrepo whchoi]# cp -v /usr/share/syslinux/memdisk /var/lib/tftpboot [root@centrepo whchoi]# cp -v /usr/share/syslinux/mboot.c32 /var/lib/tftpboot [root@centrepo whchoi]# cp -v /usr/share/syslinux/chain.c32 /var/lib/tftpboot # syslinux 설치 디렉토리에서 부트로드에 관련된 파일들을 tftpboot 디렉토리로 복제한다. | cs |
7. PXE Menufile
PXE menufile을 구성한다. PXE menufile은 기본 생성되지 않으므로, 수동으로 생성해야 하며, tftp 디렉토리에 존재해야한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@centrepo whchoi]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@centrepo whchoi]# vi /var/lib/tftpboot/pxelinux.cfg/default # 생성된 메뉴파일 구성에 하위에 default라는 파일이 생성되며, 여기에 구성파일을 넣어 준다. # pxelinux.cfg에 직접 넣어도 관계 없다. default menu.c32 prompt 0 timeout 30 MENU TITLE cisko-dc.com PXE Menu LABEL centos7_x64 MENU LABEL CentOS 7_X64 KERNEL /networkboot/centos/vmlinuz APPEND initrd=/networkboot/centos/initrd.img inst.repo=ftp://10.72.78.253/pub/centos ks=ftp://10.72.78.253/pub/centos/centos7.cfg # KERNEL은 PXE Kernal이 위치하는 디렉토리이다. 별도로 패스를 지정하지 않으면, /etc/xinetd.d/tftp 의 환경설정에 표기된 Path를 가져가고, 예제에서 처럼 추가로 넣어주면 환경설정에 표기된 Path 뒤에 추가 생성하면 된다. # APPEND는 kernel 로딩 이후 실제 PXE boot 이미지로 path 설정은 동일하다. # inst.repo는 PXE boot이후 클라이언트가 실제로 사용할 리눅스 이미지 장소를 선언해준다. # ks는 kickstart가 위치한 장소를 선언해준다. | cs |
8. TFTP/FTP에 PXE Kernel, 이미지 및 리눅스 이미지 로딩
이제 실제 필요한 이미지들을 로딩하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | [root@centrepo whchoi]# mkdir /media/iso [root@centrepo whchoi]# mount /mnt/freenas/01.DC/OS_Hypervisor/LINUX/CentOS/CentOS-7-x86_64-Minimal-1810.iso /media/iso # 클라이언트에 설치할 리눅스 ISO를 마운트 시킨다. [root@centrepo whchoi]# mkdir /var/ftp/pub/centos [root@centrepo whchoi]# cp -r /media/iso/* /var/ftp/pub/centos/ # 설치 이미지를 ftp public 디렉토리에 전체복사를 한다. [root@centrepo whchoi]# ls -al /var/ftp/pub/centos/ 합계 76 drwxr-xr-x. 8 root root 239 4월 5 00:32 . drwxr-xr-x. 10 root root 120 4월 5 00:15 .. -rw-r--r--. 1 root root 14 4월 5 00:15 CentOS_BuildTag drwxr-xr-x. 3 root root 35 4월 5 00:15 EFI -rw-r--r--. 1 root root 227 4월 5 00:15 EULA -rw-r--r--. 1 root root 18009 4월 5 00:15 GPL drwxr-xr-x. 2 root root 43 4월 5 00:15 LiveOS drwxr-xr-x. 2 root root 24576 4월 5 00:15 Packages -rw-r--r--. 1 root root 1690 4월 5 00:15 RPM-GPG-KEY-CentOS-7 -rw-r--r--. 1 root root 1690 4월 5 00:15 RPM-GPG-KEY-CentOS-Testing-7 -r--r--r--. 1 root root 2883 4월 5 00:15 TRANS.TBL -rw-r--r--. 1 root root 1349 4월 5 00:32 centos7.cfg drwxr-xr-x. 3 root root 57 4월 5 00:15 images drwxr-xr-x. 2 root root 198 4월 5 00:15 isolinux drwxr-xr-x. 2 root root 4096 4월 5 00:15 repodata # 정상적으로 모든 리눅스 이미지가 복제된 것을 확인한다. [root@centrepo whchoi]# mkdir /var/lib/tftpboot/networkboot/centos/ [root@centrepo whchoi]# cp /var/ftp/pub/centos/images/pxeboot/{initrd.img,vmlinuz} /var/lib/tftpboot/networkboot/centos/ # 해당 설치 이미지 파일들 중에 pxeboot에 필요한 pxe 이미지와 커널을 tftpboot 디렉토리로 복제해 준다. # 앞서 /var/lib/tftpboot/pxelinux.cfg/default 에서 설정한 경로와 동일하면 된다. | cs |
9. FTP 서비스 확인하기.
외부에서 FTP가 정상적으로 열리는 지 확인하면, PXE booting 까지는 모두 완료되었다.
이제 KickStart 구성을 통해서 설치를 완료해 보자 - " CentOS 강좌 PART 2. 10 PXE기반의 CentOS 서버 자동 구축 2편 "
'운영체제 > CentOS 강좌' 카테고리의 다른 글
CentOS 강좌 PART 2. 10 PXE기반의 CentOS 서버 자동 구축 2편 (2) | 2019.04.05 |
---|---|
CentOS 강좌 PART 2. 9 DHCP 서버 구축 (0) | 2019.04.04 |
CentOS 강좌 PART 2. 8 SAMBA 서버 구축과 운영 (1) | 2019.04.03 |
CentOS 강좌 PART 2. 7 NFS 서버 구축과 운영 (0) | 2019.04.02 |
CentOS 강좌 PART 2. 6 FTP 서버 구축과 운영 (1) | 2019.04.02 |
공지사항