Unbreakable Enterprise Kernel(UEK)R4 の Update X と
Linux Kernel バージョンの対応がまとまった情報が見つからなかったため、
ORACLE の Public Yum にある RPM のバージョンで見てみました。
UEK R4 の YUM リポジトリ(ol7_UEKR4)の参照は、
最近の Oracle Linux ではでデフォルトで有効です。
Latest UEK Release 4 packages for Oracle Linux 7 (x86_64)
http://yum.oracle.com/repo/OracleLinux/OL7/UEKR4/x86_64/
UEK R4 の Linux カーネルは 4.1.12-32 がベースになっていて、
UEK R4 Update 1 は 4.1.12-32 のまま、そのあとの 4.1.12-32.x の数字があがり 、
それ以降は Update が上がるたびに 4.1.12-x の数字が上がっていきます。
2018年2月1日木曜日
2016年1月24日日曜日
Oracle Linux 7.x の Docker 1.9 は、UEK R4 が前提となっている。
Oracle Linux 7.2 に、Docker 1.9 の RPM (docker-engine-1.9.1-1.0.1)を
インストールしてみました。
どうやら Oracle Linux での Docker 1.9 は、UEK R4 を前提としているようです。
今回の Docker インストール先の環境。
カーネルはまだ UEK R3(3.8.13)です。
インストールしてみました。
どうやら Oracle Linux での Docker 1.9 は、UEK R4 を前提としているようです。
今回の Docker インストール先の環境。
カーネルはまだ UEK R3(3.8.13)です。
[root@ol72-min02 ~]# cat /etc/oracle-release
Oracle Linux Server release 7.2
[root@ol72-min02 ~]# uname -r
3.8.13-98.7.1.el7uek.x86_64
2014年3月29日土曜日
Oracle VM Server 3.3.1 は OL6 ベース。
ちょっと乗り遅れ感がありますが、
Oracle VM Server 3.3 のベータ版をインストールしてみました。
OVS のインストールメディア(ISOファイル)は
OVS-3.3.1-trunk-776.1.iso です。
Dom-0 のカーネルは UEK R3(3.8.13-~)になっています。
ちなみに、メモリ2GB、ディスク8GB のマシン(VM ですが)にインストールしたところ、
デフォルトだと、パーティション構成は下記のようになりました。
OVS 3.3 ~ は、
Oracle Linux 6 をベースにしています。
起動画面も OL6 っぽくなりました。
右下には「Oracle VM server 3.3.1」と表示されています。

起動完了すると、これまでと同じ感じになります。
まだ Oracle VM Manager には登録していません・・・

