CentOS 5のAMI作成

以前書いたScientific Linux 6のAMIの作成方法に合わせてCentOS 5のAMIを作ろうとしたら、なかなか面倒だったので、その作業手順のメモ。

ボリュームの準備

AMI作成用のインスタンスを立ち上げて、OSのイメージを入れるためのEBSボリュームをマウントする。

具体的な手順は次の通り。

  • マネージメントコンソールで、4GBのEBSボリュームを作成る。
  • /dev/sdhあたりにアタッチする。
  • ext3でフォーマットする。
# mkfs.ext3 /dev/xvdh
  • /ebs-rootにマウントする。
# mkdir /ebs-root
# mount /dev/xvdh /ebs-root

ベースのパッケージのインストール

最小構成を狙って、基本的なパッケージだけをインストールする。

yum-i386.confを次の内容で作成しておく。 baseurlの部分は理研のサイトをお借りしているが、作業の環境に合わせて変更するとよい。

[c5]
name=CentOS 5
baseurl=http://ftp.riken.jp/Linux/centos/5/os/i386/
enabled=1
gpgcheck=0

[c5-updates]
name=CentOS 5 Updates
baseurl=http://ftp.riken.jp/Linux/centos/5/updates/i386/
enabled=1
gpgcheck=0

coreパッケージをインストールする。

# yum -c yum-i386.conf --disablerepo=* --enablerepo=c5* --installroot=/ebs-root -y groupinstall core

kernelのインストール

kernelのインストールの前にいくつか準備が必要。これらを怠るとinitrdが正しく作られないので、起動してこなくなる。1回の試行の時間が長くなることと、繰り返す必要が出てくるところから、このあたりの調整がいちばん大変。

/ebs-root/etc/fstabを次の内容で作成する。たぶんこの辺りは、initの中でswitchrootするときに必要な情報になる。

/dev/sda1  /         ext3    defaults        1 1
proc       /proc     proc    defaults        0 0
sysfs      /sys      sysfs   defaults        0 0
devpts     /dev/pts  devpts  gid=5,mode=620  0 0
tmpfs      /dev/shm  tmpfs   defaults        0 0
/dev/sda2  /mnt      ext3    defaults        0 0
/dev/sda3  swap      swap    defaults        0 0

/ebs-root/etc/modprobe.confを次の内容で作成する。こうしておくと、initrdにXen周りのモジュールが読み込まれるようになる。

alias eth0 xennet
alias scsi_hostadapter xenblk

格好よくやろうと思って、modprobe.dの下にファイルを作成してみたりもしたが、これはうまくゆかなかったので、お勧めしない。

やっとkernelのインストールの段。kernelではなく、kernel-xenをインストールしておく。

# yum -c yum-i386.conf --disablerepo=* --enablerepo=c5 --enablerepo=c5-updates \
  --installroot=/ebs-root -y install kernel-xen

ここでリポジトリのオプションを–enablerepo=c5*としないのは、c5-mediaというリポジトリの設定が/ebs-root以下にインストールされているため。考慮してyum-i386.confを作り直してもよかったが、引っかかったところのメモとして残しておく。

調整

いくつか調整ごとを行っておく。

認証周りの設定

PAMのsystem-authが空になっているのでこれを作り直す。他のホストのAuto Configの設定をまねて、/ebs-root/etc/pam.d/system-auth-acを次の内容で作成する。

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3
password    sufficient    pam_unix.so md5 shadow nullok try_first_pass use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

元の空のファイルを削除して、シンボリックリンクを張っておく。

# cd /ebs-root/etc/pam.d
# rm system-auth
# ln -s sytem-auth-ac system-auth

GRUB周りの設定

PVGRUBから参照されるmenu.lstを作成する。

/ebs-root/boot/grum/menu.lstを次の内容で作成する。

default=0
timeout=0
hiddenmenu
title CentOS 5
        root (hd0)
        kernel /boot/vmlinuz-2.6.18-274.7.1.el5xen ro root=/dev/sda1 4
        initrd /boot/initrd-2.6.18-274.7.1.el5xen.img

公開鍵の取得

getsshkeyを取得して/ebs-root/etc/init.d/に配置しておく。 ファイルの内容はオリジナルLinux AMIの作成などを参照していただければよいかと。

Run Level 4でだけ動けばよいので適当に処置しておく。

# cd /ebs-root/etc/rc4.d
# ln -s ../init.d/getsshkey S11getsshkey

また、getsshkeyの実行にはcurlが必要になるので、インストールしておくこと。

# yum -c yum-i386.conf --disablerepo=* --enablerepo=c5 --enablerepo=c5-updates \
  --installroot=/ebs-root -y install curl 

ネットワーク周りの設定

ネットワーク周りで2つのファイルを作成しておく。

/ebs-root/etc/sysconfig/network

NETWORKING=yes

/ebs-root/etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

その他

/ebs-root/etc/selinux/configでSELinuxを無効にしておく。うまく使えない自分にはいろいろと障害にしかならないので、無効に。

SELINUX=disabled

/ebs-root/etc/sysconfig/i18nで言語の設定をしておく。習慣でUTF-8にしているがお好みで。

LANG=ja_JP.UTF-8

タイムゾーンを調整しておく。

# cp /ebs-root/usr/share/zoneinfo/Asia/Tokyo /ebs-root/etc/localtime

RPMのDBの調整 (2012/03/15 追記)

実はこのままAMIを作成して起動してもRPMをインストールすることができない中途半端なものになってしまう。 RPMのDBを作り直す作業をしておくこと。

詳細はこちらで。RPMのDBの調整

あとは、EBSでもInstance Storeでも、好みの方向でAMIを作成すればよい。 オリジナルLinux AMIの作成 などを参照していただければよいかと。

コメントを残す

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

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>