今回はOSのクローンではなく、RHEL系Linuxの機能である『Kickstart』を用いた自動インストール(Silent Install)を行う。
『KickStart』での自動インストールは、専用のconfigファイル(定義ファイル)を用いて行われる。
configファイルの読込みは、インストールディスクとは別のUSBメモリやDVD、ネットワーク上のファイルを読み込ませる方法もあるが、今回はOSのディスクと組み合わせた自動インストールディスクを作成することにした。
検証に使用するOSはCent OS 6.5だ。
1.『Kickstart』で可能な事
『Kickstart』では、configファイルに動作を記述することで以下のような事ができる。
- インストーラーの自動実行
- OSインストール時のパッケージ自動インストール
- インストール前、後のスクリプト自動実行
これらを実現するため、『Kickstart』のconfigファイルは以下の区分に分けて書かれている。
- コマンドセクション
- パッケージセクション
- スクリプトセクション
上記3つのセクションに分け、上から順に記述する。
configファイルの細かい記述方法については、また後日記載する。
2.configファイルの作成
さて、それでは実際にconfigファイルを作成していこう。
といっても、手動で作るのは面倒だなぁ…というわけで、ここでは既存のCentOS上でconfigファイルを作成するツール『system-config-kickstart』を用いて作成を行う。
このツールを実行すると、「キックスタート設定ツール」というGUIでKickstartのconfigファイルを作成できるプログラムを使用できる。
まずは、別途手動インストールしたCentOSを用意し、その上で以下のコマンドを実行。『system-config-kickstart』パッケージをインストールする。
yum install system-config-kickstart
上記コマンドでパッケージをインストール後、CentOS上で以下のコマンドを実行しキックスタート設定ツールを起動させる。
system-config-kickstart
後は、このツールで設定を進めていくだけだ。
以下に、各設定の例を記載していく。
(1)基本設定
(2)インストール方法
(3)ブートローダーオプション
(4)パーティション情報
(5)ネットワーク設定
(6)認証
(7)ファイヤーウォール設定
(8)ディスプレー設定
(9)パッケージの選択
さて、上記の例でconfigファイルを「ks.cfg」という名称で保存する。
なお、「ks.cfg」は「/root/ダウンロード」直下に設置している。
出来上がったファイル「ks.cfg」の中身は以下。
#platform=x86, AMD64, 又は Intel EM64T
#version=DEVEL
# Firewall configuration
firewall --disabled
# Install OS instead of upgrade
install
# Use CDROM installation media
cdrom
# Root password
rootpw --iscrypted $1$F3O.1DJZ$uuErHjcd.UCbs4SGswt9L.
# System authorization information
auth --useshadow --passalgo=sha512
# Use graphical install
graphical
firstboot --disable
# System keyboard
keyboard us
# System language
lang ja_JP
# SELinux configuration
selinux --disabled
# Installation logging level
logging --level=info
# System timezone
timezone Asia/Tokyo
# Network information
network --bootproto=dhcp --device=eth0 --onboot=on
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Disk partitioning information
part / --fstype="ext4" --grow --size=1
%packages
@basic-desktop
@desktop-debugging
@desktop-platform
@directory-server
@fonts
@general-desktop
@graphical-admin-tools
@input-methods
@kde-desktop
@legacy-x
@network-server
@postgresql
@postgresql-client
@remote-desktop-clients
@scalable-file-systems
@server-platform
@storage-server
@system-admin-tools
@virtualization
@virtualization-client
@virtualization-platform
@virtualization-tools
@web-server
@web-servlet
@x11
crypto-utils
%end
なお、このks.cfgを作成する上で注意したいのが、忘れずにパーティションの作成とパッケージのインストール対象を選択することだ。
これを忘れると、該当箇所の設定を手動で行う必要が出てしまい、自動インストールにならない。
3.自動インストールディスクの作成
さて、次はこの「ks.cfg」を保有したOSインストールディスクを作成する。
既存のCentOSマシンにCentOS 6.5のDVDを挿入し、以下のコマンドを実行しマウントする。
[root@test-centos ~]# mkdir /media/CentOS_6.5_Final/
[root@test-centos ~]# mount /dev/cdrom /media/CentOS_6.5_Final/
mount: ブロックデバイス /dev/sr0 は書き込み禁止です、読込み専用でマウントします
次に一度DVDの中身を展開し、「ks.cfg」を所定の場所に設置する。
今回は、DVDの階層でいうと一番上の階層に設置する。
[root@test-centos ~]# cd /media/CentOS_6.5_Final/
[root@test-centos CentOS_6.5_Final]#
[root@test-centos CentOS_6.5_Final]# mkdir /home/CentOS_6.5_Final/
[root@test-centos CentOS_6.5_Final]# find . -maxdepth 1 -mindepth 1 -exec cp -rp {} /home/CentOS_6.5_Final \;
[root@test-centos CentOS_6.5_Final]# cp /root/ダウンロード/ks.cfg /home/CentOS_6.5_Final/
次に、「isolinux/isolinux.cfg」を以下のように編集し、ブート時に自動的に「ks.cfg」を読み込ませるようにする。
default vesamenu.c32
default ks
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.5!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img
label vesa
menu label Install system with ^basic video driver
kernel vmlinuz
append initrd=initrd.img xdriver=vesa nomodeset
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot from ^local drive
localboot 0xffff
label memtest86
menu label ^Memory test
kernel memtest
append -
label ks
menu label vmlinuz
kernel vmlinuz
append ks=cdrom:/ks.cfg initrd=initrd.img
最後に、以下のコマンドを実行しCentOSの自動インストールディスクのisoファイルを作成する。
[root@test-centos CentOS_6.5_Final]# cd /home/CentOS_6.5_Final/
[root@test-centos CentOS_6.5_Final]# mkisofs -v -r -J -o ../CentOS_6.5_Final.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .
これで、自動インストールディスクが作成できた。
後はこのディスクを挿入し、DVDからブートさせるだけでインストール出来る。
…なぉ、ここまで記述しといてあれだけど、サーバの電源容量確保の問題のような”一度に起動出来るマシンに限りが無い”のであれば、PXEブートを用いた自動インストールの方が良いと思う。
また、事前に各筐体のシリアルナンバーが把握できる状態(各筐体のマネジメントポートのIPアドレスが割り振られているなど)であれば、こちらのスクリプトを用いてホスト名と固定IPアドレスを筐体ごとに自動設定することも可能だ。