본문 바로가기

IT

Kickstart 구축

Kickstart란?

리눅스 설치 시 사용자는 지역이나 시간, 패스워드, 언어 지정, 마우스 설정 등을 일일이 해야 한다. 

하지만 kickstart는 이러한 설정들을 미리 파일에 지정하여 리눅스 설치 프로그램이 설정 파일을 보고 자동으로 알아서 설치를 하는 방법이다.

 

Kickstart 장단점

장점 단점
- OS 설치 시간 단축
- 서버에 선만 연결되어있다면, 무인으로 설치 가능(인력낭비 최소화)
- 설정된 파일 값을 읽어오므로 작업 실수 X
- OS 설치 전 사전 세팅 필요(설치 파일 세팅)

 

Kickstart 동작 과정

Kickstart 동작 과정

1. pxe 부팅을 한다.
2. DHCP 서버에서 IP를 할당받는다.
3. DHCP 서버에서 지정된 pxeclient 들에 대한 부팅 파일(pxelinux.0) 정보를 얻고, TFTP 서버를 통해 pxelinux.0와 menu.c32 파일을 받는다.
4. 네트워크 부팅이 이루어지며 /[TFTP 관리 디렉터리]/pxelinux.cfg/default 파일에 지정된 메뉴들이 나타나고, 메뉴들 중 하나를 선택하면 설정되어있는 vmlinuz 커널을 메모리에 로딩하며 초기 설치 화면이 나타난다.(initrd.img 은 하드웨어 설정 시 필요 모듈을 로드할 때 쓰임)
5. 설치 이미지 및 config 파일이 로딩되면서 설치가 된다.

 

Kickstart 관련 용어 설명

- TFTP

TFTP(Trivial File Transfer Protocol)란 이더넷을 이용하여 파일을 다운 받는 프로토콜로직이다. UDP 방식을 사용한다. TFTP은 ftp와 같은 파일 전송 프로토콜이지만, 매우 간단한 프로토콜로 구성되므로 부트로더와 같은 작은 크기의 프로그램에서 수행할 수가 있다. 보통 BOOTP와 연동하여 네트워크 부트를 할 때 사용하게 된다.

 

- vmlinuz

리눅스 커널을 컴파일한 결과인 바이너리 파일을 bzImage를 사용하여 gzip으로 압축한 것입니다. 리눅스 부팅시 이 파일은 압축을 해제되며 메모리에 로딩되어 리눅스의 운영이 시작된다.

 

- initrd.img

커널 모듈을 모아놓은 이미지로 커널이 로딩되기전에 메모리에 미리 로딩된다. 이 모듈은 예를 들어 마우스 드라이버나 그랙픽카드 모듈 등이 있다. 인텔 그래픽 카드를 사용하는 본체에 리눅스를 부팅하게되면 initrd.img 의 인텔 그래픽 카드 모듈이 메모리에 로딩됩니다.

 

- syslinux

MS-DOS/Windows FAT 파일 시스템에서 실행 리눅스 운영 체제 용 부트 로더이다.목적은 리눅스 처음 설치를 단순화하기위한, 구조 및 기타 특수 목적의 부팅 디스크 생성이다.

 

- pxelinux.0

syslinux 패키지에 포함되어있는 파일로 대부분의 시스템에는 기본적으로 설치가 되어있다. 네트워크 부트 로더로 리눅스의 grub 이나 lilo 와 같은 역활을 한다.

 

Kickstart 구축 방법

** 구축 방법 예시이니, 방법 참고만 하면 된다.

- 서버 설치 후 IP 자동으로 못 받아올시

vi /etc/sysconfig/network-script/ifcfg-포트이름
	onboot = yes	## no -> yes 변경
dhclient	## dhcp 다시 불러오기

 

- 방화벽 해제 및 selinux 비활성화

systemctl disable firewalld	## 방화벽 해제
setenforce 0	## selinux 비활성화
vi /etc/selinux/conf
	SELINUX=disabled	## 부팅시에도 selinux 비활성화

 

- 필요 패키지 다운로드

yum -y install net-tools vim dhcp tftp-server httpd syslinux xinetd

 

- DHCP 설정

vi /etc/dhcp/dhcpd.conf
	shared-network kick { 
		subnet 192.168.100.0 netmask 255.255.255.0 {
		next-server 192.168.100.1;	## TFTP서버(kickstart) IP
		range 192.168.100.100 192.168.100.200; ## IP 할당 범위
		filename "pxelinux.0";	## 부트로더 이름
		}
	}
