Kickstart란?
리눅스 설치 시 사용자는 지역이나 시간, 패스워드, 언어 지정, 마우스 설정 등을 일일이 해야 한다.
하지만 kickstart는 이러한 설정들을 미리 파일에 지정하여 리눅스 설치 프로그램이 설정 파일을 보고 자동으로 알아서 설치를 하는 방법이다.
Kickstart 장단점
장점 | 단점 |
- OS 설치 시간 단축 - 서버에 선만 연결되어있다면, 무인으로 설치 가능(인력낭비 최소화) - 설정된 파일 값을 읽어오므로 작업 실수 X |
- OS 설치 전 사전 세팅 필요(설치 파일 세팅) |
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 참고 자료
'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 |