본문으로 바로가기

리눅스로 만능 PXE 서버 만들기 - 1

category IT/Linux 2017. 8. 13. 14:24

CentOS7을 사용해서 만능 PXE 서버를 만들어 보겠습니다.

하나의 PXE 서버를 사용해 Windows, Linux(CentOS, Ubuntu, Debian) 설치와 DOS 부팅으로 펌웨어 설치까지 가능합니다.

PXE를 사용하려면 아이피를 할당 해 줄 DHCP 서버와 syslinux 부팅 파일을 전송할 TFTP서버, ISO 파일을 전송할 FTP or http 서버가 필요합니다.

 

1. DHCP 설정

yum -y install dhcp

vi /etc/dhcp/dhcpd.conf 설정

ddns-update-style interim;
subnet 192.168.0.0 netmask 255.255.255.0 {
        option routers 192.168.0.1;
        option subnet-mask 255.255.255.0;
        range dynamic-bootp 192.168.0.10 192.168.0.100;
        option domain-name-servers 164.124.101.2;
        default-lease-time 10000;
        max-lease-time 50000;

        #pxe setting
        allow booting;
        allow bootp;
        next-server 192.168.0.1;
        filename "pxelinux.0";
}

 

2. TFTP 설정

yum -y install syslinux tftp-server

yum -y install xinetd : CentOS7은 tftp경로 변경 하려면 xinetd를 설치 해야합니다.

vi /etc/xinetd.d/tftp 파일의 옵션 변경 disable = no, server_args= -s /tftpboot (원하는 디렉터리 입력)

pxetftp설정

 

3. ISO 마운트, syslinux 부팅파일 복사

mkdir -p /var/www/html/pxe/CentOS7

mkdir -p /tftpboot/CentOS7

mount /dev/cdrom /var/www/html/pxe/CentOS7

ISO파일의 경우 : mount -o loop CentOS7.iso /var/www/html/pxe/CentOS7

cp /var/www/html/pxe/CentOS7/images/pxeboot/vmlinuz /tftpboot/CentOS7/

cp /var/www/html/pxe/CentOS7/images/pxeboot/initrd.img /tftpboot/CentOS7/

cp /usr/share/syslinux/pxelinux.0 /tftpboot/

cp /usr/share/syslinux/menu.c32 /tftpboot/

 

4. 부팅 관련 디렉터리와 설정 파일 생성

mkdir /tftpboot/pxelinux.cfg

vi /tftpboot/pxelinux.cfg/default

DEFAULT menu.c32

timeout 100

 

menu title ### OS Installer Boot Menu ###

 

LABEL CentOS7

        menu label CentOS7
        kernel CentOS7/vmlinuz
        append initrd=CentOS7/initrd.img repo=http://192.168.0.1/pxe/CentOS7

 

 

5. httpd 설정

yum -y install httpd

vi /etc/httpd/conf/httpd.conf

<Directory "/var/www/html/pxe">
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 192.168.0
</Directory>

 

6. 서비스 재시작 및 상시 가동

systemctl restart dhcpd

systemctl restart httpd

systemctl restart xinetd : TFTP는 xinetd에 종속되어 있습니다.

systemctl enable dhcpd

systemctl enable httpd

systemctl enable xinetd

 

7. 확인

PXE 부팅 시 아래 화면과 같이 나오면서 설치가 되면 성공입니다.

PXEPXE menu

만약 오류가 발생 하시면 오류 내용을 잘 읽어보시면 쉽게 처리 할 수 있습니다. 댓글 남시기면 오류 해결 도와드리겠습니다.

TFTP Timeout 오류의 경우 방화벽(iptables, firewalld) 문제나 selinux 문제인 경우입니다.

이 외에는 대부분 파일 이름이나 경로등의 실수로 파일을 못찾는 경우이므로 확인 하시고 수정해 주시면 됩니다.

 

2편에서는 윈도우도 설치 가능하게 만드는 법을 올리고, 3편에서는 자동설치가 가능하게 해주는 KickStart 설정 방법 및 데비안, 우분투설치와

DOS 이미지에 드라이버를 넣어서 PXE 부팅 가능하게 하는 법을 포스팅 할 예정입니다.