기술 가이드

CentOS/Fedora Kickstart 자동 설치 가이드

4 min read 시스템 관리 업데이트됨 26 Sep 2025
CentOS/Fedora Kickstart 자동 설치 가이드
CentOS/Fedora Kickstart 자동 설치 가이드

요약

개요

IT 지원 업무에서 여러 대의 서버나 데스크탑에 동일한 설정을 반복 적용해야 할 때 Kickstart 자동 설치는 매우 유용합니다. Kickstart는 설치 옵션을 미리 정의한 텍스트 파일로, 무인 설치(데이터센터 또는 대량 배포)에 적합합니다. 이 글은 기존 예제를 통해 Kickstart 파일 구조와 설치 후 스크립트(%post)의 역할을 이해하고, 실전에서 응용하는 방법을 제공합니다.

중요 용어 1줄 정의: Kickstart — Red Hat 계열의 설치 옵션을 자동화하는 텍스트 구성 파일입니다.

기존 Kickstart 파일 확인 방법

설치 후에 생성되는 예제 파일을 참고하면 이해가 빠릅니다. 이미 설치한 시스템에서 /root/anaconda-ks.cfg 파일을 열어보면 설치 시 선택한 옵션들이 Kickstart 형식으로 기록되어 있습니다. 이 파일을 사례로 보면 어떤 옵션을 설정했는지 예제로 배울 수 있습니다.

예제 Kickstart 파일 (원본 유지)

아래는 필자가 Fedora 노트북 여러 대에 VMWare Player와 가상머신 이미지를 배포할 때 사용한 Kickstart 예제입니다. 주석을 포함한 실제 사용 예제로, 필요한 옵션을 추가/제거하여 환경에 맞게 조정할 수 있습니다.

text
install
cdrom
lang en_US.UTF-8
keyboard uk
timezone --utc Europe/London
rootpw  --iscrypted $$nndedddewfooofcerd3r434
selinux --disabled
# Custom user added
user --name=kevinmitnick --groups=users --password=HackThePlanet
authconfig --enableshadow --passalgo=sha512 --enablefingerprint
firewall --service=ssh
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
clearpart --all --drives=sda
ignoredisk --only-use=sda
part /boot --fstype=ext2 --asprimary --size=500
part /OtherOS --fstype=ext4 --asprimary --size=10240
part swap --asprimary --size=2048
part pv.fedora1000 --grow --asprimary --size=500
volgroup fedora --pesize=32768 pv.fedora1000
logvol /centosVM --fstype=ext4 --name=centosVM --vgname=fedora --size=30720
logvol /home --fstype=ext4 --name=home --vgname=fedora --size=81920
logvol / --fstype=ext4 --name=root --vgname=fedora --size=25600
logvol /windowsVM --fstype=ext4 --name=windowsVM --vgname=fedora --size=40960
bootloader --location=mbr --driveorder=sda --append="nomodeset rhgb quiet"
# setup the network with DHCP
network --device=eth0 --bootproto=dhcp
# packages that will be installed, anything starting with an @ sign is a yum package group.
%packages
@admin-tools
@authoring-and-publishing
@base
@core
@development-libs
@development-tools
@dial-up
@editors
@education
@electronic-lab
@engineering-and-scientific
@eclipse
@fedora-packager
@fonts
@gnome-desktop
@gnome-software-development
@graphical-internet
@graphics
@hardware-support
@input-methods
@java
@java-development
@kde-desktop
@kde-software-development
@legacy-fonts
@office
@online-docs
@printing
@sound-and-video
@system-tools
@text-internet
@x-software-development
@base-x
kpackagekit
system-config-network
scribus
xfsprogs
mtools
gpgme
gpm
rpmdevtools
koji
mercurial
lua
pylint
rpmlint
plague-client
cmake
mock
bzr
pptp
kdeedu-marble
minicom
opencv
yum-priorities
plotutils
openoffice.org-opensymbol-fonts
qtcurve-gtk2
gvfs-obexftp
glibmm24-devel
gnome-vfs2-devel
libsigc++20-devel
libart_lgpl-devel
kdepim
konversation
ImageMagick
digikam
kipi-plugins
kdegraphics
gypsy
gpsd
hdparm
m17n-db-tamil
m17n-db-gujarati
m17n-db-kannada
m17n-db-hindi
gok
m17n-db-oriya
m17n-db-bengali
m17n-contrib-sinhala
m17n-db-assamese
m17n-db-punjabi
iok
m17n-db-telugu
m17n-db-malayalam
xorg-x11-fonts-ISO8859-1-100dpi
urw-fonts
ghostscript-fonts
kdepim
vorbis-tools
amarok
jack-audio-connection-kit
kaffeine
kdemultimedia
vbetool
gssdp
geoclue
createrepo
radeontool
PackageKit-command-not-found
obexftp
enca
festival
ntpdate
xsel
gupnp
rdesktop
fuse
ncftp
mesa-libGLU-devel
xorg-x11-apps
xscreensaver-gl-extras
gdm
xscreensaver-extras
xscreensaver-base
xterm
xorg-x11-resutils
gitk
git-gui
dia
tftp
python-crypto
boost-devel
valgrind
subversion
cvs
thunderbird-lightning
python-sqlite2
asciidoc
glibc-static
tcllib
python-psycopg*
ssh*
perl-ExtUtils-MakeMaker
perl-Net-Telnet
perl-HTML-FromText
libICE.so.6
libSM.so.6
libXmu.so.6
libXp.so.6
libXpm.so.4
libXt.so.6
help2man
cscope
ctags
git
kernel-devel
tftp-server
texlive-latex
texi2html
cmake
transfig
alsa-lib
libXScrnSaver
qt
qt-x11
libasound.so.2

