다음 이전 차례

6. 킥스타트 설정 화일

설정 화일에는 3개의 주 섹션이 있다:

  1. 시스템 정보, 예를 들면 디스크 분할 및 네트웍 설정
  2. 설치할 레드햇 패키지
  3. 설치-후-쉘명령

우리가 여기서 다루지 않는 부분이 있을 수도 있지만 작동은 할 것이다. 좀더 자세한 정보를 원한다면 레드햇 배포본 씨디롬 또는 레드햇 미러 사이트의 루트 디렉토리 아래의 misc/src/install/ks.samp와 doc/README.ks 등의 킥스타트 설정 샘플을 참고하기 바란다.

6.1 시스템 정보

필자가 사용한 사용가능한 지시자는 다음과 같다:

lang

언어 설정. 예를 들어 영어의 경우

lang en
network

네트웍 설정. 예를 들어 BOOTP/DHCP를 사용하려면

network --bootp
nfs

NFS 서버와 설치할 매체의 위치. 예를 들어

nfs --server chicken.swedish-chef.org /mnt/cdrom
chicken.swedish-chef.org를 NFS 서버로 사용하고 레드햇 배포본을 /mnt/cdrom에 마운트한다.

keyboard

키보드 타입 선택. UK 키보드를 사용한다면

keyboard uk
zerombr

마스터 부트 레코드(MBR) 내용 비우기 - MBR에 존재하는 시스템 부트 로더를 지운다.

clearpart

존재하는 파티션 지우기 - 예를 들어 설치에 앞서 디스크 상의 파티션을 모두 지우려면 다음과 같이 해준다.

clearpart -all
part

디스크 분할. 예를 들어 500MB의 루트 화일 시스템을 만들기 위해서는

part / --size 500
install

레드햇 리눅스를 새롭게 설치한다.

mouse

사용하는 마우스 설정. 예를 들어 PS/2 또는 "bus mouse" 호환 기종이라면

mouse ps/2
timezone

시간대 설정. 예를 들어 영국에서 시간대를 설정한다면

timezone --utc Europe/London
rootpw

초기 root 패스워드 설정. 이 때의 패스워드는 이미 암호화된 패스워드가 사용된다.

rootpw --iscrypted XaacoeGPmf/A.
lilo

LILO 부트 로더 설치. MBR에 설치하려 한다면

lilo --location mbr
%packages

설치할 패키지 - 아래를 보기 바란다.

%post

설치 후 실행할 쉘 명령 - 아래를 보기 바란다.

킥스타트가 레드햇 배포판을 찾을 디렉토리는 플랫폼을 위한 레드햇 배포판 트리구조를 갖고 있는 RedHat이라는 하위디렉토리를 갖고 있어야 한다. 위의 예제에서는 다음과 같은 화일과 디렉토리를 볼 수 있다.

/mnt/cdrom/RedHat
/mnt/cdrom/RedHat/base
/mnt/cdrom/RedHat/contents
/mnt/cdrom/RedHat/i386
/mnt/cdrom/RedHat/instimage
/mnt/cdrom/RedHat/RPMS
/mnt/cdrom/RPM-PGP-KEY

네트웍으로 설치하지 않고 CD-ROM으로 설치를 하려한다면 그 내용은 다음과 같이 될 것이다.

RedHat
RedHat/base
RedHat/contents
RedHat/i386
RedHat/instimage
RedHat/RPMS
RPM-PGP-KEY

다양한 아키텍쳐를 위한 레드햇 배포판을 가지고 있다면 각각의 배포판은 서브 디렉토리 아래에 같은 화일을 갖고 있음을 알아두어야 할 것이다.(예를 들어 NFS 서버상에서 아키택쳐별 버전이 하나 이상이어서 하나의 CD-ROM에 담을 수 없을 경우)

alpha/RPM-PGP-KEY
i386/RPM-PGP-KEY
sparc/RPM-PGP-KEY

