Recent Posts
Recent Comments
Link
«   2026/06   »
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
Archives
Today
Total
관리 메뉴

scottlang

PXE Server OS 설치 본문

Linux

PXE Server OS 설치

Scottlang 2026. 4. 19. 08:20
728x90

 

Rocky 9.5  /   파트션은 취소 구성으로   / 최소 패키지

 

1. 파티션구성

/boot/efi (EFI System Partition)
크기: 200–600MB (실제 사용량은 수 MB지만, 200MB 이상 권장)

/ (root)
크기: 디스크 나머지 전부
형식: XFS (Rocky 기본)

 

2. 필수 패키지 설치 (Rocky 9.5)
dnsmasq + TFTP + HTTP 조합

sudo dnf install -y dnsmasq tftp-server httpd syslinux-tftpboot grub2-efi-x64-modules grub2-tools-extra

 

dnsmasq : DHCP + TFTP + DNS를 한 번에 처리
tftp-server : UEFI용 bootx64.efi, grubx64.efi, 커널/Initrd 제공
httpd : 설치 ISO  리포지토리, Kickstart/autoinstall 파일 제공
syslinux-tftpboot : BIOS 클라이언트도 지원할 계획이면 pxelinux.0 등 제공
grub2-efi-x64-modules 등 : UEFI용 GRUB 네트워크 부트 파일 생성에 필요
* UEFI-only 환경에서 iPXE만 쓸 거면 syslinux-tftpboot는 생략해도 됩니다

 

3. 서비스 활성화 

sudo systemctl enable --now dnsmasq
sudo systemctl enable --now tftp
sudo systemctl enable --now httpd

 

4. 방화벽 열기
Rocky 9 기본 firewalld를 쓰고 있다면 PXE 관련 포트 Open

sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-port=69/udp      # TFTP
sudo firewall-cmd --permanent --add-port=4011/udp    # PXE proxy (필요 시)
sudo firewall-cmd --reload

* DHCP를 다른 장비에서 한다면 --add-service=dhcp는 빼고, 이 서버 IP를 next-server/option 66/67로만 지정

 

# 서비스 중지
sudo systemctl stop firewalld
# 자동 실행 비활성화
sudo systemctl disable firewalld

# 서비스 마스킹 (완전 봉쇄)
sudo systemctl mask firewalld

# 서비스 확인
systemctl status firewalld

 

sudo systemctl stop firewalld && sudo systemctl disable firewalld && sudo systemctl mask firewalld

 

 SELinux

setenforce 0      # Permissive 모드 (사실상 차단 안 함)
getenforce        # Permissive 인지 확인

vi /etc/selinux/config
# SELINUX=enforcing
SELINUX=disabledvi /etc/selinux/config
# SELINUX=enforcing
SELINUX=disabled

 

5. TFTP 설정 (기본 폴더 위치 변경 방법)

*   /tftpboot 곳으로 사용

mkdir -p /etc/systemd/system/tftp.service.d
cat > /etc/systemd/system/tftp.service.d/override.conf << 'EOF'
[Service]
ExecStart=
ExecStart=/usr/sbin/in.tftpd -s /tftpboot -u nobody -c
EOF

 

systemctl daemon-reload
systemctl restart tftp
systemctl status tftp

 

6. 디렉터리/부트 파일  BIOS/UEFI 혼용 

mkdir -p /tftpboot/{pxelinux.cfg,uefi}

BIOS용: /tftpboot/pxelinux.0, /tftpboot/pxelinux.cfg/default
UEFI용: /tftpboot/uefi/BOOTX64.EFI (또는 ipxe.efi / grubx64.efi)

 

# BIOS용 부트로더
cp /usr/share/syslinux/pxelinux.0 /tftpboot/
# Rocky 9.5 커널/initrd
cp /os/rocky95/images/pxeboot/vmlinuz    /tftpboot/rocky95
cp /os/rocky95/images/pxeboot/initrd.img /tftpboot/rocky95/

# UEFI용 부트로더 (GRUB or BOOTX64.EFI)
cp /os/rocky95/EFI/BOOT/BOOTX64.EFI /tftpboot/uefi/

 

7. ISO  & Mount  포인트 지정

mkdir -p /os/iso
mkdir -p /os/rocky95
mkdir -p /os/ks