libXss.so.1
libQtDBus.so.4
libQtGui.so.4
pulseaudio
alsa-plugins-pulseaudio
pulseaudio-esound-compat
pulseaudio-libs
pulseaudio-libs-glib2
pulseaudio-module-zeroconf
pulseaudio-libs-zeroconf
xmms-pulse
pulseaudio-module-gconf
wine-pulseaudio
xine-lib-pulseaudio
pulseaudio-utils
pulseaudio-module-bluetooth
padevchooser
paman
paprefs
pavucontrol
pavumeter
ncurses-devel.i686
%end
%post --log=/root/my-post-log
exec < /dev/tty3 > /dev/tty3
chvt 3
echo
echo "################################"
echo "# Running Post Configuration   #"
echo "################################"
# prevent future yum updates pulling down & install new kernels (and breaking VMware & video drivers).
echo "exclude=kernel*" >> /etc/yum.conf
# update the system
yum update -y 
# install rpm fusion repo
rpm -Uvh \
http://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-stable.noarch.rpm \
http://download1.rpmfusion.org/nonfree/fedora/rpmfusion-nonfree-release-stable.noarch.rpm
# disable rpmfusion repo, to prevent a yum update contaminating the system with rpmfusion rpms.
sed -i 's/enabled=1/enabled=0/g' /etc/yum.repos.d/rpmfusion-*
# install video drivers - enabling rpmfusion repos on the command line.
yum -y --enablerepo=rpmfusion-nonfree --enablerepo=rpmfusion-free  --enablerepo=rpmfusion-free-updates --enablerepo=rpmfusion-nonfree-updates install kmod-nvidia xorg-x11-drv-nvidia-libs.i686 xorg-x11-drv-nvidia-libs.x86_64 akmod-nvidia
# start akmods on boot
chkconfig akmods on
# add pcadmin to sudoers
echo "kevinmitnick ALL=(ALL)       ALL" >> /etc/sudoers
# set perms on vmware partitions so users in the users group can create vm's
chown :users /windowsVM && chmod 775 /windowsVM
chown :users /centosVM && chmod 775 /centosVM
# Make sure the system boots X by setting the system to run level 5
sed -i 's/id:3:initdefault:/id:5:initdefault:/g' /etc/inittab
# install openvpn & configure
wget ftp://$host/pub/VPN/OpenVPN/Linux/openvpnclient-custom-settings-1.6-3.i386.rpm
rpm -ivh openvpnclient-custom-settings-1.6-3.i386.rpm
cd /etc/openvpn/
rm client.conf-*
wget ftp://$host/pub/VPN/OpenVPN/Linux/64bit/client.conf-1
mv client.conf-1 client.conf-0
rm -f /openvpnclient-custom-settings-1.6-3.i386.rpm
# add Kevin Mitnick to group users
usermod -a -G users kevinmitnick
# pull down vmware images
cd /windowsVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/windowsVM.tar.gz
tar -xvzf windowsVM.tar.gz
cd /centosVM/
wget --user=magicinstaller --password=hacktheplanet ftp://magicinstaller:fubar@ftp.$host.com/images/centosVM.tar.gz
tar -xvzf centosVM.tar.gz
# create symlink as instructed
cd /usr/lib; ln -s libtinfo.so libtermcap.so.2
# confirm perms are set correctly
chown -R :users /windowsVM && chmod -R 775 /windowsVM
chown -R :users /centosVM && chmod -R 775 /centosVM
# swap to console 1
chvt 1

노트: 위 예제에는 실제 환경에서 제거해야 할 민감한 정보(예: 암호, 사용자명, FTP 자격증명)가 포함되어 있습니다. 배포 전 반드시 교체하세요.

%post 스크립트와 설치 후 구성

%post 섹션은 설치가 끝난 뒤 시스템에서 실행되는 스크립트를 담습니다. 이 영역에서 패키지 추가 설치, 리포지터리 설정, 권한 변경, 서비스 활성화 등을 자동으로 처리할 수 있습니다. 예제에서는 다음을 수행합니다:

  • yum 업데이트 및 특정 커널 제외(exclude) 설정
  • rpmfusion 리포지터리 설치 및 일시적 활성화로 그래픽 드라이버 설치
  • akmods 자동 시작 설정
  • 사용자 sudo 권한 추가 및 그룹 설정
  • 가상머신 이미지 다운로드 및 압축 해제
  • OpenVPN 클라이언트 설치 및 구성 파일 배치
  • 파일 시스템 권한 설정

