今までAMI(Linux)のカーネルは、デフォルトカーネル(2.6.16-xenU)を利用していたのですが、最近では、s3fscryptsetup、そしてopenswanなどカーネルモジュールに依存するソフトウェアをEC2で扱っているため、デフォルトカーネルでは対応が厳しくなってきました。

そこで、今回はカーネルを2.6.18-xenU-ec2-v1.5にしてみました。

2.6.18-xenU-ec2-v1.5を選んだ理由としては、

http://s3.amazonaws.com/ec2-downloads/ec2-modules-2.6.18-xenU-ec2-v1.5-i686.tgzに、

カーネルモジュールアーカイブが置かれていたからです。

つまり、カーネルモジュールアーカイブがあり、その中の最新のものを選んだことになります。

カーネルを変更するということは、AMIからインスタンス起動時に指定する

AKIとARIを変更するということになりますが、上記のものは東京リージョンだと下記となります。

▼ AKI

Name: aki-e809a2e9

Description:

ec2-public-images-ap-northeast-1/vmlinuz-2.6.18-xenU-ec2-v1.5-i686.aki.manifest.xml

▼ ARI

Name: ari-ba09a2bb

Description:

ec2-public-images-ap-northeast-1/initrd-2.6.18-xenU-ec2-v1.5-i686.ari.manifest.xml

AWS Management Consoleなどでインスタンス起動時に、

下記のように指定するだけで大丈夫です。

インスタンスが起動したら、ログインし、下記コマンドにて、

該当カーネルが適用されていることを確認することが可能です。

# uname -a
Linux ip-10-150-181-26 2.6.18-xenU-ec2-v1.5 #1 SMP
Fri Sep 24 01:03:38 EDT 2010 i686 i686 i386 GNU/Linux

カーネルモジュールは、下記のようにダウンロードして展開しておきます。

# cd /
# curl -OL http://s3.amazonaws.com/ec2-downloads/ec2-modules-2.6.18-xenU-ec2-v1.5-i686.tgz
# tar xvzf ec2-modules-2.6.18-xenU-ec2-v1.5-i686.tgz
# rm ec2-modules-2.6.18-xenU-ec2-v1.5-i686.tgz

※ 64 bitの場合はec2-modules-2.6.18-xenU-ec2-v1.5-x86_64.tgzです。

展開したファイル群にシンボリックリンク切れがあったので、削除しておきます。

# cd /lib/modules/2.6.18-xenU-ec2-v1.5
# rm -f source
# rm -f build

この状態でリブートして/var/log/messagesを確認すると、
下記のようなエラーが出力されていました。

...
Apr 30 00:48:02 ip-10-150-181-26 modprobe: FATAL:
Could not load /lib/modules/2.6.18-xenU-ec2-v1.5/modules.dep:
No such file or directory
...

modules.depがないということなので、下記のようにdepmodを実行することで解決しておきます。

# depmod

この状態でリブートすると、/var/log/messagesにも問題のあるようなメッセージは出力されなくなりました。

念の為に、SUZ-LAB謹製AMIでは、最後に2.6.16-xenUの不要ファイルを

下記のように削除しておきました。

# rm -f /boot/vmlinux-syms-2.6.16-xenU
# rm -f /boot/System.map-2.6.16-xenU
# rm -f /boot/message
# rm -f /lib/modules/2.6.16-xenU

今後挑戦するとなると、カスタムカーネルになりますね。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。

元記事は、こちら