PXE 설치 서버
여러 컴퓨터에 OS나 기본적인 설정을 하려고 할 때 매 컴퓨터에 세팅하는게 아니라 PXE설치 서버를 준비하고, 설치 파일을 빈 컴퓨터에 네트워크로 전송해 설치하는 개념이다.
PXE 서버 구현
-
dnf -y install syslinux dhcp-server tftp-server vsftpd 로 필요 패키지를 설치한다.
-
방화벽에 필요 포트를 열거나 방화벽을 잠시 꺼놓는다. systemctl stop/disable firewalld
-
/etc/dhcp/dhcpd.conf 파일에 아래 내용을 추가한다.
-
subnet 192.168.111.0 netmask 255.255.255.0 {
-
option routers 192.168.111.2;
-
option subnet-mask 255.255.255.0;
-
range dynamic-bootp 192.168.111.120 192.168.111.199;
-
option domain-name-servers 192.168.111.2;
-
allow booting;
-
allow bootp;
-
next-server 192.168.111.100;
-
filename "pxelinux.0";
-
}
-
/etc/vsftpd/vsftpd.conf 파일에서 Anonymous 제약을 YES로 변경한다.
-
서버 DVD에 Linux ISO파일을 넣고 umount /dev/cdrom 으로 마운트를 해제한다. (하드orSSD에 ISO파일을 복사해놓고 사용한다면 이 과정은 필요없다. DVD에서 읽어올 필요가 없기 때문에 속도도 더 빠르다.)
-
mount /dev/cdrom /var/ftp/pub/ 명령어로 /var/ftp/pub/ 디렉터리에 ISO파일을 마운트해준다.
-
아래 명령어로 tftpboot 디렉터리에 필요한 파일들을 넣는다.
-
cp /var/ftp/pub/image/pxeboot/vmlinuz /var/lib/tftpboot/
-
cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/
-
cp /var/ftp/pub/isolinux.c32 /var/lib/tftpboot/
-
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
-
mkdir /var/lib/tftpboot/pxelinux.cfg 명령어로 부팅 디렉터리를 만들고 default 파일을 생성한 후 아래 내용을 넣는다.
-
DEFALUT CentOS8_Auto_Install
-
LABEL CentOS8_Auto_Install
-
kernel vmlinuz
-
APPEND initrd=initrd.img repo=ftp://192.168.111.100/pub
-
systemctl restart/enable dhcpd/vsftpd/tftp 명령어로 각 시스템을 재시작/상시가동 한다.
-
클라이언트 컴퓨터들은 DHCP서버에서 IP를 받고, TFTP서버에서 부팅 정보를 받고, FTP서버(or웹 서버)에서 실제 이미지 파일을 받아서 OS를 설치하게 된다.
위 과정으로 PXE 설치 서버 과정은 끝났는데, 위에서 한 설정만으로는 각 PC에서 OS의 설정을 또 해줘야 한다. OS의 설정까지 모두 완료된 내용을 설치하도록 하는 것이 킥스타트 라고 한다.
PXE 설치 서버에 OS 설정 내용까지 포함시켜보자
킥스타트 설정
-
cp /root/anaconda-ks.cfg /var/ftp/centos.ks 명령어로 서버의 os설정 내용을 ftp디렉터리에 복사해 넣는다.
-
복사해온 centos.ks 파일의 내용에서 아래 부분을 수정한다.
-
7행 url --url=ftp://192.168.111.100/pub 으로 변경한다.(ftp 서버)
-
%packages %end 사이에 필요한 패키지 내용을 추가해서 넣는다. (@^Server with GUI, @HNOME Applications 등)
-
/var/lib/tftpboot/pxelinux.cfg/default 파일에서 아래 내용을 추가한다.
-
APPEND 젤 뒤에 ks=ftp://192.168.111.100/centos.ks (IP는 ftp 서버 IP)
-
킥스타트를 사용할 땐 서버의 설정을 가져오기 때문에 클라이언트의 스토리지가 서버보다 작으면 안된다.