ラベル UEK の投稿を表示しています。 すべての投稿を表示
ラベル UEK の投稿を表示しています。 すべての投稿を表示

2018年2月1日木曜日

UEK R4 の Update と Kernel バージョンの対応を見てみる。

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 の数字が上がっていきます。

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)です。
[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 のベータ版をインストールしてみました。
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.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
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
kernel-uek-devel と kernel-uek-headers は、
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
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 がネットワークに接続できるようになります。

おまけ

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 のリリース番号がおかしいので
SPEC ファイルの修正などがいるのかもしれません。
今回作成されたのは 上の RPM で、本当は下ファイル名の方が・・・
kernel-uek-devel-2.6.39-300.32.5
uek.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/
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

★リンク先がみられるようになった・・・
「make install」 でドライバをインストールしても
モジュールが意図しないところに配置されてしまいました。
※下記のように新しいモジュールはディレクトリが変・・・
[root@ovs326-6 ~]# ls -l /lib/modules/2.6.39-300.32.5*/kernel/drivers/net/e1000e/e1000e.ko
-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
そこで、ちゃんとしたリリース表記(uname -r と一致するような)
になるように 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) の環境でビルドしてみました。
[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



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 です。
[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がインストールされます。
[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グループの話でした。