設定ファイルには 3 つの主なセクションがあります:
ここで説明しないものも他にいくつかありますが,それも動作すると 思います.詳しい情報については, misc/src/install/ks.samp にある KickStart の設定例と doc/README.ks を見てください.これらのファイルは,CD-ROM また は RedHat のミラーサイト内の RedHat ディストリビューションのトップディ レクトリにある i386 ディレクトリにあります.
利用可能なディレクティブのうち,筆者が使っているものを以下に示します:
言語の設定(英語など)
lang en
ネットワークの設定(BOOTP や DHCP の使用など)
network --bootp
インストール元となる NFS サーバとディレクトリ.指定例は以下:
nfs --server chicken.swedish-chef.org /mnt/cdrom
NFS サーバ chicken.swedish-chef.org を使い,RedHat ディストリ
ビューションを /mnt/cdrom ディレクトリからマウントします.
キーボードの種類の設定(例えばイギリス用キーボード等)
keyboard uk
MBR(Master Boot Record) を消去します.既存のオペレーティ ングシステムのブートローダをディスクから消去します.
既存のパーティションを消去します.例えば,インストール 前に既存のディスクパーティションを全て消す等の場合です.
clearpart --all
ディスクのパーティションを切ります.例えば,ルートファイルシステ ムに 500MB を割り当てます.
part / --size 500
RedHat Linux を新規インストールします.
使用するマウスを設定します.例えば,PS/2 または PS/2 互換の 「バスマウス」では以下のように設定します.
mouse ps/2
タイムゾーンを設定します.例えば,イギリスのローカル時刻 は以下のように設定します.
timezone --utc Europe/London
root の初期パスワードを設定します.これには予め暗号化した パスワード文字列を与えます.
rootpw --iscrypted XaacoeGPmf/A.
ブートローダ LILO をインストールします.マスターブートレコー ド(Master Boot Record, MBR)にインストールするには以下のように指定しま す.
lilo --location mbr
インストールするパッケージ.詳しくは後述します.
インストール後に実行するシェルのコマンド.詳しくは後述しま す.
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
その他のオプション(および実際には使われないオプション)を示します.筆者 は試していません:
ネットワークではなく CD-ROM からインストールします.
デバイスの詳細事項を明示的に宣言します.指定例を以下に示し ます.
device ethernet 3c509 --opts "io=0x330, irq=7"
device
オプションに指定できる値は,SCSI コントローラ用の
scsi
, 独自 CD-ROM ドライブ用の cdrom
です.
新規インストールではなく,既にインストールしているものを 更新します.
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
というタグが付いている場合だけでしょう.
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 のインストール処理をさらにカスタマイズできます.
この機能が多分最も特筆すべきものであり,手動インストールにはこれ直接に 対応するものはありません.ここで行えることはシェルのコマンド列を指 定することであり,実行されるのはインストールの主要な部分(ディスクのパー ティション分割,パッケージインストール等)が終わった後になります.
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 をご覧くだ さい.