以上、OVS 3.3 ベータ版をインストールしてみた話でした。
Oracle VM Server 3.3 のベータ版をインストールしてみました。
Oracle VM Early Access Downloads
http://www.oracle.com/technetwork/server-storage/vm/downloads/ovm-early-access-1743261.html
OVS のインストールメディア(ISOファイル)は
OVS-3.3.1-trunk-776.1.iso です。
Dom-0 のカーネルは UEK R3(3.8.13-~)になっています。
[root@ovs331-1 ~]# cat /etc/ovs-release
Oracle VM server release 3.3.1
[root@ovs331-1 ~]# uname -r
3.8.13-16.3.1.el6uek.x86_64
[root@ovs331-1 ~]# rpm -q xen
xen-4.3.0-22.el6.x86_64
ちなみに、メモリ2GB、ディスク8GB のマシン(VM ですが)にインストールしたところ、
デフォルトだと、パーティション構成は下記のようになりました。
[root@ovs331-1 ~]# sfdisk -uM -l
ディスク /dev/sda: シリンダ数 1044、ヘッド数 255、63 セクタ/トラック
Units = 1048576 バイトをメガバイト、1024 バイトのブロック、0 から数えます
デバイス ブート 始点 終点 MiB #ブロック Id システム
/dev/sda1 * 1 500 500 512000 83 Linux
/dev/sda2 501 3863 3363 3443712 83 Linux
/dev/sda3 3864 7863 4000 4096000 82 Linux スワップ / Solaris
/dev/sda4 7864 8191 328 335872 83 Linux
[root@ovs331-1 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 3.2G 1.1G 2.0G 36% /
tmpfs 243M 0 243M 0% /dev/shm
/dev/sda1 477M 45M 407M 10% /boot
none 243M 40K 243M 1% /var/lib/xenstored
[root@ovs331-1 ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 4095996 0 -1
OVS 3.3 ~ は、
Oracle Linux 6 をベースにしています。
起動画面も OL6 っぽくなりました。
右下には「Oracle VM server 3.3.1」と表示されています。

起動完了すると、これまでと同じ感じになります。
まだ Oracle VM Manager には登録していません・・・

以上、OVS 3.3 ベータ版をインストールしてみた話でした。
2014年1月20日月曜日
Oracle VM Server 3.2.7 はじめました。
最近、Oracle VM Server 3.2.7 が e-Delivery でダウンロードできるようになりました。
Dom-0 で、UEK と Xen のバージョンを見てみました。
Oracle VM server 3.2.6
[root@ovs326-1 ~]# cat /etc/ovs-release
Oracle VM server release 3.2.6
[root@ovs326-1 ~]# uname -r
2.6.39-300.32.5.el5uek
[root@ovs326-1 ~]# rpm -q xen
xen-4.1.3-25.el5.53
[root@ovs326-1 ~]# head -n 5 /etc/ovs-info
OVS summary
release: 3.2.6
date: 201309082324
build: 729
Oracle VM server 3.2.7
[root@ovs327-1 ~]# cat /etc/ovs-release
Oracle VM server release 3.2.7
[root@ovs327-1 ~]# uname -r
2.6.39-300.32.6.el5uek
[root@ovs327-1 ~]# rpm -q xen
xen-4.1.3-25.el5.88
[root@ovs327-1 ~]# head -n 5 /etc/ovs-info
OVS summary
release: 3.2.7
date: 201312021509
build: 732
Oracle VM 的な修正では、どうしても必要なものがあったわけではないのですが、
せっかくなので 3.2.7 を使い始めようと思います。
Oracle VM What's New
https://wikis.oracle.com/display/oraclevm/Oracle+VM+What's+New#OracleVMWhat%27sNew-OracleVMServer3.2.7
以上、Oracle VM Manager もそろそろバージョンアップしてみようかと思いました。
2014年1月14日火曜日
Oracle VM Server 3.2.6 への NIC ドライバ導入(Intel NUC D34010WYK)
Haswell の Intel NUC D34010WYK に Oracle VM Server 3.2.6 をインストールしたら
残念ながら NIC のドライバが当たりませんでした。
そこで、Intel のサイトから Intel I218-V のドライバをダウンロードして
インストールしてみました。
Intel NUC Kit D34010WYK
http://ark.intel.com/ja/products/76978/
Intel I218 ファミリー (NIC)
http://www.intel.com/content/www/us/en/ethernet-controllers/ethernet-connection-i218-family.html
NIC ドライバをインストールする OVS
[root@ovs326-6 ~]# dmidecode -s baseboard-product-name
# SMBIOS implementations newer than version 2.6 are not
# fully supported by this version of dmidecode.
D34010WYK
[root@ovs326-6 ~]# cat /etc/redhat-release
Oracle VM server release 3.2.6
[root@ovs326-6 ~]# cat /etc/oracle-release
Oracle VM Server release 5.7
[root@ovs326-6 ~]# uname -a
Linux ovs326-6 2.6.39-300.32.5.el5uek #1 SMP Mon Aug 5 11:19:15 PDT 2013 x86_64 x86_64 x86_64 GNU/Linux
NIC ドライバのソースファイル
I218-V のドライバを下記からダウンロードします。
https://downloadcenter.intel.com/Detail_Desc.aspx?agr=Y&DwnldID=15817&lang=jpn
[root@ovs326-6 ~]# ls -l e1000e-2.5.4.tar.gz
-rw-r--r-- 1 root root 269997 Jan 13 08:25 e1000e-2.5.4.tar.gz
RPM ファイル
OVS には gcc、make、man もインストールします。
依存関係のある RPM も含めて Oracle Linux 5.7 x86_64(64bit)の
インストールメディアから持ってきました。
ORACLE の パブリック YUM リポジトリからも入手できます。
http://public-yum.oracle.com/repo/OracleLinux/OL5/7/base/x86_64/
cpp-4.1.2-51.el5.x86_64.rpmkernel-uek-devel と kernel-uek-headers は、
gcc-4.1.2-51.el5.x86_64.rpm
glibc-2.5-65.i686.rpm
glibc-2.5-65.x86_64.rpm
glibc-common-2.5-65.x86_64.rpm
glibc-devel-2.5-65.x86_64.rpm
glibc-headers-2.5-65.x86_64.rpm
groff-1.18.1.1-11.1.x86_64.rpm
libgcc-4.1.2-51.el5.x86_64.rpm
libgomp-4.4.4-13.el5.x86_64.rpm
make-3.81-3.el5.x86_64.rpm
man-1.6d-2.el5.x86_64.rpm
nscd-2.5-65.x86_64.rpm
OVS 3.2.6 の UEK カーネルバージョンが一致する RPM が
インストールメディアやパブリック YUM サイトに見当たらなかったので
ソース RPM からビルドしました。
kernel-uek-devel-2.6.39-300.32.5.el5uek.x86_64.rpm
kernel-uek-headers-2.6.39-300.32.5.el5uek.x86_64.rpm
0. OVS のインストール
NIC を認識しないマシンには OVS がインストールできないため、
別のマシンを利用して USB メモリにOVSをインストールしておきます。
そして、 NUC を USB メモリで OVS を起動します。
NUC のローカル SSD に別の OS が入っていなければ、
USB メモリを接続して NUC の電源を入れるだけで起動できます。
NIC ドライバ適用前の状態
Intel の Ethernet controller は認識されていますが、使用できませんでした。
[root@ovs326-6 ~]# lspci
00:00.0 Host bridge: Intel Corporation Device 0a04 (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Device 0a16 (rev 09)
00:03.0 Audio device: Intel Corporation Device 0a0c (rev 09)
00:14.0 USB Controller: Intel Corporation Device 9c31 (rev 04)
00:16.0 Communication controller: Intel Corporation Device 9c3a (rev 04)
00:19.0 Ethernet controller: Intel Corporation Device 1559 (rev 04)
00:1b.0 Audio device: Intel Corporation Device 9c20 (rev 04)
00:1d.0 USB Controller: Intel Corporation Device 9c26 (rev 04)
00:1f.0 ISA bridge: Intel Corporation Device 9c43 (rev 04)
00:1f.3 SMBus: Intel Corporation Device 9c22 (rev 04)
bond0 は作成されていますが、MACアドレスは 00:00:00:00:00:00 で
eth0 は作成されていません。
ちなみに /etc/modprobe.conf で eth0 の エイリアスを e1000e にして
モジュールをロードしてもダメでした。
[root@ovs326-6 ~]# ifconfig -a
bond0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
inet addr:192.168.4.26 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST MASTER MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:46 errors:0 dropped:0 overruns:0 frame:0
TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:6905 (6.7 KiB) TX bytes:6905 (6.7 KiB)
1. RPM のインストール
ドライバのインストールに必要な RPM をインストールしておきます。
[root@ovs326-6 rpm]# ls
cpp-4.1.2-51.el5.x86_64.rpm
gcc-4.1.2-51.el5.x86_64.rpm
glibc-2.5-65.i686.rpm
glibc-2.5-65.x86_64.rpm
glibc-common-2.5-65.x86_64.rpm
glibc-devel-2.5-65.x86_64.rpm
glibc-headers-2.5-65.x86_64.rpm
groff-1.18.1.1-11.1.x86_64.rpm
kernel-uek-devel-2.6.39-300.32.5.el5uek.x86_64.rpm
kernel-uek-headers-2.6.39-300.32.5.el5uek.x86_64.rpm
libgcc-4.1.2-51.el5.x86_64.rpm
libgomp-4.4.4-13.el5.x86_64.rpm
make-3.81-3.el5.x86_64.rpm
man-1.6d-2.el5.x86_64.rpm
nscd-2.5-65.x86_64.rpm
[root@ovs326-6 rpm]# rpm -Uvh *rpm
warning: cpp-4.1.2-51.el5.x86_64.rpm: Header V3 DSA signature: NOKEY, key ID 1e5e0159
Preparing... #################### [100%]
1:libgcc #################### [ 7%]
2:glibc-common #################### [ 13%]
3:glibc #################### [ 20%]
4:cpp #################### [ 27%]
5:groff #################### [ 33%]
6:libgomp #################### [ 40%]
7:kernel-uek-headers #################### [ 47%]
8:man #################### [ 53%]
9:make #################### [ 60%]
10:nscd #################### [ 67%]
11:glibc-headers #################### [ 73%]
12:glibc-devel #################### [ 80%]
13:kernel-uek-devel #################### [ 87%]
14:glibc #################### [ 93%]
15:gcc #################### [100%]
2. ソースファイルの編集
ドライバを make install すると、エラーになってしまいました。
[root@ovs326-6 src]# make install
make -C /lib/modules/2.6.39-300.32.5.el5uek/build SUBDIRS=/root/e1000e-2.5.4/src modules
make[1]: Entering directory `/usr/src/kernels/2.6.39-300.32.5.el5uek'
CC [M] /root/e1000e-2.5.4/src/netdev.o
In file included from /root/e1000e-2.5.4/src/e1000.h:39,
from /root/e1000e-2.5.4/src/netdev.c:55:
/root/e1000e-2.5.4/src/kcompat.h:3446: error: redefinition of typedef ‘netdev_features_t’
include/linux/netdevice.h:985: error: previous declaration of ‘netdev_features_t’ was here
make[2]: *** [/root/e1000e-2.5.4/src/netdev.o] Error 1
make[1]: *** [_module_/root/e1000e-2.5.4/src] Error 2
make[1]: Leaving directory `/usr/src/kernels/2.6.39-300.32.5.el5uek'
make: *** [default] Error 2
そこで、今回は下記のようにファイルを編集してしまいました。
[root@ovs326-6 src]# cp -p /usr/src/kernels/2.6.39-300.32.5.el5uek/include/linux/netdevice.h ~/netdevice.h_orig
[root@ovs326-6 src]# vi /usr/src/kernels/2.6.39-300.32.5.el5uek/include/linux/netdevice.h
/usr/src/kernels/2.6.39-300.32.5.el5uek/include/linux/netdevice.h の編集内容
(編集前)
985 typedef u32 netdev_features_t;(編集後)
986 /*
987 * The DEVICE structure.
988 * Actually, this whole structure is a big mistake. It mixes I/O
989 * data with strictly "high-level" data, and it has to know about
990 * almost every data structure used in the INET module.
991 *
992 * FIXME: cleanup struct net_device such that network protocol info
993 * moves out.
994 */
985 //typedef u32 netdev_features_t;(差分)
986 /*
987 * The DEVICE structure.
988 * Actually, this whole structure is a big mistake. It mixes I/O
989 * data with strictly "high-level" data, and it has to know about
990 * almost every data structure used in the INET module.
991 *
992 * FIXME: cleanup struct net_device such that network protocol info
993 * moves out.
994 */
[root@ovs326-6 src]# diff ~/netdevice.h_orig /usr/src/kernels/2.6.39-300.32.5.el5uek/include/linux/netdevice.h
985c985
< typedef u32 netdev_features_t;
---
> //typedef u32 netdev_features_t;
3. NIC ドライバのインストール
ドライバは、ソースからインストールします。
[root@ovs326-6 ~]# tar zxf e1000e-2.5.4.tar.gz
[root@ovs326-6 ~]# cd e1000e-2.5.4/src/
[root@ovs326-6 src]# make install
make -C /lib/modules/2.6.39-300.32.5.el5uek/build SUBDIRS=/root/e1000e-2.5.4/src modules
make[1]: Entering directory `/usr/src/kernels/2.6.39-300.32.5.el5uek'
CC [M] /root/e1000e-2.5.4/src/netdev.o
CC [M] /root/e1000e-2.5.4/src/ethtool.o
CC [M] /root/e1000e-2.5.4/src/param.o
CC [M] /root/e1000e-2.5.4/src/82571.o
CC [M] /root/e1000e-2.5.4/src/ich8lan.o
CC [M] /root/e1000e-2.5.4/src/80003es2lan.o
CC [M] /root/e1000e-2.5.4/src/mac.o
CC [M] /root/e1000e-2.5.4/src/nvm.o
CC [M] /root/e1000e-2.5.4/src/phy.o
CC [M] /root/e1000e-2.5.4/src/manage.o
CC [M] /root/e1000e-2.5.4/src/kcompat.o
LD [M] /root/e1000e-2.5.4/src/e1000e.o
Building modules, stage 2.
MODPOST 1 modules
CC /root/e1000e-2.5.4/src/e1000e.mod.o
LD [M] /root/e1000e-2.5.4/src/e1000e.ko.unsigned
NO SIGN [M] /root/e1000e-2.5.4/src/e1000e.ko
make[1]: Leaving directory `/usr/src/kernels/2.6.39-300.32.5.el5uek'
gzip -c ../e1000e.7 > e1000e.7.gz
# remove all old versions of the driver
find /lib/modules/2.6.39-300.32.5.el5uek -name e1000e.ko -exec rm -f {} \; || true
find /lib/modules/2.6.39-300.32.5.el5uek -name e1000e.ko.gz -exec rm -f {} \; || true
install -D -m 644 e1000e.ko /lib/modules/2.6.39-300.32.5.el5uek/kernel/drivers/net/e1000e/e1000e.ko
/sbin/depmod -a || true
install -D -m 644 e1000e.7.gz /usr/share/man/man7/e1000e.7.gz
man -c -P'cat > /dev/null' e1000e || true
Formatting page, please wait...
[root@ovs326-6 src]#
4. 設定ファイルの編集
インストールした NIC ドライバをロードする前に
モジュールのエイリアスと、インターフェースの設定ファイルを修正しておきます。
modprobe.conf の修正
(修正前)
[root@ovs326-6 ~]# cat /etc/modprobe.conf | grep e1000
alias eth0 e1000
↓
(修正後)
[root@ovs326-6 src]# cat /etc/modprobe.conf | grep e1000
alias eth0 e1000e
/etc/sysconfig/network-scripts/ifcfg-eth0 の編集
OVS は NIC を認識しないマシンにはインストールできないので
この OVS は、別のマシンで USBメモリにインストールしていました。
その時にインストールした時に認識した NIC の名前と
MACアドレス(HWADDR=XX:XX:XX:XX:XX:XX の部分)を削除 か コメントアウトします。
Intel NUC はオンボード のネットワークポート が 1つしかないため
ifcfg-ethX で MAC アドレスを明記しなくてもなんとか使えます…
(修正前)
# Intel Corporation 82540EM Gigabit Ethernet Controller
DEVICE=eth0
BOOTPROTO=none
HWADDR=08:00:27:F3:4E:16
ONBOOT=yes
MASTER=bond0
SLAVE=yes
↓
(修正後)
DEVICE=eth0
BOOTPROTO=none
#HWADDR=08:00:27:F3:4E:16
ONBOOT=yes
MASTER=bond0
SLAVE=yes
5. e1000e モジュールのロード
modprobe コマンドで、e1000e ドライバをロードします。
[root@ovs326-6 ~]# modprobe e1000e
[root@ovs326-6 ~]# lsmod | grep e1000
e1000e 258218 0
e1000 164944 0
eth0 が認識されるようになります。
[root@ovs326-6 src]# ifconfig -aこれで OVS がネットワークに接続できるようになります。
bond0 Link encap:Ethernet HWaddr EC:A8:6B:FD:6F:63
inet addr:192.168.4.26 Bcast:192.168.4.255 Mask:255.255.255.0
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:184 errors:0 dropped:0 overruns:0 frame:0
TX packets:148 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:22686 (22.1 KiB) TX bytes:80761 (78.8 KiB)
eth0 Link encap:Ethernet HWaddr EC:A8:6B:FD:6F:63
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:184 errors:0 dropped:0 overruns:0 frame:0
TX packets:148 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:22686 (22.1 KiB) TX bytes:80761 (78.8 KiB)
Interrupt:20 Memory:f7c00000-f7c20000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:92 errors:0 dropped:0 overruns:0 frame:0
TX packets:92 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:19928 (19.4 KiB) TX bytes:19928 (19.4 KiB)
おまけ
OVS 3.2.6 がもともと持っている e1000e ドライバの情報
※ これでは NIC が認識しなかった。
[root@ovs326-6 ~]# modinfo e1000e | head
filename: /lib/modules/2.6.39-300.32.5.el5uek/kernel/drivers/net/e1000e/e1000e.ko
version: 2.0.0.1-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation, <linux.nics@intel.com>
srcversion: 4E1E5D9368E2FAE279A50EE
alias: pci:v00008086d0000153Bsv*sd*bc*sc*i*
alias: pci:v00008086d0000153Asv*sd*bc*sc*i*
alias: pci:v00008086d00001503sv*sd*bc*sc*i*
alias: pci:v00008086d00001502sv*sd*bc*sc*i*
今回インストール(アップデート)したドライバの情報
[root@ovs326-6 ~]# modinfo e1000e | head
filename: /lib/modules/2.6.39-300.32.5.el5uek/kernel/drivers/net/e1000e/e1000e.ko
version: 2.5.4-NAPI
license: GPL
description: Intel(R) PRO/1000 Network Driver
author: Intel Corporation, <linux.nics@intel.com>
srcversion: 14FC0D45EE1DAA1B5E0DBBA
alias: pci:v00008086d000015A3sv*sd*bc*sc*i*
alias: pci:v00008086d000015A2sv*sd*bc*sc*i*
alias: pci:v00008086d000015A1sv*sd*bc*sc*i*
alias: pci:v00008086d000015A0sv*sd*bc*sc*i*
以上、OVS への NIC ドライバのインストールでした。
2014年1月13日月曜日
UEK の RPM ビルド(失敗談 と リテイク)
前回、Oracle VM Server にインストールすべく UEK の RPM を作成しましたが、
結果が微妙であることに気づきました。
そこで、もう一度 RPM をビルドします。
前回のポストで RPM をビルドしたところ・・・
微妙だったところ
RPM のリリース表記がおかしかったのですが、
実際にインストールしてみるとソースファイルへのシンボリックリンクが切れていたり
インストールしたドライバのモジュールが意図しないディレクトリに配置されたりしました。
配置されたソースファイルへのシンボリックリンクが切れている・・・
モジュールが意図しないところに配置されてしまいました。
※下記のように新しいモジュールはディレクトリが変・・・
になるように RPM をビルドしなおしました。
UEK の RPM ビルドやり直し
今回は、ビルドするマシンも UEK にしました。(今回の失敗とは関係ないですが)
カーネルのビルドをしてしまうと時間がかかるため、
まず ソース RPM だけビルドしてみて、リリース表記を確認してみました。
SPEC ファイルの「dist」という定義が見当たらなかったので
仕方なく rpmbuild コマンド実行時に「--define」で直接指定したところ
RPM リリース表記は期待通りになりました。
※「警告: ホスト名を正式なものにできません」 はホスト名が名前解決できないためです。
RPM をビルドしなおします。
今回は途中で rngd (手動での乱数生成)を実行する必要がありませんでした。
(UEKでビルドしたため?)
作成された RPM ファイル
期待どおりになりました・・・
以上、UEK の RPM 作成の失敗談とリテイクでした。
結果が微妙であることに気づきました。
そこで、もう一度 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 作成の失敗談とリテイクでした。
2014年1月11日土曜日
OVS3 UEK のソース RPM から kernel-uek-devel と kernel-uek-headers を作成する。
最近、Oracle VM Server 3.2.6 に NIC のドライバをインストールしようとしたところ
「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) の環境でビルドしてみました。
ソース 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 をインストールします。
RPM のビルド
rpmbuild コマンドで SPECファイルを指定して RPM をビルドします。
ビルド処理の途中で、PGP鍵生成でエントロピーが足らないようなメッセージがでて
処理が止まります。(ビルド環境が VM のせいかもしれません)
上記のようにビルドがとまったら、別のターミナル(SSHのセッションなど)から
下記の乱数生成コマンドを実行すると、ビルド処理が進みます。
4万2000行くらい出力され、ビルド完了します。
ここまで数時間(2VCPUのVMでも5時間以上・・・)かかります。
ビルドで作成されたRPMファイルの確認。
kernel-uek のソース RPM に同梱されている SPECファイルで RPM を作成すると、
kernel-uek-~ のRPM が一式まとめて
(kernel-uek-devel と kernel-uek-headers も)作成されます。
ちなみに、ビルドで使用したソースファイルやSPECファイルをもとに、ソース RPM も生成されます。
カーネルのビルドには結構容量が必要です。
/usr/src/redhat ディレクトリ配下の使用容量は今回のビルドによるものなので、
8.5GBぐらいの空き容量があったほうがよさそうです。
以上、 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
そして行儀のよい方法を模索中です。
こんなシェルもありましたが…
「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
2014年1月3日金曜日
Oracle Linux 6.5 の YUM リポジトリ設定のカスタム変数 $uek と $uekr3 について。
Oracle Linux 6.5 からは、UEK R3 が同梱されています。
OL 6.5 64bit (x86_64) をインストールしたところ、デフォルトで
UEK R3 がインストールされ、デフォルトの起動カーネルの選択も UEK です。
YUM リポジトリ設定ファイルに変な変数を発見。
YUMリポジトリ設定の enabled には、通常 0(無効) か 1(有効)が入ります。
しかし、OL6.5 の /etc/yum.repos.d/public-yum-ol6.repo を見たところ、
「public_ol6_UEK_latest」という最新の UEK のリポジトリでは「$uek」、
「public_ol6_UEKR3_latest」という最新の UEK R3 のリポジトリでは「$uekr3」という
YUMの組み込み変数ではないと思われる 変数が使用されています。
これはYUMの カスタム変数 として設定されています。
Redhatのサイトですが・・・
この変数については、下記にも説明がありました。
このカスタム変数は、下記のファイルで設定されています。
ULN に登録していない状態でのデフォルトは、
$uek が 0 (無効)で、$uekr3 が 1 (有効)でした。
UEK は、R3 のリポジトリの方だけ public-yum.oracle.com に見に行くようになっています。
また、OL を ULN に登録すると、両方とも 0 (無効)になり
公開リポジトリの方は見に行かなくなるようです。
ただ、このファイルは RPM パッケージに所属していないように見えます。
UEK の YUM カスタム変数はいつ設定されているのか
YUM リポジトリの設定をしている、public-yum-ol6.repo ファイルは
rhn-client-tools という RPM パッケージに含まれていました。
パッケージ名は uln-~ではなく rhn-~ ですが、
説明文は「Unbreakable Linux Network」になっています。
このパッケージの SPEC ファイル(RPM の情報や作成するときの処理を記載する)を見てみると、
カスタム変数のファイル作成は %post(ファイルをインストールした後の処理)で記載されていました。
そのため、RPM ではこのファイルが管理されてい(-qf では拾えない)ようです。
SPEC ファイルを見るために、
ソースファイルの RPM (~.src.rpm)を下記からDLしてインストールしてみます。
ソースファイルや、パッチファイル、SPECファイルなどが配置されます。
下記のパッチで repo ファイルに $uek や $uekr3 の変数を書いていました。
そしてこのパッチは、適用するパッチとして SPECファイルに記載されています。
そして、SPEC ファイルの 下記のあたりで YUM のカスタム変数のファイルを作成していました。
/etc/yum/vars/uek と /etc/yum/vars/uekr3 を、環境によって 値を変更して作成しています。
たとえば、YUM のリポジトリ設定をスクリプトなどで変更したいときに、
/etc/yum.repos.d 配下のファイルの中身を編集するよりも
/etc/yum/vars 配下のファイルを編集するだけの方が簡単な気がします。
そんなときは YUM のカスタム変数を使うと便利かもしれないと思いました。
以上、UEK リポジトリ設定の YUM カスタム変数についてでした。
OL 6.5 64bit (x86_64) をインストールしたところ、デフォルトで
UEK R3 がインストールされ、デフォルトの起動カーネルの選択も UEK です。
[root@oel65-base-64 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)
[root@oel65-base-64 ~]# uname -a
Linux oel65-base-64 3.8.13-16.2.1.el6uek.x86_64 #1 SMP Thu Nov 7 17:01:44 PST 2013 x86_64 x86_64 x86_64 GNU/Linux
YUM リポジトリ設定ファイルに変な変数を発見。
YUMリポジトリ設定の enabled には、通常 0(無効) か 1(有効)が入ります。
しかし、OL6.5 の /etc/yum.repos.d/public-yum-ol6.repo を見たところ、
「public_ol6_UEK_latest」という最新の UEK のリポジトリでは「$uek」、
「public_ol6_UEKR3_latest」という最新の UEK R3 のリポジトリでは「$uekr3」という
YUMの組み込み変数ではないと思われる 変数が使用されています。
[root@oel65-base-64 yum.repos.d]# cat -n /etc/yum.repos.d/public-yum-ol6.repo
(省略)
43 [public_ol6_u5_base]
44 name=Oracle Linux $releasever Update 5 installation media copy ($basearch)
45 baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/$basearch/
46 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
47 gpgcheck=1
48 enabled=0
49
50 [public_ol6_UEK_latest]
51 name=Latest Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
52 baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
53 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
54 gpgcheck=1
55 enabled=$uek
56
57 [public_ol6_UEKR3_latest]
58 name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basearch)
59 baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
60 gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
61 gpgcheck=1
62 enabled=$uekr3
(省略)
これはYUMの カスタム変数 として設定されています。
Redhatのサイトですが・・・
Red Hat Enterprise Linux 6 導入ガイド
6.3.3. Yum 変数の使用
https://access.redhat.com/site/documentation/ja-JP/Red_Hat_Enterprise_Linux/6/html/Deployment_Guide/sec-Using_Yum_Variables.html
カスタム変数の定義、既存の変数値の上書きを行うには、/etc/yum/vars/ ディレクトリ内に変数と同じ名前を持つファイルを作成して (「$」 記号はなし) 、1 行目に希望する値を追加します。
この変数については、下記にも説明がありました。
Oracle Linux Release Notes for Release 6 Update 5
3.2.2 About Public Yum
http://docs.oracle.com/cd/E37670_01/E50738/html/ol_opkg_rn64.html#ol_pubyum_rn64
このカスタム変数は、下記のファイルで設定されています。
ULN に登録していない状態でのデフォルトは、
$uek が 0 (無効)で、$uekr3 が 1 (有効)でした。
UEK は、R3 のリポジトリの方だけ public-yum.oracle.com に見に行くようになっています。
また、OL を ULN に登録すると、両方とも 0 (無効)になり
公開リポジトリの方は見に行かなくなるようです。
[root@oel65-base-64 ~]# ls -l /etc/yum/vars/
合計 8
-rw-r--r--. 1 root root 2 12月 30 07:34 2013 uek
-rw-r--r--. 1 root root 2 12月 30 07:34 2013 uekr3
[root@oel65-base-64 ~]# cat /etc/yum/vars/uek
0
[root@oel65-base-64 ~]# cat /etc/yum/vars/uekr3
1
ただ、このファイルは RPM パッケージに所属していないように見えます。
[root@oel65-base-64 ~]# rpm -qf /etc/yum/vars/uek
ファイル /etc/yum/vars/uek はどのパッケージにも属していません。
[root@oel65-base-64 ~]# rpm -qf /etc/yum/vars/uekr3
ファイル /etc/yum/vars/uekr3 はどのパッケージにも属していません。
UEK の YUM カスタム変数はいつ設定されているのか
YUM リポジトリの設定をしている、public-yum-ol6.repo ファイルは
rhn-client-tools という RPM パッケージに含まれていました。
パッケージ名は uln-~ではなく rhn-~ ですが、
説明文は「Unbreakable Linux Network」になっています。
[root@oel65-base-64 ~]# rpm -qf /etc/yum.repos.d/public-yum-ol6.repo
rhn-client-tools-1.0.0.1-16.0.2.el6.noarch
[root@oel65-base-64 ~]# rpm -qi rhn-client-tools-1.0.0.1-16.0.2.el6.noarch
Name : rhn-client-tools Relocations: (not relocatable)
Version : 1.0.0.1 Vendor: Oracle America
Release : 16.0.2.el6 Build Date: 2013年11月26日 12時03分04秒
Install Date: 2013年12月30日 07時34分03秒 Build Host: ca-build44.us.oracle.com
Group : System Environment/Base Source RPM: rhn-client-tools-1.0.0.1-16.0.2.el6.src.rpm
Size : 2821874 License: GPLv2
Signature : RSA/8, 2013年11月26日 12時03分10秒, Key ID 72f97b74ec551f03
URL : https://fedorahosted.org/spacewalk
Summary : Support programs and libraries for Unbreakable Linux Network
Description :
Unbreakable Linux Network Client Tools provides programs and libraries to allow your
system to receive software updates from Unbreakable Linux Network.
このパッケージの SPEC ファイル(RPM の情報や作成するときの処理を記載する)を見てみると、
カスタム変数のファイル作成は %post(ファイルをインストールした後の処理)で記載されていました。
そのため、RPM ではこのファイルが管理されてい(-qf では拾えない)ようです。
SPEC ファイルを見るために、
ソースファイルの RPM (~.src.rpm)を下記からDLしてインストールしてみます。
http://public-yum.oracle.com/repo/OracleLinux/OL6/5/base/x86_64/root ユーザでインストールすると、/root/rpmbuild 配下に
ソースファイルや、パッチファイル、SPECファイルなどが配置されます。
[root@oel65-base-64 ~]# rpm -ivh rhn-client-tools-1.0.0.1-16.0.2.el6.src.rpm
1:rhn-client-tools ########################################### [100%]
下記のパッチで repo ファイルに $uek や $uekr3 の変数を書いていました。
[root@oel65-base-64 ~]# cat /root/rpmbuild/SOURCES/uekr3.patch
diff -ruN rhn-client-tools-1.0.0.1.orig/src/up2date_client/public-yum-ol6.repo rhn-client-tools-1.0.0.1/src/up2date_client/public-yum-ol6.repo
--- rhn-client-tools-1.0.0.1.orig/src/up2date_client/public-yum-ol6.repo 2013-11-14 07:22:39.087090504 -0800
+++ rhn-client-tools-1.0.0.1/src/up2date_client/public-yum-ol6.repo 2013-11-14 07:25:18.197063897 -0800
@@ -52,7 +52,14 @@
baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEK/latest/$basearch/
gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
gpgcheck=1
-enabled=1
+enabled=$uek
+
+[public_ol6_UEKR3_latest]
+name=Unbreakable Enterprise Kernel Release 3 for Oracle Linux $releasever ($basearch)
+baseurl=http://public-yum.oracle.com/repo/OracleLinux/OL6/UEKR3/latest/$basearch/
+gpgkey=http://public-yum.oracle.com/RPM-GPG-KEY-oracle-ol6
+gpgcheck=1
+enabled=$uekr3
[public_ol6_UEK_base]
name=Unbreakable Enterprise Kernel for Oracle Linux $releasever ($basearch)
--- rhn-client-tools-1.0.0.1.orig/src/bin/rhn_check.py 2013-11-14 07:22:39.087090504 -0800
+++ rhn-client-tools-1.0.0.1/src/bin/rhn_check.py 2013-11-14 07:25:18.197063897 -0800
@@ -87,6 +87,8 @@
for file in files:
if "public-yum" in file and "disabled" not in file:
file = os.path.join(root, file)
+ os.system("echo 0 > /etc/yum/vars/uek")
+ os.system("echo 0 > /etc/yum/vars/uekr3")
os.system("sed -i 's/enabled=1/enabled=0/' %s" % file)
# orabug 16979442: do not rename public yum repo file, only disable channels at registration with ULN
# os.system("mv %s %s-disabled" % (file, file))
そしてこのパッチは、適用するパッチとして SPECファイルに記載されています。
[root@oel65-base-64 ~]# cat -n /root/rpmbuild/SPECS/rhn-client-tools.spec | grep -C10 "uekr3.patch"
31 #Patch14: rhn-client-tools-1.0.0.1-14-el6-to-rhn-client-tools-1.0.0.1-15-el6.patch
32 #Patch15: rhn-client-tools-1.0.0.1-15-el6-to-rhn-client-tools-1.0.0.1-16-el6.patch
33
34 Patch100: uln.patch
35 Patch101: uln-po.patch
36 Patch102: public-yum-norename.patch
37 Patch103: delete-RHNS-CA-CERT.patch
38 Patch104: uln-file.patch
39 Patch105: Bug17760765-donot-disapper-subscription-review.patch
40 Patch106: pubyum-u5.patch
41 Patch107: uekr3.patch
42
43 URL: https://fedorahosted.org/spacewalk
44 Name: rhn-client-tools
45 Version: 1.0.0.1
46 Release: 16.0.2%{?dist}
47 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
48 BuildArch: noarch
49 %if 0%{?suse_version}
50 BuildRequires: update-desktop-files
51 %endif
そして、SPEC ファイルの 下記のあたりで YUM のカスタム変数のファイルを作成していました。
/etc/yum/vars/uek と /etc/yum/vars/uekr3 を、環境によって 値を変更して作成しています。
[root@oel65-base-64 ~]# cat -n /root/rpmbuild/SPECS/rhn-client-tools.spec
(省略)
239 %post -n rhn-setup
240 arch=`uname -m`
241 if [ "x${arch}x" == "xx86_64x" ] ; then
242 echo 0 > /etc/yum/vars/uek
243 echo 1 > /etc/yum/vars/uekr3
244 else
245 echo 1 > /etc/yum/vars/uek
246 echo 0 > /etc/yum/vars/uekr3
247 fi
248 if [ -e /etc/sysconfig/rhn/systemid ];then
249 for i in `ls /etc/yum.repos.d/public-yum*.repo`;do
250 sed -i 's/enabled=1/enabled=0/' $i
251 # do not rename the public-yum*.repo file
252 # mv $i $i-disabled
253 done
254 echo 0 > /etc/yum/vars/uek
255 echo 0 > /etc/yum/vars/uekr3
256 fi
257 # eventually rename ol6_ channels to public_ol6_ in public_yum*.repo
258 for i in `ls /etc/yum.repos.d/public-yum*.repo`;do
259 sed -i 's/^\[ol6_/\[public_ol6_/' $i
260 done
(省略)
たとえば、YUM のリポジトリ設定をスクリプトなどで変更したいときに、
/etc/yum.repos.d 配下のファイルの中身を編集するよりも
/etc/yum/vars 配下のファイルを編集するだけの方が簡単な気がします。
そんなときは YUM のカスタム変数を使うと便利かもしれないと思いました。
以上、UEK リポジトリ設定の YUM カスタム変数についてでした。
2013年12月31日火曜日
Oracle Linux 6.5 の UEK R3 と YUMグループについて
Oracle Linux 6.5 インストール中のパッケージ選択画面で、
「UEK3 kernel repo」には UEK R3 自体のパッケージが見当たりません。

しかし、このグループを選択すると実際にはUEK R3がインストールされます。
ためしに、「UEK3 kernel repo」グループの情報を見てみます。
/etc/yum.repos.d/dvd.repo ファイルに下記を追記して「yum groupinfo」コマンドを実行します。
/etc/yum.repos.d/dvd.repo ファイルの記載例
見てみると、
「Mandatory Packages」(必須パッケージ)というカテゴリの中に「kernel-uek」がありました。
オプションで、「-v」を付けるとRPMのバージョンなども表示されるようになります。
UEK R3 のグループに限らない話ですが、
OSインストール中のパッケージ選択画面では 必須パッケージは表示されないようです。
おまけ
ついでに、OL6 で DVDの中をYUMで見に行くときの設定例 を書いておこうと思います。
DVDのマウントポイントは /media にしています。
以上、UEK R3 のYUMグループの話でした。
「UEK3 kernel repo」には UEK R3 自体のパッケージが見当たりません。

しかし、このグループを選択すると実際にはUEK R3がインストールされます。
[root@oel65-base-64 ~]# uname -r
3.8.13-16.2.1.el6uek.x86_64
ためしに、「UEK3 kernel repo」グループの情報を見てみます。
/etc/yum.repos.d/dvd.repo ファイルに下記を追記して「yum groupinfo」コマンドを実行します。
/etc/yum.repos.d/dvd.repo ファイルの記載例
[DVD-UEK3]
name=DVD-UEK3
baseurl=file:///media/UEK3
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
見てみると、
「Mandatory Packages」(必須パッケージ)というカテゴリの中に「kernel-uek」がありました。
[root@oel65-base-64 ~]# mount /dev/cdrom /media/
[root@oel65-base-64 ~]# yum groupinfo "UEK3 kernel repo"
Loaded plugins: security
Setting up Group Process
Group: UEK3 kernel repo
Description: UEK3 kernel repo.
Mandatory Packages:
kernel-uek
Default Packages:
dtrace-modules-3.8.13-16.2.1.el6uek
kernel-uek-doc
kernel-uek-firmware
libdtrace-ctf
uname26
Optional Packages:
dtrace-modules-3.8.13-16.2.1.el6uek-headers
dtrace-modules-3.8.13-16.2.1.el6uek-provider-headers
kernel-uek-debug
kernel-uek-debug-devel
kernel-uek-devel
libdtrace-ctf-devel
オプションで、「-v」を付けるとRPMのバージョンなども表示されるようになります。
[root@oel65-base-64 ~]# yum groupinfo "UEK3 kernel repo" -v
Not loading "rhnplugin" plugin, as it is disabled
Loading "security" plugin
Config time: 0.025
Yum Version: 3.2.29
Setting up Group Process
rpmdb time: 0.000
group time: 0.589
Group: UEK3 kernel repo
Group-Id: uek3-kernel-repo
Setting up Package Sacks
pkgsack time: 0.024
Description: UEK3 kernel repo.
Mandatory Packages:
kernel-uek-3.8.13-16.2.1.el6uek.x86_64 @anaconda-UEK3/6.5
Default Packages:
dtrace-modules-3.8.13-16.2.1.el6uek-0.4.1-3.el6.x86_64 @anaconda-UEK3/6.5
kernel-uek-doc-3.8.13-16.2.1.el6uek.noarch @anaconda-UEK3/6.5
kernel-uek-firmware-3.8.13-16.2.1.el6uek.noarch @anaconda-UEK3/6.5
libdtrace-ctf-0.4.0-1.x86_64 @anaconda-UEK3/6.5
uname26-1.0-1.el6.x86_64 @anaconda-UEK3/6.5
Optional Packages:
dtrace-modules-3.8.13-16.2.1.el6uek-headers-0.4.1-3.el6.x86_64 DVD-UEK3
dtrace-modules-3.8.13-16.2.1.el6uek-provider-headers-0.4.1-3.el6.x86_64 DVD-UEK3
kernel-uek-debug-3.8.13-16.2.1.el6uek.x86_64 DVD-UEK3
kernel-uek-debug-devel-3.8.13-16.2.1.el6uek.x86_64 DVD-UEK3
kernel-uek-devel-3.8.13-16.2.1.el6uek.x86_64 @anaconda-UEK3/6.5
libdtrace-ctf-devel-0.4.0-1.x86_64 DVD-UEK3
UEK R3 のグループに限らない話ですが、
OSインストール中のパッケージ選択画面では 必須パッケージは表示されないようです。
おまけ
ついでに、OL6 で DVDの中をYUMで見に行くときの設定例 を書いておこうと思います。
DVDのマウントポイントは /media にしています。
[root@oel65-base-64 setup]# cat /etc/yum.repos.d/dvd.repo
[DVD-Server]
name=DVD-Server
baseurl=file:///media/Server
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-HighAvailability]
name=DVD-HighAvailability
baseurl=file:///media/HighAvailability
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-LoadBalancer]
name=DVD-LoadBalancer
baseurl=file:///media/LoadBalancer
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-ResilientStorage]
name=DVD-ResilientStorage
baseurl=file:///media/ResilientStorage
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-ScalableFileSystem]
name=DVD-ScalableFileSystem
baseurl=file:///media/ScalableFileSystem
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
[DVD-UEK3]
name=DVD-UEK3
baseurl=file:///media/UEK3
gpgkey=file:///media/RPM-GPG-KEY
gpgcheck=1
enabled=1
以上、UEK R3 のYUMグループの話でした。
登録:
投稿 (Atom)