2019年7月現在CentOS 6.4をEC2で新規に使おうとしたら意外と大変だった。
作業前に決めておくこと
HVM AMIs (GRUB)を作成するか、Paravirtual AMIs (PV-GRUB)を作成するか
両者の解説は、User Provided Kernels - Amazon Elastic Compute Cloud に記載されています。
主な違いは以下の通りです。
種類 | 作成したAMIを起動できるインスタンスタイプ | AMI構築時のポイント |
---|---|---|
HVM AMIs (GRUB) | 現行世代のインスタンスと旧世代のインスタンスタイプ(全部の旧世代で起動するかは不明)。 | Partition Tableの設定が必要(parted等のコマンドで設定する)。 |
Paravirtual AMIs (PV-GRUB) | t1等旧世代のインスタンスタイプのみ。*1 | Partition Tableを設定しなくていい。 |
作業前に知っておくべきこと
ISOイメージからOSを(多分)起動できないという事実
結構調べたんですが、方法がさっぱり分からず。
私はISOイメージを使わずにセットアップしました。
どこのサイトでCentOS 6.4を配布しているのか
「何を当たり前な」と思うかと思いますが、古いディストリビューションはミラーサイトではもう配布していないことがあります。
日本のミラーでは、もう、CentOS 6.4は配布していませんでした。
私はhttp://vault.centos.org/から入手しました。
インストール方法を解説したサイト
種類 | サイト |
---|---|
HVM AMIs (GRUB) | EC2でCentOS6のEBS-Backed HVM方式 AMIをゼロから作る - Qiita |
Paravirtual AMIs (PV-GRUB) | EC2でCentOS6のEBS-Backed AMIをゼロから作る - SEEDS Creator's Blog *2 |
今回私は、EC2でCentOS6のEBS-Backed HVM方式 AMIをゼロから作る - Qiita のサイトを参考に作成しました。
インストール方法を解説したサイト(EC2でCentOS6のEBS-Backed HVM方式 AMIをゼロから作る - Qiita)に対する補足
前述のサイトを見ながら作業していく中で、気づいた点があったので、僭越なのは承知なのですがメモしていきます。
OSはCentOS 6.xでも良い
「作業用インスタンスを作成」ではAmazon Linux 64bitを使っていますが、私はCentOS 6.10にしました。
特別な根拠はないのですが、まあ、バージョンが近いOSの方で作業した方が良いかと思っての、験担ぎ的判断です。
ただし、途中で使うツールが時々インストールされていないので、適宜yum installでインストールする必要がありました。
「EBSのパーティション作成。フォーマット。マウント」のデバイスの名前(/dev/xvdf)について
当然なのですが、AWSコンソール上から/dev/sdf以外でマウントした場合は別の名前になります。
lsblk*3コマンドを使用して、自分の環境ではどういう名前になっているか確認してから作業します。
私が作業したインスタンスではlsblkは以下の結果になりました。
$ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 8G 0 disk └─xvda1 202:1 0 8G 0 part / xvdb 202:16 0 30G 0 disk └─xvdb1 202:17 0 30G 0 part
ですので、私の環境ではdev/xvdbを使用することになります。
「EBSのパーティション作成。フォーマット。マウント」のフォーマットで指定するデバイス名は末尾に1がついている方
ちゃんと記事を読めば失敗しないのですが、デバイス名は末尾に1がついている方を使用してください。
私の場合は以下の通りですね。
mkfs.ext4 /dev/xvdb1
うっかり、末尾に1がついてない方を指定してもコマンドは成功してしまうのですが、Partition Tableが変になってしまい、grubの設定ではまります。
間違った場合、parted -lで確認した際にloopというみたことないPartition Tableになります。
以下に間違った場合の例を示します。
# parted -l Model: Xen Virtual Block Device (xvd) Disk /dev/xvda: 8590MB Sector size (logical/physical): 512B/512B Partition Table: msdos Number Start End Size Type File system Flags 1 1049kB 8590MB 8589MB primary ext4 boot Model: Xen Virtual Block Device (xvd) Disk /dev/xvdb: 32.2GB Sector size (logical/physical): 512B/512B Partition Table: loop Number Start End Size File system Flags 1 0.00B 32.2GB 32.2GB ext4
インストール用の yum.conf を作成で前提としているrikenさんのmirrorが無い
http://vault.centos.org/のみでどうにかします。
鍵のダウンロード
cd /mnt wget -O ../RPM-GPG-KEY-CentOS-6 http://vault.centos.org/6.4/os/x86_64/RPM-GPG-KEY-CentOS-6
repos.confの作成の内容は以下のようにします。
vi ../repos.conf
[ami-base] name=CentOS-6 - Base mirrorlist=file://${PWD}/../mirrorlist.centos gpgcheck=1 gpgkey=file://${PWD}/../RPM-GPG-KEY-CentOS-6 [ami-updates] name=CentOS-6 - Updates mirrorlist=file://${PWD}/../mirrorlist.centos.updates gpgcheck=1 gpgkey=file://${PWD}/../RPM-GPG-KEY-CentOS-6||<
repos.confから参照するmirrorlist.centosは以下のように作成します。
vi ../mirrorlist.centos
http://vault.centos.org/6.4/os/x86_64/
repos.confから参照するmirrorlist.centos.updatesは以下のように作成します。
vi ../mirrorlist.centos.updates
http://vault.centos.org/6.4/updates/x86_64/
あとは記事通りでOK
うっかり手順を飛ばさないように気を付けて行いましょう。
さいごに
こうやって整理して書くと大半は参考記事通りなんですが、HVM AMIs (GRUB)とParavirtual AMIs (PV-GRUB)の違いをちゃんと理解しておらず、やたら時間が掛りました。
Paravirtual AMIs (PV-GRUB)の手順で途中までやって、「あれ。なんか使いたいインスタンスタイプで起動できない??」となって、あーだこーだして時間を浪費する結果に。
*1:これが実は結構な制約で、東京リージョンの場合、GUIから選べるインスタンスがあんまり無いです。Linux AMI 仮想化タイプ - Amazon Elastic Compute Cloudに載っているものは選べてよさそうなんですが、実際に選べるのはもっと少ないという。
*2:明確にはParavirtual AMIs (PV-GRUB)と記載されていないのですが、「作成したEBSをAMI化する」のところでHVM AMIs (GRUB)作成時には選べないカーネルを選択しているので、区別がつきます。
*3:Linux で Amazon EBS ボリュームを使用できるようにする - Amazon Elastic Compute Cloud