kickstartを使ってCentOSを簡単にインストールする#

CentOSをインストールすると、そのインストール手順を再現するためのファイルが自動的に作成されます。そのファイルを元にしてインストールするとインストールのやり直しが簡単に出来ます。
しかしこの自動作成されたファイルが曲者で、ハマりどころがいくつかあるので書いておきます。
※尚、自動作成されるのはパッケージインストールまでの工程のみで、サーバ設定やユーザ作成の工程は自分で追記する必要があるためご注意ください。

/home/root/anaconda-ks.cfg#

自動作成されたファイルの内容は以下です。
# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang ja_JP.UTF-8
keyboard jp106
network --onboot no --device eth0 --bootproto dhcp --noipv6
rootpw  --iscrypted $6$GgaesaCkpcVmNaOU$X.8t5xNJ1dCBmfUbCTPQDhsjo9VTMwBj4NiDgzFfYesdDHHsASsJsYk9n2yrdLHACHyj7p45Ax0wcBfilPEHU1
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --none
#volgroup volgroup01 --pesize=4096 pv.008002
#logvol / --fstype=ext4 --name=lv_root --vgname=volgroup01
#logvol swap --name=lv_swap --vgname=volgroup01

#part /boot --fstype=ext4 --onpart=sda1
#part pv.008002 --onpart=sda2 --noformat


repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages
@base
@core
以下略
上記のままでは、
  1. ディスクパーティションが作成されない
  2. USBメモリに置いてある設定ファイルが見つからないというエラーが発生する
  3. ハードディスクが見つからない
  4. 論理ボリュームパーティションの定義部分でインストールエラーが発生する
  5. パッケージが見つからないというインストールエラーが発生する
  6. インストール後の再起動時にカーネルがロードされない
という悲しい結末を向かえます。

ディスクパーティションが作成されるようにする#

英語のコメントに書いてあるとおり、肝心な部分がコメント化されているためディスクパーティションが作成されません。
この部分のコメントをはずし、既存パーティションの削除も実行されるように修正します。
clearpart --drives=sda --all  ←修正する
volgroup volgroup01 --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=volgroup01
logvol swap --name=lv_swap --vgname=volgroup01

part /boot --fstype=ext4 --onpart=sda1
part pv.008002 --onpart=sda2
ファイルの中にもコメントとして書いてあるのでここの修正はどうということはありません。

USBメモリに置いてある設定ファイルが見つからないというエラーの対処#

これは設定ファイルの内容とは直接関係ありませんが、kickstart設定ファイル(anaconda-ks.cfg)をインストール途中で認識させようとしても見つからなかったんです。
インストール途中に表示されるインストール種類の選択画面にてTABキーを押した後にkickstart設定ファイルを指定しますが、1つ目の鬼門がここでした。
次のように入力しても、USBメモリ上の設定ファイルが見つからないと言って怒られるのです。
vmlinuz initrd=initrd.tmg ks=hd:sdb1:/anaconda-ks.cfg
正しくは、sdb1ではなくsda1でした orz。
vmlinuz initrd=initrd.tmg ks=hd:sda1:/anaconda-ks.cfg
USBメモリが先に認識されてsdaになるようです。

ハードディスクが見つからない状況の対処#

kickstart設定ファイルが見つかったと思ったら今度はパーティションの作成で怒られました。上記現象の後だったので早く気付けたのかもしれませんがハマりました。
要は、USBメモリにkickstart設定ファイルを置いてインストールする時はハードディスクが
  • sdb
になるんです。そのように設定ファイルを書いておく必要がありました。(該当個所だけを抜き出して記載してあります)
clearpart --drives=sdb --all
 略
part /boot --fstype=ext4 --onpart=sdb1
part pv.008002 --onpart=sdb2

論理ボリュームパーティションの定義部分でインストールエラーを発生させない#

2つ目の鬼門がこの状況でした。
上記の修正だけではエラーがまだ発生します。論理ボリュームを定義した行のあたりがおかしいと言って止まります。
設定をいくら見直しても文法エラーが見つかりません。
そりゃそうです。文法は全然間違ってないんだもん。論理ボリュームの定義よりも前にパーティション定義を移動させるだけでエラーが出なくなりました。おそらく定義の順序に意味があるのだと思います。(自動で吐き出したくせに...)
clearpart --drives=sdb --all
part /boot --fstype=ext4 --onpart=sdb1  ★先に持ってくる
part pv.008002 --onpart=sdb2            ★先に持ってくる

volgroup volgroup01 --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=volgroup01
logvol swap --name=lv_swap --vgname=volgroup01

パッケージが見つからないというインストールエラーを発生させない#

一番悲しかったのはこのエラーです。
パーティションと論理ボリュームの作成が終わった後に、インストールパッケージが見つからないと言って止まりました。インストール用のCD-ROMから起動しているのに見つからないって、あなた。
ネットで検索したら答えが分かりました。犯人はこの部分です。
repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
これを次のように直すとうまくいくとCentOSのフォーラムなどに書いてありました。
repo --name="CentOS"  --baseurl=file:///mnt/source --cost=100

インストール後の再起動時にカーネルがロードされるようにする#

最も時間がかかったのはこの状況の解決でした。
インストール後の再起動時にgrubのコンソール画面のまま止まってしまい、にっちもさっちも行きません。
ネットで調べても解らず、結局色々試して解決しました。該当個所は次の部分です。
bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb quiet"
上記を次のように--driveorderオプションをはずすだけでした。理由は不明です(涙)。
bootloader --location=mbr --append="crashkernel=auto rhgb quiet"

添付ファイルの追加

ログイン済のユーザのみが添付ファイルをアップロード出来ます。
« This page (revision-8) was last changed on 14-8-2016 22:53 by ytp