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]