○ glibcのリビルド 4 Xen

*glibcをリビルドすることでxenのtls警告に対応します
*xenを起動するとtlsをdisabledにするよう、警告がでる場合があります
*tlsをdisabledにすると他に影響を与える場合があります
*i386.rpmは"-mno-tls-direct-seg-refs"オプション付きでbuildされています
*make はメンテナンスマシンで行っています

**以降はコメントです
*ソースの取得、削除は省略します
*エディタ、ファイラーの操作は省略します
*Enterキーを省略します

*ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
*設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:glibc-2.5-42.el5_4.3.src.rpm (http://mirrors.kernel.org/centos/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)

○リビルド環境

:OS CentOS 5.4
:selinux disabled
:kernel kernel-2.6.18-164.11.1.el5
:glibc glibc-2.5-42.el5_4.3
:インストール先 
:作業 /usr/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

*メンテナンスは一般ユーザから行います



○System clockの設定

*"system clock"で UTC を使うように設定します
*マシンの再起動

:/etc/sysconfig/clock

ZONE="Asia/Tokyo"
UTC=true
ARC=false

○glibc-2.5-42.el5_4.3

○glibcのリビルド

*/usr/srcでソースファイルを展開します

# useradd mockbuild
# cd /usr/src
# mkdir glibc
# rpm -ivh glibc-2.5-42.el5_4.3.src.rpm
# cd redhat/SPECS

*glibc.specファイルの修正 (下記)

# vi glibc.spec

# rpmbuild -bb --target i686 --clean --rmsource \
--define 'dist .el5_4' glibc.spec

*コンパイルが修了するまで1GHz-CPUで3時間程度かかります
*debuginfoパッケージはインストールしません
*適当なディレクトリに保存してアップデートします

# mv glibc.spec /usr/src/glibc
# cd ../RPMS/i686

*作成されたパッケージ
 glibc-2.5-42.el5_4.3.i686.rpm

# mv *.rpm /usr/src/glibc

*アップデート

# cd /usr/src/glibc
# rpm -Uvh --force glibc-2.5-42.el5_4.3.i686.rpm
# userdel -r mockbuild

:glibc.specの修正

*ix86,i686に"no-tls-direct-seg-refs"オプションを与えてコンパイルします

*省略

%build
GCC=gcc
GXX=g++
%ifarch %{ix86}
BuildFlags="-march=%{_target_cpu} -mtune=generic -mno-tls-direct-seg-refs"
%endif
%ifarch i686
BuildFlags="-march=i686 -mtune=generic -mno-tls-direct-seg-refs"
%endif
%ifarch i386
BuildFlags="$BuildFlags -mno-tls-direct-seg-refs"
%endif

*省略


○ Copyright(c) 528p.com All Rights Reserved.