yum -y install syslinux dhcp tftp-server vsftpd xinetd
syslinux 는 네트워크 상에서 부팅을 할 수 있게 해주는 부트로더.
PXE를 사용하는 클라이언트들은 이 파일을 가져가야 한다.
tftp 클라이언트들이 처음에 부트로더를 전송받을때만 사용할 예정
dhcp설정
Vmware 프로그램 자체에서 제공하는 DHCP기능을 끄자.
Edit->버추얼 네트워크 에디터에서 VMnet8의 해당 체크박스를 해제시키자.
gedit /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";
}
하단에 추가한다.
allow booting 부팅허용
allow bootp 부팅 프로토콜을 허용한다.
next-server 192.168.111.100 부팅파일이 있는 서버주소이다.
filename "pxelinux.0" 부팅파일의 이름이 pxelinux.0이다.
tftp설정
vi /etc/xinetd.d/tftp
disable을 no로하여 활성화 해준다.
앞으로 ftp를 통해서 CentOS7 dvd파일을 전송해야하므로 VMware의 Server pc 설정버튼을 눌러서 dvd이미지를 삽입시키자.
mount /dev/cdrom /var/ftp/pub
마운트되어 있다면 언마운트 시킨후에 ftp아래의 pub으로 마운트 시키자.
cp /var/ftp/pub/images/pxeboot/vmlinuz /var/lib/tftpboot/
cp /var/ftp/pub/images/pxeboot/initrd.img /var/lib/tftpboot/
참고로 부팅파일은 CentOS 7 이미지안에 /images/pxeboot/vmlinuz 경로의 파일로 존재한다.
그 부팅파일을 /var/lib/tftpboot로 복사하였다.
initrd.img 파일도 복사하자.
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
이번에는 다른 경로에 있는 pxelinux.0파일을 복사하자
pxelinux.0은 부팅파일이다.
tftpboot 폴더에 3가지 파일들을 모았다.
mkdir /var/lib/tftpboot/pxelinux.cfg
cd /var/lib/tftpboot/pxelinux.cfg
vi default
DEFAULT CentOS7_Auto_Install
LABEL CentOS7_Auto_Install
kernel vmlinuz
APPEND initrd=initrd.img repo=ftp://192.168.111.100/pub
설정파일을 만들어 주었다.
ps -ef | grep dnsmasq
kill -9 1766
systemctl disable dnsmasq
dhcp서버와 충돌을 일으키는 dnsmasq 프로세스를 끄자.
설정이 완료 되었다.
systemctl restart dhcpd
systemctl restart vsftpd
systemctl restart xinetd
systemctl enable dhcpd
systemctl enable vsftpd
systemctl enable xinetd
가동해보자.
TestCom이라는 새로운 가상 pc를 만들었다.
CD-ROM도 USB장치도 없다.
네트워크 어댑터만 있다.
놀랍다 전원만 켰을 뿐인데 TestCom pc에 리눅스를 알아서 설치하고 있다!
그러나 잠시만 좋았지 키보드, 언어설정 등에서 수동으로 진행해야한다.
이대로는 의미가 없다.
이를 해결하기 위해서는 Kickstart기능을 추가할 필요가 있다.
yum -y install system-config-kickstart system-config keyboard
두가지 패키지를 설치하자
system-config-kickstart
kickstart를 통해서 미리 설정해놓자
네트워크등 나머지 설정에는 버그가 발생하기 쉽다.
필수적인 설정만 하고 중간에 저장하자.
나머지는 설치하고 싶은 패키지들은 직접 편집기로 작성해주는 것이 좋다.
gedit /var/ftp/centos.ks
%packages
@base
@core
@directory-client
@fonts
@gnome-desktop
@internet-browser
@java-platform
@multimedia
@network-file-system-client
@x11
%end
위 내용을 하단에 추가해준다.
gedit /var/lib/tftpboot/pxelinux.cfg/default
ks=ftp://192.168.111.100/centos.ks
PXE에 centos.ks파일을 인식시키기 위한 작업이다.
기존의 내용에 한칸띄우고 작성한다.
모든 설정이 완료되었다.
부팅시킨 클라이언트 100대가 있어도 손대지 않고 알아서 설치가 마무리된다.
Trouble Shooting
PXE절차중 FTP에 접근하는 중에 selinux에 관련한 문제가 발생했다.
Server pc에서 CentOS의 우측하단의 버튼을 클릭하면 이슈를 볼 수 있다.
SELINUX=disabled 로 비활성화 해주면 잘된다.
내가 자주하는 실수인데, SELINUX를 절대로 추가하지말고 기존항목이 이미 있으니 변경해야 한다.
댓글