반응형
Legacy 환경
1. SELinux 비활성화
vi /etc/selinux/config
SELINUX=disabled
2. Firewall 비활성화
systemctl stop firewalld
systemctl disable firewalld
3. DHCP, TFTP, FTP, SYSLinux 설치
yum install -y dhcp tftp tftp-server syslinux vsftpd xinetd
4. TFTP Config 설정
vi /etc/xinetd.d/tftp
disable=no
5. PXE Booting을 위한 디렉토리 생성
mkdir /var/lib/tftpboot/pxelinux
mkdir /var/lib/tftpboot/pxelinux/centos7.8
mkdir /var/lib/tftpboot/pxelinux/iso
mkdir /var/lib/tftpboot/pxelinux/mnt
mkdir /var/lib/tftpboot/pxelinux/pxelinux.cfg
mkdir /var/ftp/pub/centos7.8
6. Image Mount and Copy
mount /dev/sr0 /mnt
cp -R mnt/* /var/ftp/pub/centos7.8/
익명 계정(Anonymous)의 접근
FTP는 사용자 계정을 통해 로그인할 수도 있지만 익명 계정 이란것이 있어 암호 없이 접속하여 일부 오픈된 디렉터리만 사용할 수 있는 기능이 있습니다.
anonymous(익명) 계정으로 접속하는 경우 디렉터리는 기본적으로 /var/ftp/ 로 접근됩니다. 해당 디렉터리로 접근해보면 기본적으로 pub이라는 디렉터리가 생성 되어 있습니다.
익명의 사용자가 PXE 서버로부터 CentOS를 설치하기 위해선 이 익명의 사용자들이 접근하는 디렉토리에 CentOS 설치파일을 넣어줘야 한다.
7. BIOS Boot Loader Copy
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/pxelinux/pxelinux.0
cp /usr/share/syslinux/menu.c32 /var/lib/tftpboot/pxelinux/menu.c32
8. Boot Image Copy
cp /var/lib/tftpboot/pxelinux/mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/pxelinux/centos7.8/
vmlinuz is a compressed Linux kernel, and it is bootable
cp /var/lib/tftpboot/pxelinux/mnt/images/pxeboot/initrd.img /var/lib/tftpboot/pxelinux/centos7.8/
initrd.img란?
Initrd = INITial RamDisk, 초기 램디스크. 부팅할 때 초기에 한번만 마운트되어 사용되는 디스크이다.
9. default - BIOS Boot 생성 및 편집
vi /var/lib/tftpboot/pxelinux/pxelinux.cfg/default
default menu.c32
timeout 100
menu background splash.jpg
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color timeout_msg 0 #ffffffff #00000000
menu color timeout 0 #ffffffff #00000000
menu color cmdline 0 #ffffffff #00000000
menu tabmsg Press ENTER to Install or TAB to edit a menu entry
menu title #### YG Installer Boot Menu ####
label 1
exit
label 2
menu label CentOS 7.8 Install
kernel centos7.8/vmlinuz
append initrd=centos7.8/initrd.img ramdisk_size=65536 inst.repo=ftp://192.168.210.99/pub/centos7.8 ks=ftp://192.168.210.99/pub/centos7.8/ks.cfg net.ifnames=0 biosdevname=0
# net.ifnames=0 biosdevname=0 을 설정함으로써 Default ethernet이 eth0으로 잡힌다
10. KickStart 파일 편집
- 미리 받은 CentOS7.8 KickStart 파일을 사용
- UEFI 모드에선 디스크 설정과 URL만 변경하여 사용한다.
- /var/ftp/pub/centos7.8 에 위치해야 한다.
- Graphical 모드는 파티션을 쉽게 나눠야할 때 사용하고 평소엔 Text 모드를 사용하도록 한다.
11. dhcpd.conf 설정
vi /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
#
option space pxelinux;
option pxelinux.magic code 208 = string;
option pxelinux.configfile code 209 = text;
option pxelinux.pathprefix code 210 = text;
option pxelinux.reboottime code 211 = unsigned integer 32;
option architecture-type code 93 = unsigned integer 16;
default-lease-time 1800; # 30 min
max-lease-time 3600; # 1 hour
subnet 192.168.210.0 netmask 255.255.255.0 {
# 타겟 서버가 할당 받을 IP 대역 설정
allow unknown-clients;
range 192.168.210.101 192.168.210.200;
# 타겟 서버의 IP 범위 (192.168.200.101~200)
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
next-server 192.168.210.99;
# TFTP-SERVER의 IP. PXE 서버에 구현할 것이니, PXE 서버 IP를 적는다
if option architecture-type = 00:07 {
filename "shim.efi";
} else {
filename "pxelinux/pxelinux.0";
}
}
}
12. Service 재시작 및 시작 프로그램 등록
systemctl restart dhcpd
systemctl restart vsftpd
systemctl restart tftp
systemctl restart xinetd
systemctl enable dhcpd
systemctl enable vsftpd
systemctl enable tftp
systemctl enable xinetd
UEFI 환경
1. Boot 파일, grub 파일 복사
cp EFI/BOOT/grubx64.efi /var/lib/tftpboot/pxelinux/BOOTX64.EFI
cp EFI/BOOT/grub.cfg /var/lib/tftpboot/pxelinux/grub.cfg
2. grub.cfg 수정
vi /var/lib/tftpboot/pxelinux/grub.cfg
set default="1"
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 'CentOS 7 x86_64'
### BEGIN /etc/grub.d/10_linux ###
menuentry 'Install CentOS 7' --class fedora --class gnu-linux --class gnu --class os {
linuxefi /pxelinux/centos7.8/vmlinuz ip=dhcp inst.repo=ftp://192.168.210.99/pub/centos7.8 inst.ks=ftp://192.168.210.99/pub/centos7.8/ks.cfg
initrdefi /pxelinux/centos7.8/initrd.img
}
반응형
'Linux' 카테고리의 다른 글
운영체제란 무엇인가 / 리눅스 OS별 특징 (0) | 2022.08.29 |
---|---|
NAT란 무엇인가 (0) | 2022.08.29 |
RPM의 원리와 기본 개념 (0) | 2022.08.29 |
DELL Server(Dell Precision 7920) iDRAC 설정 (0) | 2022.08.04 |
GCC Installation (0) | 2022.08.02 |
댓글