i386/Redhat/i386과 같은 아키텍처/Redhat/아키텍처의 형태를 갖는 화일이 있어야 한다.

자신만의 암호화된 패스워드를 만들고 싶다면, Perl을 이용하면 매우 쉽다.

% perl -e 'print crypt("schmurrdegurr", "Xa") . "\n";'p

다음은 테스트는 해보지 않았지만 논의할 만한 가치가 있는 다른 옵션이다:

cdrom

네트웍 설치가 아닌 CD-ROM 설치

device

장치에 대한 정확한 지정 예;

device ethernet 3c509 --opts "io=0x330, irq=7"

device의 또다른 값으로는 SCSI 컨트롤러를 위한 scsi와 각종 CD-ROM 드라이브를 위한 cdrom이 있다.

upgrade

새로 설치하지 않고 기존의 설치된 시스템을 업그레이드

xconfig

X 윈도우 서버 설정, 그래픽 카드와 모니터 설정

xconfig --server "Mach64" --monitor "tatung cm14uhe"

마지막의 항목에 대해서는 깊이 있게 연구하지 않았다. 왜냐면 킥스타트를 적용할 머신의 콘솔에서 X를 실행하려 하지 않았기 때문이다. 킥스타트에서 xconfig를 실행한다는 것은 다소 색다르다고 들었다. 하지만 Xconfigurator를 통해서 명령행으로 같은 기능을 사용할 수 있다. 따라서 이 부분은 후-설치- 스크립트에서 하는 것이 가장 좋을 것이다.

다음은 킥스타트 설정 화일의 처음부분의 모든 항목을 입력했을 때의 설정 파일의 내용이다.

lang en
network --static --ip 198.168.254.253 --netmask 255.255.255.0
  --gateway 198.168.254.1 --nameserver 198.168.254.2
nfs --server chicken.swedish-chef.org /mnt/cdrom
keyboard uk
zerombr yes
clearpart --all
part / --size 500
part swap --size 120
install
mouse ps/2
timezone --utc Europe/London
rootpw --iscrypted XaacoeGPmf/A.
lilo --location mbr

레드햇 문서중의 몇몇 문서는 실무에서 실제로 작동하지 않는 network 명령의 옵션에 대해 설명하고 있다는 것을 알아두기 바란다: network --option. 올바른 사용법은 network 뒤에 --static이나 --bootp 또는 --dhcp를 사용하는 것이다. BOOTP와 DHCP는 다른 코드를 사용하므로 두 옵션이 다르다는 것을 알아두기 바란다.

part 지시자에 지정한 파티션 크기보다 늘일수 있도록 해주는 매개변수인 --grow를 추가할 수도 있다. 파티션이름 다음에 --grow를 추가하는 것이다.

6.2 설치할 패키지

킥스타트 설정 화일의 패키지 섹션의 시작은 %packages 지시자로 시작을 한다. 이 지시자에는 두가지 형태의 패키지 구분자가 따라온다. 버전과 플랫폼 정보를 제외한 설치될 패키지의 이름과 그룹이름으로 주어지는 설치될 패키지의 그룹의 형태가 그것이다.

다음은 킥스타트 설정 화일을 위한 패키지 선택의 예이다.

%packages
@ Base
netkit-base
bind-utils
ncftp
rdate
tcp_wrappers
traceroute
cmu-snmp

그렇다면 이 그룹들은 무엇인가? 레드햇 배포판의 최상위 디렉토리의 base/comps 화일에 기본으로 정의된 그룹이 있다. 다음은 글을 쓰고 있는 현재까지의 그룹의 목록이다.

이것은 수동 설치를 할 때 볼 수 있는 다양한 설정과 관련이 있다는 점을 알 수 있을 것이다. 한 그룹을 선택했을 때 또 다른 그룹을 설정하게 되면 중복이 되는 패키지가 있다는 점과 이러한 중복의 문제를 일으키지 않고 여러 그룹들을 설치할 수 있다는 점을 알아두기 바란다. comps 화일에 나열된 각 그룹의 항목은 다음과 같은 형태를 갖는다.

