次のページ 前のページ 目次へ

7. KickStart の設定ファイル

設定ファイルには 3 つの主なセクションがあります:

  1. システム情報(ディスクのパーティション情報やネットワークの設定)
  2. インストールする RedHat のパッケージ
  3. インストール後に実行するシェルのコマンド

ここで説明しないものも他にいくつかありますが,それも動作すると 思います.詳しい情報については, misc/src/install/ks.samp にある KickStart の設定例と doc/README.ks を見てください.これらのファイルは,CD-ROM また は RedHat のミラーサイト内の RedHat ディストリビューションのトップディ レクトリにある i386 ディレクトリにあります.

7.1 システム情報

利用可能なディレクティブのうち,筆者が使っているものを以下に示します:

lang

言語の設定(英語など)

lang en
network

ネットワークの設定(BOOTP や DHCP の使用など)

network --bootp
nfs

インストール元となる NFS サーバとディレクトリ.指定例は以下:

nfs --server chicken.swedish-chef.org /mnt/cdrom
NFS サーバ chicken.swedish-chef.org を使い,RedHat ディストリ ビューションを /mnt/cdrom ディレクトリからマウントします.
keyboard

キーボードの種類の設定(例えばイギリス用キーボード等)

keyboard uk
zerombr

MBR(Master Boot Record) を消去します.既存のオペレーティ ングシステムのブートローダをディスクから消去します.

clearpart

既存のパーティションを消去します.例えば,インストール 前に既存のディスクパーティションを全て消す等の場合です.

clearpart --all
part

ディスクのパーティションを切ります.例えば,ルートファイルシステ ムに 500MB を割り当てます.

part / --size 500
install

RedHat Linux を新規インストールします.

mouse

使用するマウスを設定します.例えば,PS/2 または PS/2 互換の 「バスマウス」では以下のように設定します.

mouse ps/2
timezone

タイムゾーンを設定します.例えば,イギリスのローカル時刻 は以下のように設定します.

timezone --utc Europe/London
rootpw

root の初期パスワードを設定します.これには予め暗号化した パスワード文字列を与えます.

rootpw --iscrypted XaacoeGPmf/A.
lilo

ブートローダ LILO をインストールします.マスターブートレコー ド(Master Boot Record, MBR)にインストールするには以下のように指定しま す.

lilo --location mbr
%packages

インストールするパッケージ.詳しくは後述します.

%post

インストール後に実行するシェルのコマンド.詳しくは後述しま す.

KickStart が RedHat ディストリビューションを探すディレクトリには, RedHat という名前のサブディレクトリが必要だということに注意 してください.このディレクトリ内には,該当プラットフォーム用の 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

複数アーキテクチャ用の RedHat ディストリビューションがある場合( NFS サーバ上などにあるはずです.複数アーキテクチャのディストリビューション は 1 枚の CD-ROM に収まりません)には,それぞれのディストリビューション には,以下のようなサブディレクトリの下に同じ名前のファイル群やディレク トリ群があると思います:

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

architecture/Redhat/architecture というファイルが存 在しなければなりません(例: i386/Redhat/i386).

暗号化したパスワード文字列を作るのは,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"

最後のオプションについてはあまり詳しく調べていません.というのも,筆者 は KickStart でインストールしたマシンのコンソールで X を実行する予定が ないからです.筆者は KickStart 内で xconfig を実行すると動作 がちょっと変になると聞いていますが,同じ機能は Xconfigurator を使っ てコマンドラインから実現できます.したがって,X の設定はインストール後 のスクリプトに残しておくのが良いでしょう.

KickStart の設定ファイルの最初の部分を示します.このファイルは,先程説 明したオプションを組み合わせて作ります:

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

RedHat に関する書籍の一部には,実際には動作しない network ディ レクティブ(network --option)を呼び出すような記述を行っている ものがあるので注意してください.正しい呼び出し方は,network の後に --static, --bootp, --dhcp のいずれか を記述します.BOOTP オプションと DHCP オプションは別のものであることを 覚えておいてください.両者は別のコードで書かれているくらい違っています.

part ディレクティブには引き数 --grow を追加すること ができます.この引き数は,指定したサイズよりもパーティションを大きくし てよいことを指示します.この指定が意味を持つのはパーティションが 1 つ あり,これに --grow というタグが付いている場合だけでしょう.

7.2 インストールするパッケージ

KickStart の設定ファイルの packages セクションの先頭には, %packages ディレクティブだけを書いた行を置きます.この後には 2 つのタイプのうちの 1 つあるいは両方のパッケージ指定子を書きます. それぞれのパッケージは,RPM の名前(バージョンとプラットフォームの情報 は含めません)を指定することによってインストールすることができます.ま たパッケージのグループは,グループの名前を指定すればインストールできま す.

KickStart の設定ファイルの packages セクションの設定例を以下 に示します:

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

さて,これらのグループは何でしょうか? たくさんのグループがデフォルトで 定義されていますね.これは RedHat ディストリビューションのトップレベル ディレクトリにある base/comps というファイルに書かれています. 本ドキュメントの執筆の時点におけるグループを示します:

このリストは手動インストールの時にユーザが尋ねられる各種設定に対応して いることにお気づきかと思います.一部のパッケージは複数のグループに含ま れていますが,それらのグループを同時にインストールしても問題はありませ ん.comps リスト中の各グループエントリは以下のようになってい ます:

0 Extra Documentation
sag
lpg
howto
faq
man-pages
end

名前(上のリストの最初の行)の隣が 1 であるグループは,デフォル トでインストールされるものとして選択されます.このファイルを編集して独 自のグループを作ることや,既存のグループを再定義することにより,Linux のインストール処理をさらにカスタマイズできます.

7.3 インストール後のシェルコマンド

この機能が多分最も特筆すべきものであり,手動インストールにはこれ直接に 対応するものはありません.ここで行えることはシェルのコマンド列を指 定することであり,実行されるのはインストールの主要な部分(ディスクのパー ティション分割,パッケージインストール等)が終わった後になります.

KickStart の設定ファイル中において,このセクションの先頭の印は %post ディレクティブです.これ以降の部分では,新しく構築した Linux システムにインストールされているユーティリティを全て使用すること ができます.指定例を以下に示します:

%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

I/O リダイレクションやヒアドキュメントを使うこともできます:

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

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

以下に示す例は,システムの起動スクリプトを修正するものです:

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 エントリを設定で危険が比較的小さい方法は,エントリを /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly にファイルとして作成することです.

独自の RPM パッケージを作るための詳しい情報については付録 B をご覧くだ さい.


次のページ 前のページ 目次へ