Linuxmaniaトップ活用ガイドLinux を自動インストールする方法 (Kickstart)

Linuxmania:活用ガイド


■ Linux を自動インストールする方法 (Kickstart)


Kickstart は、Linux を自動インストールするための仕組みです。
複数の PC に同じ構成の Linux を繰り返しインストールする際に有効です。

Kickstart 定義ファイルはテキストで書かれており、エディタで編集可能です。


手順


1. Kickstart はどうやって使うのか?


 Kickstart を利用するには、Linux インストール開始時に
 カーネル引数として 「ks=…」オプションを与え、
 メディアやネットワークから Kickstart 定義ファイルを読み込ませます。
 
 Kickstart の読み込みには次のメディアが利用可能です。


1.1. フロッピーディスク


 インストールDVD で起動後、[Tab]キーを押して次のオプションを追加します。


ks=floppy


 ※フロッピーディスクの最上位ディレクトリに、ks.cfg という名前で Kickstart 定義ファイルを
  あらかじめ配置しておきます。


1.2 ハードディスク、USBメモリ


 インストールDVD で起動後、[Tab]キーを押し、
 「ks=hd:<パーティション名>:<Kickstart定義ファイルのパス>」を追加します。
 
 たとえば、USBメモリの最上位ディレクトリに ks.cfg を配置した場合は次のようになります。


ks=hd:sdb1:/ks.cfg


 ※Linux では、USBメモリもSCSIハードディスクの一種として認識されることがあります


1.3 ネットワーク (HTTP / FTP)


 インストールDVD で起動後、[Tab]キーを押し、
 「ks=<プロトコル>://<サーバのアドレス>/<Kickstart定義ファイルのパス>」を追加します。
 
 たとえば、HTTP/FTPサーバの最上位ディレクトリに ks.cfg を配置した場合は次のようになります。


ks=http://192.168.0.200/ks.cfg
ks=ftp://192.168.0.200/ks.cfg


1.4 CD-ROM


 起動用 CD-ROM を作成し、Kickstart 起動後にインストールディスクに交換します。