iso : iso 설치 이미지 모음  디렉토리

os :  각각 마운트할 os 디렉토리
ks :  설치 파일 저장 위

 

# ISO 파일 마운트 
mount -o loop /root/Rocky-9.5-x86_64-dvd.iso /os/rocky95

/etc/fstab ->  /root/Rocky-9.5-x86_64-dvd.iso  /os  iso9660  loop,ro  0 0

 

chown -R nobody:nobody /tftpboot
chmod -R 755 /tftpboot
# 최소한 BOOTX64.EFI 만이라도:
# chmod 644 /tftpboot/uefi/BOOTX64.EFI

ls -l /tftpboot/uefi

 

8. httpd에서 /os 폴더 설정

vi /etc/httpd/conf.d/os.conf

 

Alias /os /os
<Directory /os>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

systemctl restart httpd

 

 

9. dnsmasq 설정 (BIOS + UEFI 겸용, /tftpboot 사용)
예를 들어 PXE 서버 IP가 192.168.10.10, PXE NIC가 enp1s0라고 가정하면:

 

10. PXE 설정파일 만들기
cat > /etc/dnsmasq.d/pxe.conf << 'EOF'
# PXE용 인터페이스
interface=ens33,lo
bind-interfaces

PXE를 모든 활성 인터페이스에서 받으려면:
# interface=  <-- 아예 주석 처리
# bind-interfaces  <-- 이것도 같이 막는 게 안전

# DHCP 범위
dhcp-range=192.168.10.100,192.168.10.200,255.255.255.0,12h

# 게이트웨이 / DNS
dhcp-option=3,192.168.10.1
dhcp-option=6,192.168.10.1

# ---------------------------------------------------
# BIOS / UEFI 아키텍처 구분
# ---------------------------------------------------
dhcp-match=set:bios,option:client-arch,0
dhcp-match=set:efi-x86_64,option:client-arch,7
dhcp-match=set:efi-x86_64,option:client-arch,9

# BIOS → pxelinux.0
dhcp-boot=tag:bios,pxelinux.0,pxeserver, PXE서버ip

# UEFI → BOOTX64.EFI
dhcp-boot=tag:efi-x86_64,uefi/BOOTX64.EFI,pxeserver, PXE서버ip

dhcp-boot=tag:efi-x86_64,uefi/grubx64.efi,pxeserver,192.168.45.27   <--- 안될 시 

 

BOOTX64.EFI은 Secure Boot용 체인로더 /내부망 PXE에서 Secure Boot를 안 쓴다면 변경


# ---------------------------------------------------
# TFTP 설정
# ---------------------------------------------------
enable-tftp
tftp-root=/tftpboot

pxe-prompt="Press F8 for network boot menu", 10
EOF

systemctl restart dnsmasq
systemctl status dnsmasq

 

11. BIOS 모드  설치 메뉴 (pxelinux.cfg/default)
/tftpboot/pxelinux.cfg/default 파일:

DEFAULT rocky9
PROMPT 1
TIMEOUT 500

UI menu.c32
#UI vesamenu.c32
MENU TITLE SK Telecom PXE OS Install
MENU TABMSG Press [Tab] to edit options

# 레이아웃
MENU WIDTH 72
MENU MARGIN 4
MENU ROWS 8
MENU VSHIFT 4
MENU HSHIFT 4
MENU TABMSGROW 18
MENU CMDLINEROW 20
MENU HELPMSGROW 22
MENU HELPMSGENDROW 24

# 색상 (Dark + Navy)
# screen : 전체 배경 → 완전 검정
MENU COLOR screen      37;40   #ffffffff #00000000 none
# 메뉴 박스 테두리
MENU COLOR border      30;40   #404a6a8a #00000000 std
# 상단 타이틀 (연한 블루그레이)
MENU COLOR title       1;36;40 #ff9fb7d1 #00000000 none
# 선택되지 않은 항목 (밝은 회청색)
MENU COLOR unsel       37;40   #ffe0e6f0 #00000000 none
# 선택된 항목 (짙은 네이비 배경 + 흰색)
MENU COLOR sel         7;37;40 #ffffffff #ff101824 all
MENU COLOR hotsel      1;37;40 #ffffffff #ff101824 all
# 단축키 색
MENU COLOR hotkey      1;37;40 #ffddefff #00000000 none
# 하단 안내 문구 (연한 회청색)
MENU COLOR tabmsg      37;40   #ff9aa9ba #00000000 none
MENU COLOR timeout_msg 37;40   #ff9aa9ba #00000000 none
MENU COLOR timeout     1;37;40 #ffd7e6f5 #00000000 none
# 도움말/메시지
MENU COLOR help        37;40   #ffb9c7d6 #00000000 none
MENU COLOR msg07       37;40   #ff9aa9ba #00000000 none

