본문 바로가기
AWS Cloud School 8기/서버가상화_클라우드 이미지

PxE kickstart/ 응용 실습

by YUNZEE 2025. 1. 26.
728x90

PxE kickstart

- OS설치 시의 설정값을 세팅을 통해 자동으로 OS가 설치 완료되게 하는 구성파일

/boot: 

/ : 최상위 디렉토리

swap: 

- 안에 내용 지워질 건데 괜찮여?라고 물어보는 창

 

root아이디랑 비번 넣어줌

 

보안 설정

[root@server2 ~]# sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
[root@server2 ~]# reboot

 

[root@server2 ~]# systemctl stop firewalld
[root@server2 ~]# systemctl disable firewalld

 

[root@server2 ~]# cat <<EOF> /etc/yum.repos.d/CentOS-Base.repo

 

yum install -y system-config-kickstart

- gui 서버에 접속해서 킥스타트 패키지를 설치한다.

- 추가된 걸 확인할 수 있음

- kickstart 클릭

- 여기서는 root PW  입력

 

- 기존에 boot loader가 존재한다면 안 만들어도 되지만 우리는 부트로더가 존재하지 않으므로 새로 만들어야 함

- 부트로더? 부트스트랩이라고도 부르며, '부팅 이전의 절차' 정도로 생각하면 좋음, 커널을 동작시키고, 메모리, 디스크를 정의하며 부팅이 될 수 있는 상태를 만드는 행위임

 

- 가상메모리(리눅스에서는 가상메모리, 즉 디스크를 마치 램처럼 사용하는 것을 swap이라고 부름)

섹터: 디스크의 기본단위(하드웨어) 

- 여러 개의 섹터가 모여서 하나의 블록을 만들 수 있음

- 하드디스크에서 데이터를 저장하는 가장 '작은' 물리적 단위

블록: 소프트웨어적인 기본단위

- 여러 개의 블록 파일을 합쳐서 하나의 파일로 만들 수 있음

- 대용량 파일을 다룬다면 그것에 맞춰서 블록 크기를 크게 하는 게 좋음

- 파일시스템에서 데이터를 저장하는 논리적 단위

- 운영체제가 파일을 저장할 때는 '섹터' 하나씩 저장하는 게 아니라, 여러 개의 섹터를 묶어서 '블록' 단위로 저장하는  

 

- 레이이웃에 두 개 있는지 확인

- /var 하위에 kick 생성

- 저장할 파일 이름은 kick

 

- 생성된 걸 확인할 수 있음

%packages

@^minimal

@core

chrony

kexec-tools

 

%end

- 이 내용을 kick.cfg파일에 추가해 주자

[root@cent7-gui ~]# vi /var/kick/kick.cfg

- 킥스타트 파일이 잘 구성됨. 우리에게 필요한 건 이 kick.cfg파일이며, 이 파일을 pxe-client에게 보내줘야 하므로, pxe서버에 넣어주자

 

[root@pxe ~]# cd /var/ftp/pub

[root@pxe pub]# vi kick.cfg

- pxe 서버의 pub 폴더에 같은 내용을 갖고 있는 동일한 파일을 하나 만들어주자.

 

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

 

- pxe-cil를 켜서 설치 로딩화면까지 넘어가면 잘 된 거임

실습

pxe-ftp 10.10.3.21 (OS설치파일)
pxe-http 10.10.4.80 (킥스타트 파일)
pxe-tftp 10.10.3.69 (부팅에 필요한 파일 전송)
pxe-dhcp 10.10.1.67 (client에게 ip 부여)
pxe-client 10.10.3.0 /24 대역에서 150~160 아이피가 할당됐으면 좋겠다.

pxe 클라이언트들이 적절하게 OS가 설치되도록 한번 해보세요!

pxe 서버는 전부 미니멀로 해도 됩니다!

R1(config)#access-list 1 per 10.10.1.0 0.0.0.255
R1(config)#access-list 2 per 10.10.3.0 0.0.0.255
R1(config)#access-list 3 per 10.10.4.0 0.0.0.255

-> 한 번에 해주는 방법은 R1(config)#access-list 3 per 10.10.0.0 0.0.255.255

 

- 라우터 설정 내용과 8.8.8.8로 핑이 잘 가는 모습

오류/ 해결 방안

- gns3에서는 가는데 xshell에서 ping이 안 간다면? gns3 선 delete 했다가 재연결해주기

- 다시 연결된 걸 확인할 수 있음.

 

pxe-ftp 10.10.3.21 (OS설치파일)
pxe-http 10.10.4.80 (킥스타트 파일)
pxe-tftp 10.10.3.69 (부팅에 필요한 파일 전송)
pxe-dhcp 10.10.1.67 (client에게 ip 부여)
pxe-client 10.10.3.0 /24 대역에서 150~160 아이피가 할당됐으면 좋겠다./ client os 설정 ㄴㄴ

 

