結果が微妙であることに気づきました。
そこで、もう一度 RPM をビルドします。
前回のポストで RPM をビルドしたところ・・・
よく見るとちょっと 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
微妙だったところ
RPM のリリース表記がおかしかったのですが、
実際にインストールしてみるとソースファイルへのシンボリックリンクが切れていたり
インストールしたドライバのモジュールが意図しないディレクトリに配置されたりしました。
配置されたソースファイルへのシンボリックリンクが切れている・・・
[root@ovs326-6 ~]# ls /lib/modules/2.6.39-300.32.5.el5uek/source/「make install」 でドライバをインストールしても
ls: /lib/modules/2.6.39-300.32.5.el5uek/source/: No such file or directory ★ソース見つからない
[root@ovs326-6 ~]# cd /lib/modules/2.6.39-300.32.5.el5uek/
[root@ovs326-6 2.6.39-300.32.5.el5uek]# ls -l source build
lrwxrwxrwx 1 root root 47 Jan 7 14:48 build -> ../../../usr/src/kernels/2.6.39-300.32.5.el5uek
lrwxrwxrwx 1 root root 5 Jan 7 14:48 source -> build
[root@ovs326-6 2.6.39-300.32.5.el5uek]# ls ../../../usr/src/kernels/2.6.39-300.32.5.el5uek
ls: ../../../usr/src/kernels/2.6.39-300.32.5.el5uek: No such file or directory
[root@ovs326-6 2.6.39-300.32.5.el5uek]# ls ../../../usr/src/kernels/
2.6.39-300.32.5uek ★ディレクトリ名がよくない。
[root@ovs326-6 2.6.39-300.32.5.el5uek]# rm build ★シンボリックリンクの張り直し
rm: remove symbolic link `build'? y
[root@ovs326-6 2.6.39-300.32.5.el5uek]# ln -s ../../../usr/src/kernels/2.6.39-300.32.5uek build
[root@ovs326-6 2.6.39-300.32.5.el5uek]# ls /lib/modules/2.6.39-300.32.5.el5uek/source/
arch firmware ipc kernel Module.symvers security usr
block fs kabi_whitelist lib net sound virt
crypto include Kbuild Makefile samples System.map
drivers init Kconfig mm scripts tools
★リンク先がみられるようになった・・・
モジュールが意図しないところに配置されてしまいました。
※下記のように新しいモジュールはディレクトリが変・・・
[root@ovs326-6 ~]# ls -l /lib/modules/2.6.39-300.32.5*/kernel/drivers/net/e1000e/e1000e.koそこで、ちゃんとしたリリース表記(uname -r と一致するような)
-rwxr--r-- 1 root root 390968 Aug 6 03:42 /lib/modules/2.6.39-300.32.5.el5uek/kernel/drivers/net/e1000e/e1000e.ko
-rw-r--r-- 1 root root 4673493 Jan 9 12:01 /lib/modules/2.6.39-300.32.5uek/kernel/drivers/net/e1000e/e1000e.ko
になるように RPM をビルドしなおしました。
UEK の RPM ビルドやり直し
今回は、ビルドするマシンも UEK にしました。(今回の失敗とは関係ないですが)
[root@sv2 ~]# cat /etc/oracle-release
Oracle Linux Server release 5.8
[root@sv2 ~]# uname -a
Linux sv2 2.6.32-300.10.1.el5uek #1 SMP Wed Feb 22 17:37:40 EST 2012 x86_64 x86_64 x86_64 GNU/Linux
[root@sv2 ~]# uname -r
2.6.32-300.10.1.el5uek ★この表記と RPM のリリース表記を合わせたい。
カーネルのビルドをしてしまうと時間がかかるため、
まず ソース RPM だけビルドしてみて、リリース表記を確認してみました。
SPEC ファイルの「dist」という定義が見当たらなかったので
仕方なく rpmbuild コマンド実行時に「--define」で直接指定したところ
RPM リリース表記は期待通りになりました。
※「警告: ホスト名を正式なものにできません」 はホスト名が名前解決できないためです。
[root@sv2 ~]# rpmbuild --help | grep defineそして…
-D, --define='MACRO EXPR' 値 EXPR を持つ MACRO を定義します。
[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
RPM をビルドしなおします。
今回は途中で rngd (手動での乱数生成)を実行する必要がありませんでした。
(UEKでビルドしたため?)
[root@sv2 redhat]# rpmbuild -ba SPECS/kernel-uek.spec --define "dist .el5"
実行中(%prep): /bin/sh -e /var/tmp/rpm-tmp.7437
+ 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 ']'
+ cd kernel-2.6.39
+ '[' -d linux-2.6.39.x86_64 ']'
+ rm -rf deleteme.x86_64
+ mv linux-2.6.39.x86_64 deleteme.x86_64
+ cp -rl vanilla-2.6.39 linux-2.6.39.x86_64
+ rm -rf deleteme.x86_64
+ cd linux-2.6.39.x86_64
(★4万2000行くらい省略。ビルドに数時間かかる。)
警告: ファイルが2回表記されています: /usr/src/kernels/2.6.39-300.32.5.el5uek.debug/virt
警告: ファイルが2回表記されています: /usr/src/kernels/2.6.39-300.32.5.el5uek.debug/virt/kvm
警告: ファイルが2回表記されています: /usr/src/kernels/2.6.39-300.32.5.el5uek.debug/virt/kvm/Kconfig
ファイルの処理中: kernel-uek-debug-debuginfo-2.6.39-300.32.5.el5uek
伸張ファイルの検査中: /usr/lib/rpm/check-files /var/tmp/kernel-2.6.39-300.32.5.el5uek-root
警告: ホスト名を正式なものにできません: sv2
書き込み完了: /usr/src/redhat/SRPMS/kernel-uek-2.6.39-300.32.5.el5uek.src.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-2.6.39-300.32.5.el5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-headers-2.6.39-300.32.5.el5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debuginfo-common-2.6.39-300.32.5.el5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-devel-2.6.39-300.32.5.el5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debuginfo-2.6.39-300.32.5.el5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debug-2.6.39-300.32.5.el5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debug-devel-2.6.39-300.32.5.el5uek.x86_64.rpm
書き込み完了: /usr/src/redhat/RPMS/x86_64/kernel-uek-debug-debuginfo-2.6.39-300.32.5.el5uek.x86_64.rpm
実行中(%clean): /bin/sh -e /var/tmp/rpm-tmp.83740
+ umask 022
+ cd /usr/src/redhat/BUILD
+ cd kernel-2.6.39
+ rm -rf /var/tmp/kernel-2.6.39-300.32.5.el5uek-root
+ exit 0
[root@sv2 redhat]#
作成された RPM ファイル
期待どおりになりました・・・
[root@sv2 redhat]# pwd
/usr/src/redhat
[root@sv2 redhat]# ls -sh RPMS/x86_64/
合計 930M
32M kernel-uek-2.6.39-300.32.5.el5uek.x86_64.rpm
32M kernel-uek-debug-2.6.39-300.32.5.el5uek.x86_64.rpm
403M kernel-uek-debug-debuginfo-2.6.39-300.32.5.el5uek.x86_64.rpm
8.8M kernel-uek-debug-devel-2.6.39-300.32.5.el5uek.x86_64.rpm
403M kernel-uek-debuginfo-2.6.39-300.32.5.el5uek.x86_64.rpm
43M kernel-uek-debuginfo-common-2.6.39-300.32.5.el5uek.x86_64.rpm
8.8M kernel-uek-devel-2.6.39-300.32.5.el5uek.x86_64.rpm
1.2M kernel-uek-headers-2.6.39-300.32.5.el5uek.x86_64.rpm
[root@sv2 redhat]# ls -sh SRPMS/
合計 80M
80M kernel-uek-2.6.39-300.32.5.el5uek.src.rpm
以上、UEK の RPM 作成の失敗談とリテイクでした。
0 件のコメント:
コメントを投稿