$ cp -r <DVDへのパス>/isolinux/ <作業パス>
$ cd <作業パス>
$ cp <Kickstart定義ファイル> isolinux/ks.cfg
$ chmod u+w isolinux/*
$ mkisofs -o file.iso -b isolinux.bin -c boot.cat -no-emul-boot \
      -boot-load-size 4 -boot-info-table -R -J -v -T isolinux/


 作成された file.iso を CD-R(RW) や DVD-R(RW) に書き込みます。
 
 この起動用 CD-ROM から起動する場合には、次のオプションを指定します。


ks=cdrom:



2. Kickstart 定義ファイルの書き方


 Kickstart 定義ファイルはテキストファイルです。
 大きくわけて次の3つのセクションから構成されます。
 
 (1) コマンドセクション
 (2) パッケージセクション (%packages)
 (3) スクリプトセクション (%pre、%post)
 
 インストール時の設定が /root/anaconda-ks.cfg に保存されていますので、
 最初はこのファイルを雛形にするとよいでしょう。


2.1. コマンドセクション


 ファイルの一番最初に書く必要があります。
 
 新規/上書きインストールの選択やインストールメディアの指定、
 パーティションの分割方法やタイムゾーンの指定などを行います。


2.2. パッケージセクション


 コマンドセクションの次に書く必要があります。
 「%packages」行からスクリプトセクションまでの間、
 スクリプトセクションがない場合はファイル末尾まで、
 パッケージセクションとみなされます。
 
 インストールしたいパッケージとパッケージグループを指定します。
 パッケージ名を逐一書くことも可能ですが、複数のパッケージを集めた
 パッケージグループ名を利用するとより簡単に書くことができます。
 
 @name : パッケージグループ name をインストール
 +name : パッケージ name をインストール
 -name : パッケージ name をインストールしない
 
 インストールしたくないパッケージを除外することも可能です。


2.3. スクリプトセクション


 ファイルの末尾に書く必要があります。
 「%pre」スクリプトにはインストール開始前に実行したいスクリプト、
 「%post」スクリプトにはインストール終了後に実行したいスクリプトを
 書くことができます。
 
 スクリプトのインタプリタには通常は Bash が利用されますが、
 他のインタプリタを指定することも可能です。(例: Python)
 
 「%pre」スクリプトは chroot されない状態で、
 「%post」スクリプトは chroot された状態で実行されます。
 ご注意下さい。



3. Kickstart コマンドセクション


3.1. 画面モード


3.1.1. グラフィカル / テキストモード選択 (graphical / text)


 インストール時の画面モードを選択します。
 書式は「graphical」または「text」です。
 省略時のデフォルトはグラフィカルモードです。


# グラフィカルモードでインストール 
graphical

# テキストモードでインストール
text


3.1.2. VNC の利用 (vnc)


 インストール状況を VNC 経由でリモートで表示できるようにします。
 
 ※ネットワークを有効にする必要があります。(network オプション)


# マシン上で VNC サーバを起動する
vnc --password=hogehoge

# リモートの VNC ビューワに接続する
vnc --host=192.168.0.200 --port=12345 --password=hogehoge


3.1.3. 対話モード (interactive / autostep)


 対話モードでインストールします。Kickstart 定義ファイルで指定した値がデフォルトとして使われます。
 書式は「interactive」です。
 
 「autostep」コマンドを併用すると、自動的に次の画面に進むようになります。
 「--autoscreenshot」オプションを利用すると自動的にスクリーンショットを保存します。


# 対話モードでインストールを行う
interactive

# 対話モードを自動的に進行する
interactive
autostep

# 自動的にスクリーンショットを保存しながら進行する
interactive
autostep --autoscreenshot



3.2. インストール


3.2.1. インストール方式 (install / upgrade)


 インストール方式を選択します。
 新規インストールは「install」、上書きインストールは「upgrade」です。


# 新規インストールを行う
install

# 上書きインストールを行う
upgrade


3.2.2. インストールメディア (cdrom / harddrive / nfs / url)


 インストールに利用するメディアを選択します。
 CDROM、ハードディスク、NFS、HTTP/FTP が利用可能です。


3.2.2.1. CD-ROM または DVD (cdrom)


 CD-ROM ドライブからインストールします。
 書式は「cdrom」です。


# CD-ROM または DVD からインストールする
cdrom


3.2.2.2. ハードディスク (harddrive)


 ローカルハードディスク上の vfat か ext2 ファイルシステム上にあるインストールツリーから
 インストールします。
 書式は「harddrive --partition=<パーティション名> --dir=<ツリーのディレクトリ>」です。


# 2台目のハードディスク上のツリーを利用してインストール
harddrive --partition=hdb2 --dir=/tmp/install-tree


3.2.2.3. NFS (nfs)


 NFSサーバ上のインストールツリーを利用してインストールします。
 書式は「nfs --server=<サーバのアドレス> --dir=<ツリーのディレクトリ>」です。


# NFS サーバ上のツリーを利用してインストール
nfs --server=192.168.0.200 --dir=/tmp/install-tree


3.2.2.4. HTTP / FTP サーバ (url)


 HTTP または FTP 経由でリモートサーバ上のインストールツリーからインストールします。
 書式は「url --url http://<サーバのアドレス>/<ディレクトリ>」または
 「url --url ftp://<ユーザ名>:<パスワード>@<サーバのアドレス>/<ディレクトリ>」です。


# HTTP 経由でインストールする
url --url http://192.168.0.200/install-tree

# FTP 経由でインストールする
url --url ftp://foobar:hogehoge@192.168.0.200/install-tree


3.2.3. 追加の yum リポジトリ (repo)


 パッケージインストール用の追加リポジトリを指定します。
 書式は「repo --name=<リポジトリID> --baseurl=<リポジトリの URL>」または
 「repo --name=<リポジトリID> --mirrorlist=<ミラーリストの URL>」です。
 
 ※「--baseurl」と「--mirrorlist」はどちらか一方だけしか設定できません。
 
 追加リポジトリは複数指定することができます。


# livna リポジトリを追加する (--baseurl)
repo --name=livna --baseurl=http://rpm.livna.org/repo/10/i386/

# rpmfusion-nonfree リポジトリを追加する (--mirrorlist)
repo --name=rpmfusion-nonfree --mirrorlist=http://mirrors.rpmfusion.org/mirrorlist?repo=nonfree-fedora-10&arch=i386



3.3. ロケール


3.3.1. 言語 (lang)


 言語ロケールを指定します。オプションはありません。
 日本語は 「ja_JP.UTF-8」です。


# 言語に日本語を指定する
lang ja_JP.UTF-8


3.3.2. キーボード配列 (keyboard)


 キーボード配列を指定します。オプションはありません。
 一般的な日本語キーボードは「jp106」です。


# 日本語106キーボードを利用する
keyboard jp106


3.3.3. タイムゾーン (timezone)


 タイムゾーンを指定します。日本標準時は「Asia/Tokyo」です。
 「--utc」オプションを設定すると、ハードウェア時計に世界標準時が設定されます。


# タイムゾーンを日本標準時に設定する
timezone Asia/Tokyo



3.4. ユーザ設定


3.4.1. 管理者パスワード設定 (rootpw)


 管理者ユーザ (root) のパスワードを設定します。
 「--iscrypted」オプションを利用すると、暗号化文字列を指定できます。


# 管理者ユーザのパスワード「password」を設定
rootpw password

# 管理者ユーザのパスワード「password」を暗号化文字列で指定
rootpw  --iscrypted $6$4U7XKciiUV8kPvRp$6fN3NWyQgj.Gb1GSYjs(※後略)


3.4.2. ユーザ作成 (user)


 新たなユーザを作成します。
 
 ※省略すると一般ユーザが1人も作られません。
  Fedora 10 ではグラフィカルログインが不可能になってしまいますのでご注意下さい。
 
 user コマンドには、次のオプションがあります。


3.4.2.1. ユーザ名 (--name)


 ユーザ名を指定します。(必須オプションです)
 書式は「--name=<ユーザ名>」です。


# ユーザ foobar を作成
user --name=foobar


3.4.2.2. 追加で所属するグループ (--groups)


 デフォルト以外に所属するグループ名を指定します。
 書式は「--groups=<グループ名リスト>」で、グループ名はコンマ区切りで指定します。


# ユーザ foobar を他のグループにも所属させる
user --name=foobar --groups=wheel,mock


3.4.2.3. ホームディレクトリ (--homedir)


 ユーザのホームディレクトリを指定します。
 書式は「--homedir=<ホームディレクトリ>」で、
 指定がない場合は /home/<ユーザ名> が利用されます。


# ユーザ foobar のホームディレクトリを /home2 以下に置く
user --name=foobar --homedir=/home2/foobar


3.4.2.4. パスワード (--password、--iscrypted)


 ユーザのパスワードを指定します。
 書式は「--password=<パスワード文字列>」で、
 「--iscrypted」オプションを併用すると暗号化文字列を利用可能です。
 
 ※パスワード指定がない場合、アカウントはデフォルトでロックされます。


# ユーザ foobar のパスワードを指定する
user --name=foobar --password=hogehoge

# ユーザ foobar のパスワードを暗号化文字列で指定する
user --name=foobar --iscrypted --password=$6$fIV4gnJf$oyUHBEwK3zYeYop7mTlRrCowg2K/(※後略)


3.4.2.5. ログインシェル (--shell)


 ユーザのログインシェルを指定します。
 書式は「--shell=<シェル>」で、指定しない場合はシステムのデフォルトシェルが利用されます。


# ユーザ foobar のログインシェルを tcsh にする
user --name=foobar --shell=/bin/tcsh


3.4.2.6. ユーザID (--uid)


 ユーザの UID を指定します。
 書式は「--uid=<ユーザID>」で、指定しない場合は非システムUIDのうち最小のものが使われます。


# ユーザ foobar の UID を 1000 にする
user --name=foobar --uid=1000



3.5. ディスク


3.5.1. ブートローダ指定 (bootloader)


 ブートローダのインストール方法を指定します。
 「--append」カーネルパラメータを指定します。
 「--location」ブートローダを書き込む場所を指定します。
 (「mbr」マスターブートレコード、「partition」/boot パーティションの先頭)
 「--password」GRUB パスワードを指定します。
 「--md5pass」GRUB パスワードを MD5形式で指定します。


# MBR にブートローダを書込む
bootloader --location=mbr --append="rhgb quiet"


3.5.2. パーティション情報を削除 (clearpart)


 新しいパーティションを作成する前に、システムからパーティションを削除します。
 「--all」全てのパーティションが削除されます。
 「--drives」パーティションを削除するドライブを指定します。
 「--linux」Linux パーティションだけを全て消去します。
 「--none」パーティションを削除しません。
 省略時のデフォルトは「--none」(削除しない)です。


# 1番目のドライブ上のパーティションを全て削除する
clearpart --drives=sda --all

# 1、2番目のドライブ上の Linux パーティションを削除する
clearpart --drives=sda,sdb --linux


3.5.3. 指定したディスクを無視 (ignoredisk)


 指定したディスクをインストーラに無視させます。
 書式は「ignoredisk --drives=<ドライブのリスト>」です。
 (ドライブは sda、sdb、hda…などデバイス名を指定します)


# 2台目のハードディスクを無視させる
ignoredisk --drives=sdb


3.5.4. パーティションの自動作成 (autopart)


 自動的にパーティションを作成します。
 書式は「autopart」です。
 
 ※「part」コマンドにより一部を再定義することができます。


# パーティションを自動作成する
autopart


3.5.5. パーティション作成 (part)


 パーティションを作成します。
 書式は「part <マウントポイント> <オプション>」です。
 マウントポイントには、「ディレクトリ名(/、/usr、/home など)」
 「swap」(スワップ)、「raid.<ID>」(ソフトウェア RAID)、
 「pv.<ID>」(LVM 物理ボリューム) などがあります。
 
 主なオプションは、
 「--size」パーティションの最小サイズを MB 単位で入力します。
 「--grow」最大許容量または指定サイズまで拡張するよう指示します。
 「--maxsize」パーティションを拡張する際の最大サイズを指定します。
 「--onpart」「--usepart」既に存在するパーティションを利用します。
 「--noformat」--onpart オプションと併用します。パーティションをフォーマットしません。
 「--ondisk」「--ondrive」特定のディスク上にパーティションを作成します。
 「--asprimary」プライマリパーティションにするよう指示します。
 「--fstype」パーティションのファイルシステム形式を指定します。


# サイズ 200MB の /boot パーティションを作成
part /boot --fstype=ext3 --size=200 --ondisk=sda --asprimary

# LVM 物理ボリューム を最大限度まで作成
part pv.1 --size=0 --grow --ondisk=sda

# 既存のパーティションをフォーマットせずに利用する
part /home --onpart=sda5 --noformat


3.5.6. 論理ボリュームグループ作成 (volgroup)


 LVM 論理ボリュームグループを作成します。
 書式は「volgroup <グループ名> <パーティション名> <オプション>」です。
 
 「--noformat」既存のボリュームグループをフォーマットせずに利用します。
 「--useexisting」既存のボリュームグループをフォーマットして利用します。
 「--pesize」物理拡張のサイズを指定します。
 
 ※論理ボリュームグループを作成するには、まず「part」コマンドで物理ボリュームを
  作成しておく必要があります。


# 3.5.5. で作成した物理ボリュームを利用する
volgroup VolGroup00 --pesize=32768 pv.1

# 既存の論理ボリュームグループをフォーマットして利用する
volgroup VolGroup00 --useexisting


3.5.7. 論理ボリューム作成 (logvol)


 論理ボリュームグループ上に論理ボリュームを作成します。
 書式は、「logvol <マウントポイント> --vgname=<ボリュームグループ名>
       --size=<サイズ> --name=<論理ボリューム名> <オプション>」です。
 
 「--noformat」既存の論理ボリュームをフォーマットせずに利用します。
 「--useexisting」既存の論理ボリュームをフォーマットして利用します。
 「--fstype」ファイルシステム形式を指定します。ext2、ext3、vfat、swap が指定可能です。
 「--grow」最大許容量、または指定された最大サイズまで論理ボリュームを拡張します。
 「--maxsize」論理ボリュームを拡張する際の最大限度を指定します。
 「--percent」論理ボリュームのサイズをボリュームグループ内の空き領域の%で指定します。


# 論理ボリュームを最大限度まで作成する
logvol / --fstype=ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow

# 論理ボリュームを指定サイズで作成する
logvol swap --fstype=swap --name=LogVol01 --vgname=VolGroup00 --size=4096

# 既存の論理ボリュームをフォーマットせずに利用する
logvol /home --name=Home --vgname=VolGroup00 --noformat


3.5.8. ソフトウェア RAID デバイス作成 (raid)


 ソフトウェア RAID デバイスを作成します。
 詳細は「キックスタートのオプション」raid 項目、および「高度なパーティションの例」をご覧下さい。


3.5.9. パーティション構成の例


# パーティションを自動作成する
clearpart --all --drives=sda
autopart

# 標準インストールと同じ構成で作成する
clearpart --linux --drives=sda
part /boot --fstype ext3 --size=200 --ondisk=sda
part pv.1 --size=0 --grow --ondisk=sda
volgroup VolGroup00 --pesize=32768 pv.1
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=1024 --grow --maxsize=4096
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow



3.6. セキュリティ


3.6.1. ファイアウォール (firewall)


 ファイアウォールの設定を行います。
 「--disable」「--disabled」を指定するとファイアウォールが無効になります。
 「--enable」「--enabled」を指定するとファイアウォールが有効になります。
 「--trust」オプションを指定すると、信頼するインターフェイスを設定できます。
 「--ssh」「--telnet」「--smtp」「--http」「--ftp」対応するポートを開きます。
 「--port」指定したポートを開きます。


# ファイアウォールを無効にする
firewall --disabled

# ファイアウォールを有効にする
firewall --enabled

# ファイアウォールを有効にし、インターフェイス eth1 を信頼する
firewall --enabled --trust eth1

# ファイアウォールを有効にし、SSH と HTTP と FTP のポートを開く
firewall --enabled --ssh --http --ftp

# ファイアウォールを有効にし、TCP 12345 番ポートを開く
firewall --enabled --port=12345:tcp


3.6.2. 認証設定 (authconfig)


 認証に関する設定を行います。
 「--passalgo」オプションを指定すると、ユーザのパスワード暗号化方式を設定できます。
 「--useshadow」「--enableshadow」オプションを指定すると、パスワードがシャドウ化されます。
 
 ※他にも、NIS / LDAP / Kerberos 5 / Hesiod / SMB 認証 に関する設定が可能ですが、
  ここでは省略いたします。 これらのオプションの詳細につきましては、
 「キックスタートのオプション」authconfig の項目をご覧下さい。


# パスワードを SHA512 で暗号化し、シャドウファイルに格納する
authconfig --enableshadow --passalgo=sha512


3.6.3. SELinux (selinux)


 システムの SELinux 状態を設定します。
 「--enforcing」オプションを指定すると Enforcing モード、
 「--permissive」オプションを指定すると Permissive モード、
 「--disabled」オプションを指定すると SELinux が無効になります。
 省略時のデフォルトは Enforcing モードです。


# SELinux を Enforcing モードに設定
selinux --enforcing

# SELinux を Permissive モードに設定
selinux --permissive

# SELinux を 無効にする
selinux --disabled


3.6.4. サービス (services)


 サービスの有効/無効を設定します。
 「--disabled」サービスを無効にします。カンマ区切りリストでサービスを指定します。
 「--enabled」サービスを有効にします。カンマ区切りリストでサービスを指定します。


# sshd と sendmail サービスを無効、ntpd と pcscd サービスを有効にする
services --disabled sshd,sendmail --enabled ntpd,pcscd



3.7. X-Window の設定 (xconfig)


 X-Window を設定します。
 「--driver」オプションでは利用するドライバを指定します。
 「--defaultdesktop」オプションではデフォルトのデスクトップを GNOME と KDE から選択します。
 「--startxonboot」オプションを指定するとグラフィカルログインが有効になります。
 「--resolution」オプションではデフォルトの画面解像度を指定します。
 「--depth」オプションではデフォルトの色深度を指定します。有効な値は 8、16、24、32 です。
 省略時には X-Window を手動で設定する必要があります。(X-Window をインストールした場合)


# グラフィカルログインを有効にし、intel ドライバを利用する
xconfig --driver=intel --startxonboot



3.8. インストール完了後の動作


3.8.1. インストール終了後の動作 (halt / poweroff / reboot / shutdown)


 インストール終了後の動作を選択します。
 「halt」コマンドは、インストール終了後に停止し、再起動を要求するメッセージを表示します。
 「poweroff」コマンドは、インストール終了後に電源が切れます。
 「reboot」コマンドは、インストール終了後に自動的に再起動します。
 「shutdown」コマンドは、インストール終了後に停止し、再起動を要求するメッセージを表示します。
 省略時のデフォルトは「reboot」です。


# インストール終了後に停止する
halt

# インストール終了後に電源を切る
poweroff

# インストール終了後に再起動を行う
reboot

# インストール終了後に停止する
shutdown


3.8.2. 初回起動時の手動設定 (firstboot)


 初回起動時に手動設定を行うか選択します。
 「--enable」「--enabled」が指定されると、初回起動時にセットアップが起動します。
 「--disable」「--disabled」が指定されると、初回起動時にセットアップが起動しません。
 「--reconfig」が指定されると、初回起動時に再設定モードでセットアップが起動します。
 省略時のデフォルトは「--disable」(起動しない)です。


# 初回起動時にセットアップを起動
firstboot --enable

# 初回起動時にセットアップを起動しない
firstboot --disable

# 初回起動時に再設定モードでセットアップを起動
firstboot --reconfig



4. Kickstart 定義ファイル 構成例


# Kickstart sample for Fedora 10

# Command Section
install
cdrom
lang ja_JP.UTF-8
keyboard jp106
rootpw foobar
user --name=guest --password=hogehoge
firewall --enabled
firstboot --disabled
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
halt
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append="rhgb quiet"
clearpart --linux --drives=sda
ignoredisk --drives=sdb
autopart

# Package Section
%packages
@admin-tools
@base
@core
@dial-up
@editors
@fonts
@gnome-desktop
@games
@graphical-internet
@graphics
@hardware-support
@input-methods
@japanese-support
@java
@office
@printing
@sound-and-video
@text-internet
@base-x
gpgme
gpm
pax
gnupg2
sazanami-fonts-gothic
VLGothic-fonts-proportional
sazanami-fonts-mincho
gnuchess
ImageMagick
dcraw
netpbm-progs
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
m17n-db-telugu
m17n-db-malayalam
gdm

# Script Section
%post
# Enable Japanese
echo 'LANG="ja_JP.UTF-8"' > /etc/sysconfig/i18n



5. 参考サイト


「Red Hat Enterprise Linux インストールガイド」 第28章 キックスタートインストール
「Red Hat Enterprise Linux インストールガイド」 28.4. キックスタートのオプション




[作成日 2009/4/17]