Mac+VirtualBox+CentOS6.2自動インストールメモ

VirtualBox上でCentOS6.2の自動インストール(kickstart)の実験をしました。

Virtualbox_logo VirtualBoxダウンロードページ

CentOSロゴ CentOS6.2 X86_64 ダウンロードページ(IIJ)

VirtualBoxはMac版を、CentOSは6.2 X86_64のminimalセットを使用しました。

また、途中ディスクイメージを作るのにmkisofsを使用するので、Macか他のLinuxクローンなどに入れると良いです。今回は一度CentOSをそのままインストールしてディスクを作成する方法を取りました。途中出てくるコマンド等が存在しない場合はyumなどでインストールしてください。(minimalセットだとmkisofsはありませんが、rsyncは確かインストールされてました)

VirtualBoxのポートフォワーディング設定

VirtualBoxのコンソール画面だとコピペも出来ません。そのためMacのターミナルでssh経由でコントロールしたいのですが、下記の設定をしないと動かせません。

VirtualBoxで仮想マシンを作ったあとネットワークの設定で

高度な設定 > ポートフォワーディング

を選択して下記のようにします。

screen

名前は適当で。ホストポートは49152~65535の間にでもしておいたほうが良いでしょう。上記は一例ですが、本来のポート+50000番以上になるように設定してみました。

一度手動でインストールする

DLしたイメージを使って、そのままインストールします。

CentOS ローディング画面

インストールが完了したらディスクを取り出して再起動。

minimalセットはネットワークの設定がされていないようなので下記のように設定します。
ファイル:/etc/sysconfig/network-scripts/ifcfg-eth0

ONBOOT="yes"     #"no"になっていたので、"yes"に設定した。
BOOTPROTO="dhcp" #追加

一度リブートします。
reboot

Macからの接続

ここまででMacのターミナルからssh経由で接続することが出来ます。

ssh -p 50022 -l root localhost
pはポート指定(ポートフォワーディングで指定したポート)、lはログインネーム指定です。

余談:GeustAdditionsをインストールする場合

VirtualBoxにはGeustAdditionsというツールがあり、これをインストールすることによりコピペが可能になります。しかしこのツールはXがインストールされていないと動かないので、minimalセットの場合はこれだけ入れてもコピペ出来ないので要注意です。

インストールする場合は下記のサイトを参考にすると良いです。

hirokan55の日記:  CentOS 6.2にVirtualBox Guest Additionsをインストールメモ

CentOS6.2にはパッチが必要らしい・・・。

ディスクイメージ作成作業

以下の記事を参考に作業しました。

Yet Another Diary: VirtualBoxでのCentOSインストールの自動化

無事にインストール出来たらrootのホームディレクトリにanaconda-ks.cfgがあるはずですのでこれを利用します。Mac側にある、先程ダウンロードしたCentOSのディスクイメージをSFTPなどを利用して利用中のCentOSに送るか、wgetでもう一度ディスクイメージをダウンロードしてきます。

マウントポイント作成
mkdir /mnt/iso

ダウンロードしたディスクイメージをマウント
mount -o loop ~/CentOS-6.2-x86_64-minimal.iso /mnt/iso

作業ディレクトリ作成
mkdir ~/cent62_kick

移動
cd cent62_kick

データのコピー
rsync -av /mnt/iso/. .

コピーが終わったら、マウントしたディスクイメージはもう必要無いのでマウント解除して問題ありません。作業ディレクトリにisolinuxというディレクトリがあります。ここをいろいろ設定します。

まずisolinux.cfgファイル(kickstart用の設定ファイル)を編集します。編集内容は下記のサイトを参考しました。

mk-mode BLOG: CentOS - オリジナルインストールISO作成!

書込み禁止に設定されていたのでパーミッションを変更します。
chmod +w isolinux/isolinux.cfg

下記のように編集
ファイル:isolinux/isolinux.cfg