LABEL rocky9
  MENU LABEL 1) Install Rocky Linux 9.5 (Server)
  KERNEL rocky95/vmlinuz
  APPEND initrd=rocky95/initrd.img ip=dhcp inst.repo=http://192.168.45.27/os/rocky95 inst.ks=http://192.168.45.27/os/ks/b-rocky95.ks

LABEL rocky9_min
  MENU LABEL 2) Install Rocky Linux 9.5 (Minimal)
  KERNEL rocky95/vmlinuz
  APPEND initrd=rocky95/initrd.img ip=dhcp inst.repo=http://192.168.45.27/os/rocky95 ks=http://192.168.45.27/ks/rocky9-minimal.ks

LABEL local
  MENU LABEL 3) Boot from local disk
  LOCALBOOT 0

 

11. UEFI 모드  설치 메뉴 (GRUB 예시)
UEFI용으로 GRUB를 쓰려면 /tftpboot/uefi/grub.cfg 를 하나 만들고, BOOTX64.EFI가 이 파일을 읽도록 맞춰줍니다.

bash
cat > /tftpboot/uefi/grub.cfg << 'EOF'
set default=0
set timeout=500

echo
echo ' SK Telecom PXE OS Install (UEFI) '
echo

menuentry '1) Install Rocky Linux 9.5 (Server)' {
    linuxefi rocky95/vmlinuz \
        ip=dhcp \
        inst.repo=http://192.168.45.27/os/rocky95 \
        inst.ks=http://192.168.45.27/os/ks/u-rocky95.ks
    initrdefi rocky95/initrd.img
}

menuentry '2) Install Rocky Linux 9.5 (Minimal with Kickstart)' {
    linuxefi rocky95/vmlinuz \
        ip=dhcp \
        inst.repo=http://192.168.45.27/os/rocky95 \
        ks=http://192.168.45.27/ks/rocky9-minimal.ks
    initrdefi rocky95/initrd.img
}

menuentry '3) 333333333333333333Boot from local disk' {
    exit
}

menuentry 'Ubuntu 22.04 Live (UEFI)' {
    linuxefi live/vmlinuz ip=dhcp boot=casper url=http://192.168.45.27/os/ubuntu-live.iso ---
    initrdefi live/initrd
}

 

*KS파일 HTTP 403 에러 날때

 

ls -ld /os /os/ks

ls -lZ /os/ks/b-rocky95.ks

curl -I http://192.168.45.27/os/ks/b-rocky95.ks

 

KS파일에 추가
%post
# root SSH 로그인 허용
cat > /etc/ssh/sshd_config.d/01-permitrootlogin.conf << 'EOF'
PermitRootLogin yes
PasswordAuthentication yes
EOF
systemctl restart sshd
%end

 

%post
# Dell ISM / racadm 설치용 임시 디렉터리
mkdir -p /tmp/dell-rpms
cd /tmp/dell-rpms

# PXE 서버에서 RPM 내려받기
curl -o dcism.rpm http://192.168.45.27/os/localrepo/dell/dcism-xxx.rpm
curl -o racadm.rpm http://192.168.45.27/os/localrepo/dell/racadm-xxx.rpm

# 의존성 포함 설치 (이미 ISO에 필요한 의존성 rpm 이 있어야 함)
rpm -Uvh dcism.rpm racadm.rpm

'Linux' 카테고리의 다른 글

rocky 9.5 Root Passwd 변경  (0) 2026.04.22
LINUX 계정 백업  (0) 2023.09.11
Centos 8 Yum repository DVD  (0) 2021.05.14
Ubuntu not boot UEFI  (0) 2020.11.24
NIC PORT 순서 변경  (0) 2020.11.06
Comments