読者です 読者をやめる 読者になる 読者になる

絶品ゆどうふのタレ

ふと気づいたことを綴るだけのメモ

Amazon EC2で自作AMI作ったときにカーネルがエラー吐きまくるのを何とかする。

amazon ec2 kernel

多分既知のことが多いんじゃないかと思うけど、ちょっとこけたりしたことがあったんでメモっておく。id:sotarokにとにかく書けばって言われたから書く。


なんか、自作AMIを作ると、便利ではありつつも、/var/log/messagesに普段は見ないエラーがいろいろ出まくる。

これは自作イメージがちゃんとxen用になっていないことが原因で、別に支障がないことも多いんだけど、AMIまるごとバックアップする時なんかには問題が起きたりする。

それに、個人的にはこういうエラーは邪魔だし気になるのでなんとか解決してみた。

自作AMIのバックアップ次にエラーで止まる問題の解消(->カーネルモジュールの置換え)

まず、最低限これはやっとかないと、自作AMIに手を加えたあと、S3に保存する時にこける。
具体的には、自作AMIのイメージ作成・保存時に

mount: could not find any loop device. maybe this kernel does not know
about the loop device? (if so, recompile or `modprobe loop'.)

とか言われたりする場合。*1

で、具体的にやることは以下の通り。

$ wget http://s3.amazonaws.com/ec2-downloads/modules-2.6.16-ec2.tgz
$ cd /
$ tar xvzf ~/modules-2.6.16-ec2.tgz
$ depmod -a
$ reboot

これは、カーネルモジュールをXen Domain U用のものに置き換えてるだけの話。
自作AMIはカーネルがピュアなやつなので、Xen用のパッチは当たってない。おかげで上述のエラーが出たり、modprobeとかFATAL吐いてるログが残ったりするんだけど、この置換えをしておくことで問題が解決できる。


ま、とりあえずこれで、最大の問題といえるEC2のバックアップAMI作成時にこけるエラーは解消できるようになる。

ref:http://netlog.jpn.org/r271-635/2009/10/amazon_ec2_loop_not_found_xen.html
ref:http://developer.amazonwebservices.com/connect/message.jspa?messageID=44021

/sbin/mingettyがめっちゃエラー吐く問題(->tty2〜6がないのに対応)

上述のエラーとは別に、さして問題ではないんだけど/var/log/messagesに大量にmingettyがエラーを吐いてる場合がある。

具体的には、

/sbin/mingetty[4068]: tty2: No such file or directory
/sbin/mingetty[4069]: tty3: No such file or directory
/sbin/mingetty[4070]: tty4: No such file or directory
/sbin/mingetty[4071]: tty5: No such file or directory
/sbin/mingetty[4072]: tty6: No such file or directory

こんなのがいっぱい出る。
これは、エラーの通り単にtty2〜6がないだけ。*2


なので、/etc/inittabでこれらをコメントアウトしてあげればいい。Amazonだとsshでしかログインしないし、特に問題ないし。

1:2345:respawn:/sbin/mingetty tty1
#2:2345:respawn:/sbin/mingetty tty2
#3:2345:respawn:/sbin/mingetty tty3
#4:2345:respawn:/sbin/mingetty tty4
#5:2345:respawn:/sbin/mingetty tty5
#6:2345:respawn:/sbin/mingetty tty6

これで、kill -HUP 1とかしてループしてるトライを止めてあげれば、このエラーも止まる。

ref:http://collectivemeta.com/aode7
ref:http://developer.amazonwebservices.com/connect/thread.jspa?threadID=16434


という細かいネタ。

*1:いや、これ以外の場合も当てはまるだろうけど、まぁ深く話を追ってみてない

*2:なんかその代わり、/dev/tty*はかなりいろいろあるけど。。。