今までAMI(Linux)のカーネルは、デフォルトカーネル(2.6.16-xenU)を利用していたのですが、最近では、s3fsやcryptsetup、そして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)監修のもと掲載しています。
元記事は、こちら