USBメモリでCentOS 6.3の全自動インストールメディアを作成する

PCに挿して起動すると、CentOSを全自動でインストールすることができるUSBメモリを作ります。インストールパッケージはUSBメモリに含めず、HTTPで取得する方法をとります。ブートローダにはsyslinuxを使い、自動インストールはKickstartの仕組みを使います。

作業はWindows7 64bit環境で行いました。インストールの確認は64bit機を使って、CentOS 6.3 x86_64で行いました。

インストールメディアの作成に入る前に、USBメモリブートによるCentOSのインストールがどんな流れで行われるかを見ておきましょう。

(1) BIOS起動
(2) USBメモリMBRを参照
(3) ブートローダ(syslinux)をロード・起動
(4) インストーラのカーネル(vmlinuz)をロード・起動
(5) Kickstartファイルに従って自動インストール

 +------+     +----------+     +---------+
 | BIOS | ==> | syslinux | ==> | vmlinuz |
 +------+     +----------+     +----+----+
                                    |
                            +-------+--------+
                            | Kickstart file |
                            +----------------+

インストールメディアとなるUSBメモリには、ブートローダやインストーラのカーネル、Kickstartファイルなどが入っている必要があります。では、USBメモリでインストールメディアを作成する手順を見ていきましょう。

0. インストールメディア作成の手順

(1) Kickstartファイルを用意する
(2) インストーラをダウンロードする
(3) syslinux.cfgを用意する
(4) USBメモリにファイルをコピーする
(5) USBメモリMBRをインストールする
(6) CentOSのインストールを開始する

1. Kickstartファイルを用意する

まずはじめに、Kickstartファイルを作成しておきます。Kickstartファイルは全自動インストールのキモとなる部分です。今回はリスト1のように定義して、ks.cfgとして保存しました。

リスト1 : ks.cfg

text
autostep
install
url --url http://ftp.riken.jp/Linux/centos/6/os/x86_64

lang ja_JP.UTF-8
keyboard jp106
timezone --utc Asia/Tokyo

rootpw testsvpw
network --onboot yes --device eth0 --bootproto dhcp --noipv6 --hostname testsv

firewall --enabled --service=ssh
selinux --disabled
authconfig --enableshadow --passalgo=sha512

bootloader --location=mbr --driveorder=sdb --append="nomodeset crashkernel=auto rhgb quiet"
clearpart --initlabel --all --drives=sdb
part /boot --fstype=ext4 --size=500 --ondrive=sdb
part / --fstype=ext4 --size=50000 --ondrive=sdb
part swap --size=2016 --ondrive=sdb

%packages
@base
@core
@japanese-support
%end

ポイントはパーティションを作成するドライブ名です。USBメモリがsdaとして認識されるので、HDDはsdb以降のドライブとなります。今回はsdbにインストールします。その他の構成について、簡単に説明しておきましょう。

  • インストールパッケージは http://ftp.riken.jp/Linux/centos/6/os/x86_64 から取得します。
  • ネットワーク設定はDHCPを使います。
  • ファイアウォールは有効です。
  • SELinuxは無効です。
  • パッケージは基本的なものだけをインストールします。

2. インストーラをダウンロードする

インストーラのカーネルなどをダウンロードします。インストーラのセットはCentOSのisolinuxディレクトリにまとめられていますので、そのディレクトリにあるファイルを全て保存します。CentOSの適当なミラーサイトからダウンロードするとよいでしょう。

CentOS 6.3 x86_64 : isolinuxダウンロード

ミラー 1 : http://ftp.riken.jp/Linux/centos/6.3/os/x86_64/isolinux/
ミラー 2 : http://ftp.jaist.ac.jp/pub/Linux/CentOS/6.3/os/x86_64/isolinux/

isolinuxのファイル一覧

  • boot.msg
  • grub.conf
  • initrd.img
  • isolinux.bin
  • isolinux.cfg
  • memtest
  • splash.jpg
  • vesamenu.c32
  • vmlinuz

3. syslinux.cfgを用意する

ダウンロードしたファイルの中にisolinux.cfgがあります。このisolinux.cfgをsyslinux.cfgにリネームします。

続いて、syslinux.cfgを以下のように変更します。

リスト2 : syslinux.cfg.patch

--- syslinux.cfg.orig   2012-08-13 18:52:08.253137037 +0900
+++ syslinux.cfg        2012-08-13 18:53:59.405341327 +0900
@@ -1,4 +1,4 @@
-default vesamenu.c32
+default kickstart
 #prompt 1
 timeout 600

@@ -35,4 +35,7 @@
   menu label ^Memory test
   kernel memtest
   append -
+label kickstart
+  kernel vmlinuz
+  append initrd=initrd.img ks=hd:sda1:/ks.cfg

4. USBメモリにファイルをコピーする

必要なファイルがそろったので、USBメモリにコピーします。isolinuxのファイル、syslinux.cfg、ks.cfgを全てルートディレクトリに保存します。USBメモリはUドライブとして認識されているものとします。

 U:\+
    +-boot.msg
    +-grub.conf
    +-initrd.img
    +-isolinux.bin
    +-ks.cfg
    +-memtest
    +-splash.jpg
    +-syslinux.cfg
    +-vesamenu.c32
    +-vmlinuz

5. USBメモリにMBRをインストールする

MBRのインストールにはsyslinuxを使います。syslinuxはkernel.orgかミラーサイトからダウンロードすることができます。現在の最新版はsyslinux-4.05.zipでしたので、これをダウンロードします。

syslinuxダウンロード

kernel.org : http://www.kernel.org/pub/linux/utils/boot/syslinux/
ミラー : http://ring.nict.go.jp/archives/linux/kernel.org/utils/boot/syslinux/

ダウンロードしたsyslinux-4.05.zipを展開します。コマンドプロンプトから、展開したフォルダにあるsyslinux-4.05\win64\syslinux64.exeを実行してMBRをインストールします。この時、コマンドプロンプトは「管理者として実行」してください。USBメモリはUドライブとして認識されているものとします。

> syslinux-4.05\win64\syslinux64.exe -ma U:

6. CentOSのインストールを開始する

PCにUSBメモリを挿して起動します。設定が正しくできていれば、全自動でインストールが完了します。