systemctl start dhcpd; systemctl enable dhcpd

 

- TFTP 설정 (tftp는 슈퍼데몬=xinetd 기반으로 동작)

vi /etc/xinetd.d/tftp
	server_args = -s /tftpboot
	disable = no
systemctl start xinetd; systemctl enable xinetd

 

- PXE 부팅 설정

mkdir /tftpboot	## tftp부트 디렉토리 생성
mkdir -p /tftpboot/pxelinux.cfg	## pxelinux.0파일이 읽어 올 config파일 생성
mkdir /tftpboot/centosX.X	## iso이미지 파일 디렉토리
cp /usr/share/syslinux/pxelinux.0 /tftpboot
cp /usr/share/syslinux/menu.c32 /tftpboot

vi /tftpboot/pxelinux.cfg/default	## pxe부팅시 나오는 메뉴파일 생성
	default menu.c32
	menutime ### PXE BOOT ###
	label 1
	menu label ^1) test.cfg	## 서버로 전달될 데이터파일
	kernel centosX.X/vmlinuz	## 상대 경로
	append initrd=centosX.X/initrd.img ks=http://192.168.100.1/ks/test.cfg	## http 주소
	ksdevice = link

 

- KS 구성(세팅파일 구성)

mkdir -p /data/ks
mkdir -p /data/centosX.X
vi /data/ks/test.cfg	## 다른서버로 뿌려질 데이터구성
	text	## text모드를 사용하여 인스톨
	install	## http로 인스톨
	url --url http://192.168.100.1/centos8.0
	reboot
	lang en_US.UTF-8	## 언어 설정
	keyboard us
	network --device link --bootproto=static --ip=192.168.100.150 -netmask=255.255.255.0 --gateway=192.168.100.254 --hostname=호스트네임 --onboot=on	## 설치할 ip설정
	
	rootPW --incrypted 패스워드 ## 루트계정 비밀번호 설정
	firewall --disable	## 방화벽 해제
	authconfig --enableshadow	## 시스템에서 사용될 인증 옵션 설정
	selinux --diable	## selinux 해제
	timezone --utc Asia/Seoul	## 시간 설정
	bootloader --location=mbr --append="rhgb quiet"	## 부트로더 지정
	zerombr
	clearpart --all --initlabel	## 기존파티션을 제거하고 새로운 파티션 생성
	part / --fstype xfs --size=102400 --ondisk=sda
	part swap --fstype xfs --size=8192 --ondisk=sda
	part /data --fstype xfs --size=1 --grow --ondisk=sda
	
	%packages
	@base
	@core
	@development
	@dial-up
	@emacs
	@debugging
	gcc
	make
	autoconf
	automake
	lsof
	sysstat
	strace
	openssh-clients
	rdate
	xmlrpc-c
	mpfr
	cpp
	kernel-headers
	glibc-headers
	libgomp
	mlocate
	perl-Pod-Escapes
	perl-Pod-Simple
	perl-Module-Pluggable
	nfs-utils
	gdb
	bc
	libevent
	cmake
	ncurses-devel
	openssl-devel
	dstat
	telnet
	vim
	%end
	%post
	chkconfig sendmail off
	chkconfig bluetooth off
	chkconfig iptables off
	chkconfig ip6tables off
	%end

 

- iodd를 이용한 iso 이미지 마운트

mount -t iso9660 -r /dev/sr0 /mnt
cp -r /mnt/* /data/centosX.X
umount /mnt
cp -r /data/centosX.X/{vmlinuz,initrd.img} /tftpboot/centosX.X

 

- HTTP 구성

vi /etc/http/conf/httpd.conf	## http로 iso를 전송 하기 때문에 설정
	<Directory />
	AllowOverridenone
	Require all granted
	</Directory>
	Alias /ks/ "/data/ks/"	## 별칭 설정
	Alias /centos7.6/ "/data/centos7.6/"

 

- 패키지 재시작

systemctl restart xinetd tftp dhcpd httpd

 

Kickstart 참고 자료

Kickstart Guide

 

 

'IT' 카테고리의 다른 글

DNS 구축(이중화/View)  (0) 2022.06.28
MegaCli 사용법  (0) 2022.06.20
Linux 비프음 끄기  (0) 2022.06.17
Ansible 설치 방법  (0) 2022.06.17
Openstack 구축(싱글노드)  (0) 2022.06.17