%post는 설치 환경(네트워크 접근, 저장소 경로, 호스트 이름 변수 등)에 민감하므로 배포 전에 스크립트를 환경별로 검증해야 합니다.

실무 팁 및 모범 사례

  • 민감 정보 제거: Kickstart 파일에 평문 비밀번호, FTP 자격증명, 비밀 키를 직접 넣지 마십시오. 대신 배포 시 안전한 비밀 관리(예: 내부 패키지 서버, 구성 관리 툴)를 사용하세요.
  • 테스트 반복: 가상머신에서 여러 차례 테스트하여 파티션, 네트워크 및 패키지 충돌을 확인하세요.
  • 패키지 그룹 최소화: 불필요한 패키지 그룹은 제거하여 설치 시간을 단축하고 보안 표면을 줄이세요.
  • 드라이버 주의: 커널 관련 패키지를 고정하거나 exclude로 제어하지 않으면 서드파티 드라이버가 깨질 수 있습니다.
  • 하드웨어 다양성: 이미지 대신 Kickstart+스크립트를 사용하면 다양한 하드웨어에서 더 유연하게 동작합니다.

언제 Kickstart가 적합하지 않은가 (반례)

  • 복잡한 이미지 수준의 맞춤 드라이버가 필수인 경우(특정 펌웨어/라이선스 수락 필요)에는 이미지 기반 배포가 더 빠를 수 있습니다.
  • 완전한 디스크 복제가 필요한 경우(정확히 동일한 파티션 테이블/UUID 유지)에는 Ghost/WDS 같은 도구가 더 적합합니다.
  • 네트워크가 불안정하여 설치 중 패키지 다운로드를 안정적으로 할 수 없는 환경에서는 오프라인 리포지터리 준비가 필요합니다.

배포 전 체크리스트

  • Kickstart 파일에서 모든 평문 비밀번호/자격증명 제거
  • 파티션 및 LVM 설정이 목표 하드웨어에 맞는지 확인
  • %post 스크립트의 모든 경로와 변수($host 등)를 환경에 맞게 교체
  • 외부 리포지터리 및 URL 접근성 점검
  • 가상머신에서 최소 2회 이상 전체 설치 테스트
  • 업그레이드/커널 정책(예: exclude=kernel*)을 팀과 합의

문제 해결 가이드 (간단)

  • 설치가 멈추거나 네트워크 실패: 설치 매체 및 PXE 설정, DHCP 범위를 확인하세요.
  • 패키지 충돌/의존성 오류: 특정 패키지를 제거하거나 로컬 리포지터리를 사용해 해결하세요.
  • 그래픽 드라이버 오류: 커널 버전에 맞는 드라이버 패키지와 akmods/dkms 설정을 확인하세요.

결론

Kickstart는 대량 배포에서 강력한 자동화 도구입니다. 예제 파일을 참고해 자신의 요구에 맞게 옵션을 정리하면, 하드웨어에 구애받지 않는 유연한 설치 파이프라인을 구축할 수 있습니다. 설치 후 스크립트(%post)를 활용하면 추가 구성과 소프트웨어 배포를 자동화할 수 있습니다.

중요: VMWare Player 설치처럼 라이선스 동의가 필요한 단계는 자동화하기 어렵습니다. 해당 항목은 수동 또는 별도 자동화 방법(라이선스 키 적용 스크립트 등)을 고려하세요.

질문이나 공유는 아래 댓글로 남겨 주세요. 이 가이드는 www.netzensolutions.com에서 제공되었습니다.

요약 정리

  • Kickstart는 무인 설치 자동화를 위한 파일 기반 구성입니다.
  • %post는 설치 후 설정을 자동으로 수행합니다.
  • 민감 정보 제거와 충분한 테스트는 필수입니다.
공유하기: X/Twitter Facebook LinkedIn Telegram
저자
편집

유사한 자료

페이스북 활동 기록 완전 삭제 가이드
개인정보

페이스북 활동 기록 완전 삭제 가이드

JW Player 동영상 다운로드 가이드
튜토리얼

JW Player 동영상 다운로드 가이드

Microsoft Teams 부재중 설정 가이드
생산성

Microsoft Teams 부재중 설정 가이드

WhatsApp 삭제된 메시지 복원 가이드
메시징 가이드

WhatsApp 삭제된 메시지 복원 가이드

iCloud에서 영구 삭제된 사진 복구 가이드
데이터 복구

iCloud에서 영구 삭제된 사진 복구 가이드

CentOS/Fedora Kickstart 자동 설치 가이드
시스템 관리

CentOS/Fedora Kickstart 자동 설치 가이드