0 Extra Documentation
sag
lpg
howto
faq
man-pages
end

첫 줄의 그룹이름 앞의 1은 기본 설치되는 그룹을 나타낸다. 자신만의 그룹을 생성하거나 기존의 그룹을 편집하여 재정의함으로써 리눅스 설치를 최적화할 수 있다.

6.3 설치-후-쉘명령

이 기능이 아마도 무엇보다도 훌륭한 기능이리라 생각된다. 수동으로 설치시 이와 같은 기능이 없을 것이다. 여기에 디스크 분할, 패키지 설치등의 주된 설치 과정 후에 실행되어질 쉘 수준의 명령을 지정할 수 있다.

이 섹션의 시작은 킥스타트 설정화일에서 %post 라는 지시자로 구별된다. 지시자 다음에는 새로 설치한 리눅스 시스템에 설치된 유틸리티를 이용할 수 있다. 예를 들면

%post
ln -s /etc/rc.d/init.d /etc/init.d
ln -s /etc/rc.d/rc.local /etc/rc.local
ln -s /usr/bin/md5sum /usr/bin/md5
ln -s /usr/bin/perl /usr/local/bin/perl
chmod ug-s /bin/linuxconf
mkdir /var/tmp/tmp
perl -spi -e 's!image=/boot/vmlinuz-.*!image=/boot/vmlinuz!' /etc/lilo.conf
rm /etc/rc.d/rc*.d/*sendmail

또한 다음과 같이 입/출력 리다이렉션을 사용할 수 있다:

cat << EOF >>/etc/passwd
squid:*:102:3500:Squid Proxy:/usr/squid:/bin/bash
EOF

cat << EOF >>/etc/group
cache:x:3500:
EOF

run-time 시작 스크립트 수정:

cat << EOF >>/etc/rc.local
echo 8192 > /proc/sys/kernel/file-max
echo 32768 > /proc/sys/kernel/inode-max

[ -x /usr/sbin/sshd ] && /usr/sbin/sshd
[ -x /usr/sbin/cfd ] && /usr/sbin/cfd

EOF

crontab 내용 설정 :

cat << EOF >/tmp/crontab.root
# Keep the time up to date
0,15,30,45 * * * * /usr/sbin/ntpdate -s eggtimer 2>&1 >/dev/null
# Recycle Exim log files
1 0 * * * /usr/exim/bin/exicyclog
# Flush the Exim queue
0,15,30,45 * * * * /usr/exim/bin/exim -q
EOF

crontab /tmp/crontab.root
rm /tmp/crontab.root

자신이 만든 다른 RPM 화일도 설치할 수 있다:

rpm -i ftp://chicken.swedish-chef.org/rpms/squid.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/ssh.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/exim.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/cfengine.rpm
rpm -i ftp://chicken.swedish-chef.org/rpms/linux.rpm

ssh-keygen -b 1024 -f /etc/ssh_host_key -N ""
depmod -a

실행하고자 하는 명령을 담은 자신만의 RPM을 만듦으로써 같은 효과를 얻을 수 있다는 점을 알아두기 바란다. - 문서의 후반부에서 언급될 것이다. 신중히 선택한 이름을 주어 자신이 만든 RPM을 처음으로 설치(예: 'aaa'로 시작하는 이름)하거나 맨 마지막(예: 'zzz'로 시작하는 이름)에 설치되도록 할 수 있다.

root crontab 목록을 만드는 비교적 수월한 방법은 crontab 내용을 화일로 만들어 /etc밑의 cron.hourly, cron.daily, cron.weekly, cron.monthly의 이름의 디렉토리 아래에 위치시키는 것이라는 점을 알아두기 바란다.

자신만의 RPM을 만드는 것에 대한 자세한 정보는 부록 B에서 얻을 수 있다.


다음 이전 차례