21 October 2009

Amazon EC2:glibcとtty2〜tty6の不具合。CentOS編

CentOS 5.3をAmazon EC2上に構築した場合、何点かのエラーが発生し対処する必要がある。

・loopデバイスが無い → Xen用のカーネルモジュールに入れ替え
・iptablesが使えない → Xen用のカーネルモジュールに入れ替え
・glibc互換モードの警告 → glibcの再構築
・tty2〜tty6が無い警告 → 仮想端末を作らない暫定対処

上の2つは過去の記事で解決済みなので、この記事では下の2つの対処をする。

■ glibcが互換モードで動作している警告への対処

CentOS起動後、/var/log/messagesに次のようなエラーが記録されているはず。


kernel: ***************************************************************
kernel: ** WARNING: Currently emulating unsupported memory accesses **
kernel: ** in /lib/tls glibc libraries. The emulation is **
kernel: ** slow. To ensure full performance you should **
kernel: ** install a 'xen-friendly' (nosegneg) version of **
kernel: ** the library, or disable tls support by executing **
kernel: ** the following as root: **
kernel: ** mv /lib/tls /lib/tls.disabled **
kernel: ** Offending process: init (pid=1) **
kernel: ***************************************************************

丁寧に、解決方法もメッセージに含まれていて、glibcの再構築か、TLSを切るかのどちらかということらしい。

Googleで同様の事例を検索すると… 『 EC2上にCentOS5.3をインストールする 』に同じ事例が書かれている。 この事例に習い、glibcを再構築する。

この手順は全て『 MathWiki : Xen Specific Glibc 』に書かれている通り行えばよい。


[root@domU ~]# useradd mockbuild

[root@domU ~]# cd /mnt

[root@domU mnt]# wget http://mirror.centos.org/centos/5.3/os/SRPMS/glibc-2.5-34.src.rpm

[root@domU mnt]# mkdir /usr/src/redhat
[root@domU mnt]# mkdir /usr/src/redhat/SOURCES

[root@domU mnt]# rpm -ivh glibc-2.5-34.src.rpm

[root@domU mnt]# vi /usr/src/redhat/SPECS/glibc.spec

※ 書き換え前
%ifarch %{ix86}
BuildFlags="-march=%{_target_cpu} -mtune=generic"
   ↓
※ 書き換え後
%ifarch %{ix86}
BuildFlags="-mno-tls-direct-seg-refs -march=%{_target_cpu}"

[root@domU mnt]# yum install gcc gcc-c++ rpm-build

[root@domU mnt]# yum install gd-devel libpng-devel zlib-devel texinfo libselinux-devel audit-libs-devel libcap-devel

[root@domU mnt]# rpmbuild -ba /usr/src/redhat/SPECS/glibc.spec

※ ビルドが終了するまで90分程度

[root@domU mnt]# rpm -Uvh --force /usr/src/redhat/SRPMS/*

[root@domU mnt]# rpm -Uvh --force /usr/src/redhat/RPMS/i386/*

[root@domU mnt]# userdel mockbuild

■ tty2〜tty6が無い警告への対処

また今度書きます…

■ 参考にしたホームページ
MathWiki : Xen Specific Glibc
glibcのリビルド 4 Xen
EC2上にCentOS5.3をインストールする