「make install」 するために kernel-uek-devel と kernel-uek-headers の
RPMパッケージが必要になりました。
しかし、OVS のインストールメディアやパブリック YUM サイト(public-yum.oracle.com)では
このパッケージが見つけられませんでした。
そこで、kernel-uek のソース RPM から
kernel-uek-devel と kernel-uek-headers のRPMを作成してみました。
今回は、Oracle Linux 5.8 (64bit) の環境でビルドしてみました。
[root@sv2 ~]# cat /etc/oracle-release
Oracle Linux Server release 5.8
[root@sv2 ~]# uname -a
Linux sv2 2.6.18-308.el5 #1 SMP Sat Feb 25 12:40:07 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
ソース RPM のインストール
まず、ソース RPM(kernel-uek-2.6.39-300.32.5.el5uek.src.rpm)を入手します。
e-Delivery から Oracle VM Server 3.2.6 のソースファイルメディアを DL してもよいと思いますが、
容量が大きいので、下記のパブリックYUMリポジトリから DL しました。
http://public-yum.oracle.com/repo/OracleVM/OVM3/latest/x86_64/
UEK のソース RPM をインストールします。
[root@sv2 ~]# rpm -ivh kernel-uek-2.6.39-300.32.5.el5uek.src.rpm
警告: kernel-uek-2.6.39-300.32.5.el5uek.src.rpm: ヘッダ V3 DSA signature: NOKEY, key ID 1e5e0159
1:kernel-uek ########################################### [100%]
[root@sv2 ~]# ls /usr/src/redhat/SOURCES/
Makefile.config config-powerpc-generic find-provides
Module.kabi_i686 config-powerpc32-generic genkey
Module.kabi_x86_64 config-powerpc32-smp kabi_whitelist_i686
check-kabi config-powerpc64 kabi_whitelist_x86_64
config-arm config-rhel-generic kabitool
config-debug config-s390x linux-2.6.39.tar.bz2
config-generic config-sparc64-generic merge.pl
config-i686 config-x86-generic perf
config-ia64-generic config-x86_64-generic
config-nodebug extrakeys.pub
[root@sv2 ~]# ls /usr/src/redhat/SPECS/
kernel-uek.spec
RPM のビルド
rpmbuild コマンドで SPECファイルを指定して RPM をビルドします。
[root@sv2 ~]# cd /usr/src/redhat/
[root@sv2 redhat]# rpmbuild -ba SPECS/kernel-uek.spec
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.96057
+ umask 022
+ cd /usr/src/redhat/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ patch_command='patch -p1 -F1 -s'
+ '[' -f .shared-srctree ']'
+ '[' '!' -d kernel-2.6.39/vanilla-2.6.39 ']'
+ '[' -d kernel-2.6.39/vanilla-2.6.39 ']'
+ rm -f pax_global_header
+ [[ ! -z '' ]]
+ cd /usr/src/redhat/BUILD
+ rm -rf kernel-2.6.39
+ /bin/mkdir -p kernel-2.6.39
+ cd kernel-2.6.39
+ /usr/bin/bzip2 -dc /usr/src/redhat/SOURCES/linux-2.6.39.tar.bz2
+ tar -xf -
(省略)
ビルド処理の途中で、PGP鍵生成でエントロピーが足らないようなメッセージがでて
処理が止まります。(ビルド環境が VM のせいかもしれません)
+ cp /usr/src/redhat/SOURCES/extrakeys.pub .
+ cat
###
### Now generating a PGP key pair to be used for signing modules.
###
### If this takes a long time, you might wish to run rngd in the background to
### keep the supply of entropy topped up. It needs to be run as root, and
### should use a hardware random number generator if one is available, eg:
###
### rngd -r /dev/hwrandom
###
### If one isn't available, the pseudo-random number generator can be used:
###
### rngd -r /dev/urandom
###
+ gpg --homedir . --batch --gen-key /usr/src/redhat/SOURCES/genkey
gpg: WARNING: unsafe permissions on homedir `.'
gpg: keyring `./secring.gpg' created
gpg: keyring `./pubring.gpg' created
+++++++++++++++.++++++++++++++++++++.+++++++++++++++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++>+++++.+++++>+++++....<+++++...............<.+++++...>+++++.............................................................................................................................................................................................................+++++
Not enough random bytes available. Please do some other work to give
the OS a chance to collect more entropy! (Need 280 more bytes)
上記のようにビルドがとまったら、別のターミナル(SSHのセッションなど)から
下記の乱数生成コマンドを実行すると、ビルド処理が進みます。
[root@sv2 ~]# rngd -r /dev/urandom
4万2000行くらい出力され、ビルド完了します。
ここまで数時間(2VCPUのVMでも5時間以上・・・)かかります。
(省略)
警告: ファイルが2回表記されています: /usr/src/kernels/2.6.39-300.32.5uek.debug/usr/Makefile
警告: ファイルが2回表記されています: /usr/src/kernels/2.6.39-300.32.5uek.debug/virt
警告: ファイルが2回表記されています: /usr/src/kernels/2.6.39-300.32.5uek.debug/virt/kvm
警告: ファイルが2回表記されています: /usr/src/kernels/2.6.39-300.32.5uek.debug/virt/kvm/Kconfig
ファイルの処理中: kernel-uek-debug-debuginfo-2.6.39-300.32.5uek
伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/kernel-2.6.39-300.32.5uek-root
警告: ホスト名を正式なものにできません: sv2
書き込み完了: /usr/src/redhat/SRPMS/kernel-uek-2.6.39-300.32.5uek.src.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-2.6.39-300.32.5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-headers-2.6.39-300.32.5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debuginfo-common-2.6.39-300.32.5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-devel-2.6.39-300.32.5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debuginfo-2.6.39-300.32.5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debug-2.6.39-300.32.5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debug-devel-2.6.39-300.32.5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debug-debuginfo-2.6.39-300.32.5uek.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.22326
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd kernel-2.6.39
+ rm -rf /var/tmp/kernel-2.6.39-300.32.5uek-root
+ exit 0
[root@sv2 redhat]#
ビルドで作成されたRPMファイルの確認。
kernel-uek のソース RPM に同梱されている SPECファイルで RPM を作成すると、
kernel-uek-~ のRPM が一式まとめて
(kernel-uek-devel と kernel-uek-headers も)作成されます。
[root@sv2 redhat]# pwd
/usr/src/redhat
[root@sv2 redhat]# ls -l RPMS/
合計 8
drwxr-xr-x 2 root root 4096 2月 24 2012 noarch
drwxr-xr-x 2 root root 4096 1月 7 03:32 x86_64
[root@sv2 redhat]# ls -l RPMS/x86_64/
合計 951480
-rw-r--r-- 1 root root 33143636 1月 7 02:22 kernel-uek-2.6.39-300.32.5uek.x86_64.rpm
-rw-r--r-- 1 root root 33171772 1月 7 02:59 kernel-uek-debug-2.6.39-300.32.5uek.x86_64.rpm
-rw-r--r-- 1 root root 421300455 1月 7 03:32 kernel-uek-debug-debuginfo-2.6.39-300.32.5uek.x86_64.rpm
-rw-r--r-- 1 root root 9159971 1月 7 02:59 kernel-uek-debug-devel-2.6.39-300.32.5uek.x86_64.rpm
-rw-r--r-- 1 root root 421330234 1月 7 02:55 kernel-uek-debuginfo-2.6.39-300.32.5uek.x86_64.rpm
-rw-r--r-- 1 root root 44890858 1月 7 02:23 kernel-uek-debuginfo-common-2.6.39-300.32.5uek.x86_64.rpm
-rw-r--r-- 1 root root 9145631 1月 7 02:23 kernel-uek-devel-2.6.39-300.32.5uek.x86_64.rpm
-rw-r--r-- 1 root root 1164167 1月 7 02:22 kernel-uek-headers-2.6.39-300.32.5uek.x86_64.rpm
ちなみに、ビルドで使用したソースファイルやSPECファイルをもとに、ソース RPM も生成されます。
[root@sv2 redhat]# ls -l SRPMS/
合計 81244
-rw-r--r-- 1 root root 83105131 1月 7 02:19 kernel-uek-2.6.39-300.32.5uek.src.rpm
カーネルのビルドには結構容量が必要です。
/usr/src/redhat ディレクトリ配下の使用容量は今回のビルドによるものなので、
8.5GBぐらいの空き容量があったほうがよさそうです。
[root@sv2 redhat]# pwd
/usr/src/redhat
[root@sv2 redhat]# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/sda3 8.5G 3.3G 4.8G 41% /
/dev/sda1 251M 27M 212M 12% /boot
tmpfs 1006M 0 1006M 0% /dev/shm
/dev/sdb1 16G 8.4G 6.7G 56% /usr/src/redhat
[root@sv2 redhat]# du -sh *
7.2G BUILD
930M RPMS
80M SOURCES
828K SPECS
80M SRPMS
16K lost+found
以上、 kernel-uek-devel と kernel-uek-headers のRPM作成でした。
【補足】 2014/01/12
よく見るとちょっと RPM のリリース番号がおかしいので
SPEC ファイルの修正などがいるのかもしれません。
今回作成されたのは 上の RPM で、本当は下ファイル名の方が・・・
kernel-uek-devel-2.6.39-300.32.5uek.x86_64.rpm
kernel-uek-devel-2.6.39-300.32.5.el5uek.x86_64.rpm
そして行儀のよい方法を模索中です。
[root@sv2 redhat]# grep -n "define pkg_release" SPECS/kernel-uek.spec
143:%define pkg_release 300.32.5%{?dist}uek%{?buildid}
158:%define pkg_release 300.32.5%{?dist}uek%{?buildid}
190:%define pkg_release 300.32.5%{?dist}uek%{?buildid}
194:%define pkg_release 300.32.5%{?dist}uek%{?buildid}
[root@sv2 redhat]# rpmbuild -bs SPECS/kernel-uek.spec --define "dist .el5"
警告: ホスト名を正式なものにできません: sv2
書き込み完了: /usr/src/redhat/SRPMS/kernel-uek-2.6.39-300.32.5.el5uek.src.rpm
こんなシェルもありましたが…
[root@sv2 redhat]# /usr/lib/rpm/redhat/dist.sh
.el5[root@sv2 redhat]#
[root@sv2 redhat]# /usr/lib/rpm/redhat/dist.sh --help
Usage: /usr/lib/rpm/redhat/dist.sh [OPTIONS]
Default mode is --dist. Possible options:
--el for RHEL version (if RHEL)
--fc for Fedora version (if Fedora)
--rhl for RHL version (if RHL)
--dist for distribution tag
--distnum for distribution number (major)
--disttype for distribution type
[root@sv2 redhat]# rpmbuild -bs SPECS/kernel-uek.spec --define "dist `/usr/lib/rpm/redhat/dist.sh`"
警告: ホスト名を正式なものにできません: sv2
書き込み完了: /usr/src/redhat/SRPMS/kernel-uek-2.6.39-300.32.5.el5uek.src.rpm
ちなみに、「警告: ホスト名を正式なものにできません:」は、
この Linux のホスト名が名前解決できていないから警告が出ています。
ビルドやり直しました。2014/01/13
この Linux のホスト名が名前解決できていないから警告が出ています。
ビルドやり直しました。2014/01/13
0 件のコメント:
コメントを投稿