default setup #default linuxからdefault setupに変更(下記labelと同じ名前にすればよい?)

label setup                                         #追加
  kernel vmlinuz                                    #追加
  append ks=cdrom:/isolinux/ks.cfg initrd=initrd.img #追加

anaconda-ks.cfgをks.cfgにしてisolinux以下へコピー
cp ~/anaconda-ks.cfg isolinux/ks.cfg

ファイル:isolinux/ks.cfg(下記はUSキーボードでのMacでインストールした場合の一例)

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang ja_JP.UTF-8
keyboard us
network --onboot no --device eth0 --noipv4 --noipv6
rootpw  --iscrypted #暗号化されたパスワード
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --enforcing
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append=" rhgb crashkernel=auto 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 --all --drives=sda

part /boot --fstype=ext4 --size=500
part pv.008002 --grow --size=1

volgroup vg_centos --pesize=4096 pv.008002
logvol / --fstype=ext4 --name=lv_root --vgname=vg_centos --grow --size=1024 --maxsize=51200
logvol swap --name=lv_swap --vgname=vg_centos --grow --size=2016 --maxsize=4032

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

%packages --nobase
@core
%end

上記のようにパーティション作成関係のコメントアウトされている部分を解除します。いろいろ設定出来そうなので、いじってみると面白そうです。今回は実験なので最初にインストールした状態そのままにしました。

ディスクイメージの作成
mkisofs -r -l -J -o ../cent62_kick.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table .

これで自動インストールディスクイメージのファイルが出来上がりました。

そして、VirtualBoxへのインストール

あとは作成したディスクイメージを使ってインストールするだけです。
注意点としては、インストール終了後にディスクを取り出さないまま再起動してしまうと、ディスクイメージが仮想ドライブに入った状態なので、またインストールを繰り返してしまいます(やってしまいました・・・)

大幅にインストールの時間を減らすことが出来るので覚えておくと損は無いです。

2012-03-22追記

ks.cfgファイルを一例として少しカスタマイズしてみました。

# Kickstart file automatically generated by anaconda.

#version=DEVEL
install
cdrom
lang ja_JP.UTF-8
keyboard us
network --onboot yes --device eth0 --bootproto dhcp
rootpw  --iscrypted #暗号化されたパスワード
firewall --service=ssh
authconfig --enableshadow --passalgo=sha512
selinux --disabled
timezone --utc Asia/Tokyo
text
bootloader --location=mbr --driveorder=sda --append=" rhgb crashkernel=auto 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 --all --initlabel --drives=sda
autopart

#part /boot --fstype=ext4 --size=500
#part pv.008002 --grow --size=1

#volgroup vg_centos --pesize=4096 pv.008002
#logvol / --fstype=ext4 --name=lv_root --vgname=vg_centos --grow --size=1024 --maxsize=51200
#logvol swap --name=lv_swap --vgname=vg_centos --grow --size=2016 --maxsize=4032

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

%packages --nobase
@core

%end

主な変更点

  • networkの項目に –onboot yes  –bootproto dhcpを追加(ネットワーク使用出来るように)
  • selinux –disabledを追加
  • textを追加(テキストインストーラを使用。好みの問題)
  • clearpartに –initlabelを追加(インストール途中で初期化について尋ねられなくなります)
  • autopartの追加。パーティション関係を自動的に処理してくれます

以上。特にclearpartの –initlabelがないと本当の自動インストールになりませんでした。(以前実験した時は問題なかったような気がするのですが)。selinuxに関しては元々enforcingです。現在はこの設定で作成したディスクイメージファイルをベースとして利用しています。


CentOS 6で作るネットワークサーバ構築ガイド (Network Server Construction Guide S)

[`evernote` not found]

Mac+VirtualBox+CentOS6.2自動インストールメモ」への1件のフィードバック

  1. ピンバック: LAMP環境用初期インストールのためのシェルスクリプト | Windchest

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*