본문 바로가기
OS

KickStart / PXE 기본 설치(NFS)

by Yoon_estar 2024. 2. 13.
728x90

DHCP 서버

# yum -y install dhcp-server
혹은
# dnf install dhcp-server

DHCP 서버 설정 파일

  • Legacy(BIOS) 모드 에서는 pxelinux.0 파일 사용
  • UEFI 모드에서는 grubx64.efi 사용
  • 아이피 대역대에 따라서 ip 수
# vi /etc/dhcp/dhcp.conf
----------------------------------------------------------------------------------------
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp-server/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
dhcp_interface="eth0";

subnet 192.168.203.0 netmask 255.255.255.0 {
     option routers 192.168.203.1;
     option subnet-mask 255.255.255.0;
     range dynamic-bootp 192.168.203.33 192.168.203.38;
     default-lease-time 3600;
     max-lease-time 7200;
     ### pxe setting ###
     allow booting;
     allow bootp;
     next-server 192.168.203.1;
     # filename "pxelinux.0";
     # filename "grubx64.efi";
}

TFTP-Server

# yum -y install[dnf install] tftp-server
# cp /usr/lib/systemd/system/tftp.service /etc/systemd/system/tftp-server.service
# cp /usr/lib/systemd/system/tftp.socket /etc/systemd/system/tftp-server.socket

파일 복사 후 변경된 경로에서 제대로 동작하기 위해 파일을 아래처럼 수정

# vi /etc/systemd/system/tftp-server.service
----------------------------------------------------------------------------------------

[Unit]
Description=Tftp Server
Requires=tftp-server.socket
Documentation=man:in.tftpd

[Service]
ExecStart=/usr/sbin/in.tftpd -s /var/lib/tftpboot
StandardInput=socket

[Install]
WantedBy=multi-user.target
Also=tftp-server.socket
# vi /etc/systemd/system/tftp-server.socket
----------------------------------------------------------------------------------------

[Unit]
Description=Tftp Server Activation Socket

[Socket]
ListenDatagram=69
BindIPv6Only=both

[Install]
WantedBy=sockets.target

데몬 재시작

# systemctl restart tftp-server

syslinux 설치

# dnf install syslinux

부팅에 필요한 파일 복사

cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/libutil.c32 /var/lib/tftpboot/

PXE 구성 파일 설정

  • NFS , FTP 마지막으로 설정한 경로에 따라 레파지토리 경로 설정이 다르니 유의!!
# mkdir /var/lib/tftpboot/pxelinux.cfg
----------------------------------------------------------------------------------------

# vi /var/lib/tftpboot/pxelinux.cfg/default
----------------------------------------------------------------------------------------

LABEL RockyLinux8.6(Kickstart)
        MENU LABEL RockyLinux 8.6 Install(Kickstart)
        KERNEL /rocky8.6/vmlinuz
        APPEND initrd=/rocky8.6/initrd.img inst.repo=nfs:192.168.203.132:/var/lib/tftpboot/rocky8.6 inst.ks=nfs:192.168.203.132:/var/lib/tftpboot/kickstart/ks-rocky86-legacy.cfg biosdevname=0 net.ifnames=0

로컬 레포지 토리 생성

NFS 설치

# dnf -y install nfs-utils

NFS 설정파일 (경로 설정)

vi /etc/exports
--------------------------------------------------------------------------------------
/var/lib/tftpboot/rocky8.6 192.168.204.0/24 *(ro)
/var/lib/tftpboot/kickstart 192.168.204.0/24 *(ro)

exportfs -a  <-NFS 설정 적용
exportfs -v  <-NFS 적용 확인

*NFS설정

Kickstart 경로 생성 및 부팅 파일 복사

mkdir -p /var/lib/tftpboot/{kickstart,pxelinux.cfg,rocky8.6}

#kickstart , pxelinux.cfg , rocky8.6 디렉토리 생성

mount Rocky86.dvd /mnt
#OS 마운트

cp -R * /mnt/. /var/libtftpboot/rocky8.6
#/mnt -> /var/lib/tftpboot/rocky8.6 이미지 복사

cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /usr/share/syslinux/ldlinux.c32 /var/lib/tftpboot/
cp /usr/share/syslinux/libutil.c32 /var/lib/tftpboot/
#부팅에 필요한 파일 복사

데몬 재시작

# systemctl restart dhcpd 
# systemctl restart tftp
# systemctl restart nfs-server.service

# systemctl status dhcpd tftp nfs-server.serivce

PXE 메뉴 설정 파일

BIOS

[root@localhost pxelinux.cfg]# vi /var/lib/tftpboot/pxelinux.cfg/default

default menu.c32
prompt 0
timeout 150
ontimeout local

LABEL local
        MENU LABEL Boot Local Disk
        localboot 0

LABEL RockyLinux8.6(Kickstart)
        MENU LABEL RockyLinux 8.6 Install(Kickstart)
        KERNEL /rocky8.6/vmlinuz
        APPEND initrd=/rocky8.6/initrd.img inst.repo=nfs:192.168.203.22:/var/lib/tftpboot/rocky8.6 inst.ks=nfs:1
92.168.203.22:/var/lib/tftpboot/kickstart/ks-rocky86-legacy.cfg biosdevname=0 net.ifnames=0

LABEL CentOS7.4(Kickstart)
        MENU LABEL CentOS 7.4 Install(Kickstart)
        KERNEL /centos7.4/vmlinuz
        APPEND initrd=/centos7.4/initrd.img inst.repo=nfs:192.168.203.22:/var/lib/tftpboot/centos7.4 inst.ks=nfs
:192.168.203.22:/var/lib/tftpboot/kickstart/ks-centos7.4.cfg biosdevname=0 net.ifnames=0

UEFI

[root@localhost tftpboot]# vi /var/lib/tftpboot/grub.cfg

set default="2"

function load_video {
  insmod efi_gop
  insmod efi_uga
  insmod video_bochs
  insmod video_cirrus
  insmod all_video
}

load_video
set gfxpayload=keep
insmod gzio
insmod part_gpt
insmod ext2

set timeout=60
### END /etc/grub.d/00_header ###

#search --no-floppy --set=root -l 'Rocky-8-6-x86_64-dvd'
#search --no-floppy --set=root -l 'CentOS 7 x86_64'

### BEGIN /etc/grub.d/10_linux ###
menuentry 'Rocky Linux 8.6-UEFI' --class fedora --class gnu-linux --class gnu --class os {
         linuxefi /rocky8.6/vmlinuz inst.repo=nfs:192.168.203.22:/var/lib/tftpboot/rocky8.6 inst.ks=nfs:192.168.
203.22:/var/lib/tftpboot/kickstart/ks-rocky86-uefi-00.cfg biosdevname=0 net.ifnames=0
         initrdefi /rocky8.6/initrd.img
}
menuentry 'CentOS Linux 7.4-UEFI' --class fedora --class gnu-linux --class gnu --class os {
         linuxefi /centos7.4/vmlinuz inst.repo=nfs:192.168.203.22:/var/lib/tftpboot/centos7.4 inst.ks=nfs:192.16
8.203.22:/var/lib/tftpboot/kickstart/ks-cent74-uefi.cfg biosdevname=0 net.ifnames=0
         initrdefi /centos7.4/initrd.img
}

 

'OS' 카테고리의 다른 글

RunLevel  (0) 2024.02.14
BIOS Setting(SuperMicro)  (0) 2024.02.13
MBR(BIOS) & GPT(UEFI)  (0) 2024.02.13
Kickstart File 분석  (2) 2024.01.22
SCP  (0) 2024.01.22