먼저 문제를 해결하는데 순서로는 dhcp -> tftp -> ftp -> http 순으로 진행할 예정

 

ftp, tftp에 application에 위치한 것

pxe-dhcp 10.10.1.67 (client에게 ip 부여)
subnet 10.10.1.0 netmask 255.255.255.0{}

#ip 대역이 다르니까 필요함

subnet 10.10.3.0 netmask 255.255.255.0

{

option routers 211.183.3.2;

#GW

option subnet-mask 255.255.255.0;

#SM

range dynamic-bootp 10.10.3.150 10.10.3.160;

# 부여받는 서버 ip 범위

option domain-name-servers 8.8.8.8;

#DNS

allow booting;

#부팅 허용.

next-server 10.10.3.69;

#내 pxe ip주소를 넣어줘야됨

#PxE 서버의 주소, 정확하게 얘기하자면 tftp주소

filename "pxelinux.0";

# next-server에 가서 받아올 파일.
}

systemctl restart dhcp  

systemctl enable dhcp

 

help-address 설정

R1(config)#int f0/1
R1(config-if)#ip helper-address 10.10.1.67

- 받아왔음

pxe-tftp 10.10.3.69 (부팅에 필요한 파일 전송)

방어벽 ~~ 그거 설정해 주고

[root@pxe-tftp ~]# mount /dev/cdrom /media
mount: /dev/sr0 is write-protected, mounting read-only

 

[root@pxe-tftp ~]# yum install -y tftp-server

 

[root@pxe-tftp ~]# cp /media/images/pxeboot/vmlinuz /var/lib/tftpboot
[root@pxe-tftp ~]# cp /media/images/pxeboot/initrd.img /var/lib/tftpboot
[root@pxe-tftp ~]# yum install -y syslinux

- 파일 잘 있는지 확인 (둘 다 확인 가능한 방법임)

[root@pxe-tftp ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
[root@pxe-tftp ~]# systemctl restart tftp
[root@pxe-tftp ~]# systemctl enable tftp
[root@pxe-tftp ~]# ls -al /var/lib/tftpboot

 

default file 구성

[root@pxe-tftp ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@pxe-tftp ~]# cd /var/lib/tftpboot/pxelinux.cfg
[root@pxe-tftp pxelinux.cfg]# vi default

DEFAULT centos7_pxe
LABEL centos7_pxe
 kernel vmlinuz
 APPEND initrd=initrd.img repo=ftp://10.10.3.21/pub

#ks=http://10.10.4.80/kick.cfg 나중에 해줘야 됨 미리 하면 안 됨

 

pxe-ftp 10.10.3.21 (OS설치파일)

방어벽 ~~ 설정

yum install -y vsftpd

- connected 해줘야 됨

 

systemctl restart vsftpd

systemctl enable vsftpd

 

[root@pre-ftp ~]# mount /dev/cdrom /media

[root@pre-ftp ~]# cp -r /media/* /var/ftp/pub

- 여기까지 실행된 걸 확인할 수 있음

pxe-http 10.10.4.80 (킥스타트 파일)

- 빈 파일에 내용 복붙

[root@web ~]# vi /var/www/html/kick.cfg

- GUI로 사용했던 kick을 dvd os가 아닌 상태에서도 사용하기 위해 kick내용을 가져와야 됨

- 빈 파일에 내용 복붙  

- vi 편집기 명령모드(= esc 클릭)에 전체 삭제. ggdG 입력(잘못 복붙 해서 필요해서 가져와봄)

#platform=x86, AMD64, or Intel EM64T

#version=DEVEL

# Install OS instead of upgrade

install

# Keyboard layouts

keyboard 'us'

# Root password

rootpw --iscrypted $1$1OY1ngum$NEOqu9p9uxPnFG3pcRaGD0

# System language

lang en_US

# System authorization information

auth  --useshadow  --passalgo=sha512

# Use graphical install

graphical

firstboot --disable

# SELinux configuration

selinux --enforcing





# Firewall configuration

firewall --disabled

# Reboot after installation

reboot

# System timezone

timezone Africa/Abidjan

# Use network installation

url --url="ftp://10.10.3.21/pub" 

# ******ftp에 복붙한 ftp/pub를 가져와야됨 그래서 ftp주소를 넣어줘야됨 *****

# System bootloader configuration

bootloader --location=mbr

# Clear the Master Boot Record

zerombr

# Partition clearing information

clearpart --all --initlabel

# Disk partitioning information

part swap --fstype="swap" --size=2048

part / --fstype="xfs" --grow --size=1

# 추가
%packages

@^minimal

@core

chrony

kexec-tools

 

%end

 

다시 tftp서버로 돌아가서 

vi default 수정

DEFAULT centos7_pxe
LABEL centos7_pxe
 kernel vmlinuz
 APPEND initrd=initrd.img repo=ftp://10.10.3.21/pub ks=http://10.10.4.80/kick.cfg

 

systemctl restart httpd

systemctl enable httpd

728x90