scottlang
PXE Server OS 설치 본문
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 |