vm.gowatana.jp

NEOにほんごVMware(仮)

Oarcle Linux UEK 7 に PTP プレシジョン クロック デバイス ドライバ(ptp_vmw)を導入してみる。

先日の Japan VMUG May Meeting with Intel で話題になったのですが、最近まで、Oracle から提供されている UEK の RPM には ptp_vmw ドライバが含まれていませんでした。そのため ptp_vmw が必要な場合は RHCK を利用する必要があったようです。

今回は、Oracle Linux 8 と最新の UEK 7.1 の環境に kernel-uek-modules-extra を追加インストールして、PTP のデバイスドライバが利用できることを確認してみます。

 

ESXi の仮想マシンに作成されるプレシジョン クロック デバイスでは、デバイスドライバとして ptp_vmw が利用されます。

 

Oracle Linux の UEK について

Oracle Linux では、Linux カーネルとして、2種類から選択できます。

  • Unbreakable Enterprise Kernel(UEK):Oracle 独自の機能拡張があるカーネル
  • Red Hat Compatible Kernel(RHCK):RHEL 互換のカーネル

 

Oracle Linux のバージョンごとにどのバージョンの UEK が同梱されているかは、下記のあたりが参考になります。

 

また、Oracle Linux と UEK はそれぞれ別にアップデート可能です。たとえば、「デフォルトでは UEK 6.x がインストールされている OL 8.x に、URK 7.x をインストールする」といったこともできます。

 

ちなみに、OL に同梱される RHCK のバージョンは、基本的に Red Hat Enterprise Linux(RHEL)に同梱されるカーネルのバージョンと一致します。たとえば、OL 8.7 であれば RHEL 8.7 と同じバージョンの RHCK カーネル(4.18.0-425.3.1)が同梱されます。

 

今回の環境

まず最初に、RPM パッケージをアップデートしておきます。

[root@lab-vm-04 ~]# dnf update -y && reboot

 

この時点では Oracle Linux 8.7 で、UEK 6.3 を利用しています。

[root@lab-vm-04 ~]# cat /etc/oracle-release
Oracle Linux Server release 8.7
[root@lab-vm-04 ~]# uname -r
5.4.17-2136.319.1.2.el8uek.x86_64

 

UEK も、RHEL のカーネルと同様に RPM でインストールされます。

[root@lab-vm-04 ~]# rpm -q kernel-uek
kernel-uek-5.4.17-2136.313.6.el8uek.x86_64
kernel-uek-5.4.17-2136.318.7.1.el8uek.x86_64
kernel-uek-5.4.17-2136.319.1.2.el8uek.x86_64

 

この時点の URK には、ptp_vmw のカーネル モジュールが含まれていません。

[root@lab-vm-04 ~]# modinfo ptp_vmw
modinfo: ERROR: Module ptp_vmw not found.

 

UKE 7 のインストール

そこで、UEK 7 をインストールしてみます。この時点では、UEK6 の YUM リポジトリを参照しています。

[root@lab-vm-04 ~]# dnf repolist
repo id           repo の名前
ol8_UEKR6         Latest Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream     Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64)

 

ol8_UEKR7 リポジトリは .repo ファイルに記載されているので・・・

[root@lab-vm-04 ~]# dnf repolist disabled
repo id                    repo の名前
ol8_MODRHCK                Latest RHCK with fixes from Oracle for Oracle Linux 8 (x86_64)
ol8_UEKR6_RDMA             Oracle Linux 8 UEK6 RDMA (x86_64)
ol8_UEKR7                  Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)
ol8_UEKR7_RDMA             Oracle Linux 8 UEK7 RDMA (x86_64)
ol8_addons                 Oracle Linux 8 Addons (x86_64)
ol8_codeready_builder      Oracle Linux 8 CodeReady Builder (x86_64) - Unsupported
ol8_distro_builder         Oracle Linux 8 Distro Builder (x86_64) - Unsupported
ol8_kvm_appstream          Oracle Linux 8 KVM Application Stream (x86_64)
ol8_leapp                  Oracle Linux 8 (x86_64) Leapp Upgrade Utilities
ol8_u0_baseos_base         Oracle Linux 8 BaseOS GA (x86_64)
ol8_u1_baseos_base         Oracle Linux 8.1 BaseOS (x86_64)
ol8_u2_baseos_base         Oracle Linux 8.2 BaseOS (x86_64)
ol8_u3_baseos_base         Oracle Linux 8.3 BaseOS (x86_64)
ol8_u4_baseos_base         Oracle Linux 8.4 BaseOS (x86_64)
ol8_u4_security_validation Oracle Linux 8 Update 4 (x86_64) Security Validations
ol8_u5_baseos_base         Oracle Linux 8.5 BaseOS (x86_64)
ol8_u6_baseos_base         Oracle Linux 8.6 BaseOS (x86_64)
ol8_u7_baseos_base         Oracle Linux 8.7 BaseOS (x86_64)

 

有効化します。

[root@lab-vm-04 ~]# dnf repolist
repo id           repo の名前
ol8_UEKR7         Latest Unbreakable Enterprise Kernel Release 7 for Oracle Linux 8 (x86_64)
ol8_appstream     Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64)

 

そしてパッケージをアップデートすると、UEK 7 がインストールされます。今回は同時に OS を再起動(&& reboot)しています。

[root@lab-vm-04 ~]# dnf update -y && reboot

 

UEK 7.1(5.15.0-101) がインストールされて、UEK 6.3(5.4.17-2136.x) が削除されることがわかります。

[root@lab-vm-04 ~]# dnf update
Latest Unbreakable Enterprise Kernel Release 7 for Oracle  55 kB/s | 3.0 kB     00:00
依存関係が解決しました。
==========================================================================================
 パッケージ              Arch        バージョン                     リポジトリー    サイズ
==========================================================================================
インストール:
 kernel-uek              x86_64      5.15.0-101.103.2.1.el8uek      ol8_UEKR7       1.4 M
アップグレード:
 e2fsprogs               x86_64      1.46.2-2.el8                   ol8_UEKR7       1.0 M
 e2fsprogs-libs          x86_64      1.46.2-2.el8                   ol8_UEKR7       242 k
 libbpf                  x86_64      2:0.6.0-6.el8                  ol8_UEKR7       162 k
 libcom_err              x86_64      1.46.2-2.el8                   ol8_UEKR7        51 k
 libss                   x86_64      1.46.2-2.el8                   ol8_UEKR7        55 k
 xfsprogs                x86_64      5.15.0-1.0.3.el8               ol8_UEKR7       1.1 M
依存関係のインストール:
 kernel-uek-core         x86_64      5.15.0-101.103.2.1.el8uek      ol8_UEKR7        52 M
 kernel-uek-modules      x86_64      5.15.0-101.103.2.1.el8uek      ol8_UEKR7        61 M
削除中:
 kernel-uek              x86_64      5.4.17-2136.313.6.el8uek       @ol8_UEKR6      135 M

トランザクションの概要
==========================================================================================
インストール    3 パッケージ
アップグレード  6 パッケージ
削除            1 パッケージ

ダウンロードサイズの合計: 117 M
これでよろしいですか? [y/N]:

 

再起動が完了すると、カーネルが UEK 7.1 になりました。

[root@lab-vm-04 ~]# cat /etc/oracle-release
Oracle Linux Server release 8.7
[root@lab-vm-04 ~]# uname -r
5.15.0-101.103.2.1.el8uek.x86_64

 

しかし UEK 7.1 の kernel-uek RPM にも、ptp_vmw のカーネル モジュールが含まれないようです。

[root@lab-vm-04 ~]# modinfo ptp_vmw
modinfo: ERROR: Module ptp_vmw not found.

 

そこで、追加モジュールが含まれる kernel-uek-modules-extra RPM をインストールしてみます。

[root@lab-vm-04 ~]# dnf install -y kernel-uek-modules-extra

 

UEK の ptp_vmw.ko.xz が追加されました。

[root@lab-vm-04 ~]# modinfo ptp_vmw
filename:       /lib/modules/5.15.0-101.103.2.1.el8uek.x86_64/kernel/drivers/ptp/ptp_vmw.ko.xz
license:        Dual BSD/GPL
author:         VMware, Inc.
description:    VMware virtual PTP clock driver
srcversion:     188B9501F71B9AD0C3834B4
alias:          acpi*:VMW0005:*
depends:
retpoline:      Y
intree:         Y
name:           ptp_vmw
vermagic:       5.15.0-101.103.2.1.el8uek.x86_64 SMP mod_unload modversions
sig_id:         PKCS#7
signer:         Oracle CA Server
sig_key:        32:B0:29:2D:B0:CB:16:F0:A4:D9:94:54:74:8C:70:83:CB:80:AB:FE
sig_hashalgo:   sha512
signature:      B0:C2:F4:79:58:BD:53:55:22:AB:51:AF:3B:26:3C:67:D8:12:A8:EF:
                BD:45:B3:62:3A:8A:7C:CB:1C:88:BA:65:11:7B:0C:3D:85:CF:F6:18:
                8D:BA:04:8B:61:7F:66:1C:A6:08:52:4D:2E:BA:74:53:A2:9F:90:30:
                24:8A:25:CF:1F:7B:90:46:74:7D:6B:D3:B2:D2:5C:1E:9F:11:E2:08:
                EA:1C:0D:F1:F3:9E:4C:C3:95:41:10:86:B9:6C:3E:FA:25:5A:74:84:
                2B:F9:00:1C:60:9B:C0:44:6E:12:A2:7B:E2:2B:43:DE:93:13:A8:66:
                47:6C:0A:45:56:D3:CF:16:8D:E9:CF:5B:3B:D2:90:A6:22:E9:C6:7A:
                75:28:4A:CF:F9:2D:B8:E8:94:82:C7:FD:2D:38:67:7B:F3:B4:EC:56:
                B1:6F:13:C4:16:69:07:6C:9D:46:94:11:C2:A2:02:ED:90:F1:C2:E3:
                2A:01:1A:E3:F3:4D:BF:EF:E8:CB:A3:F3:EA:D5:D1:5A:DF:BC:D2:D9:
                2F:12:A6:E6:D8:54:7B:BE:C7:9C:46:76:B2:E8:B6:27:36:A0:22:20:
                8B:D4:7E:BE:35:3E:66:5A:EB:2E:7F:3D:8D:2D:CB:A7:0D:55:3F:23:
                83:AB:70:98:74:D7:B6:6A:4A:4D:0D:10:1B:09:1F:EA:BC:12:E7:1C:
                43:95:3A:78:76:D8:BD:91:85:E9:09:8A:DC:BD:24:E1:8D:8F:63:B4:
                E2:17:B0:E1:A2:A5:7F:7C:7B:5A:CF:18:70:9F:D4:22:6D:30:D6:2D:
                2E:14:40:79:53:65:65:B4:93:F4:B8:DA:7C:4A:DB:53:D0:50:23:10:
                EA:C2:3C:D6:BB:80:EC:F5:68:C0:09:49:06:01:38:24:32:DB:EA:DF:
                5A:68:1D:62:B8:F3:4C:40:6E:90:13:A9:39:8C:04:E4:00:BC:1B:3D:
                C0:83:C2:E8:C0:5B:9E:ED:32:64:48:C6:D7:A5:4D:FE:51:CE:E3:F4:
                29:B7:BB:61:CF:E7:84:C7:4B:59:32:26:B2:06:32:79:17:72:12:2A:
                6F:87:E6:57:AE:0C:C0:B3:64:AA:08:2B:5B:BB:86:7A:B2:AA:E3:31:
                EE:7C:5C:9C:99:39:6F:96:69:A9:0A:59:91:BD:07:14:BD:D8:AF:8F:
                02:4F:D8:2C:98:2D:6E:7B:DD:5C:39:DA:33:AA:53:78:B1:57:67:87:
                07:9F:83:DC:3F:DD:7B:D6:22:D2:F0:D0:41:AA:0D:46:F7:2D:AA:1C:
                D9:6A:A9:78:D5:84:49:28:E5:F8:72:B1:C9:8B:E0:82:53:E8:FF:5A:
                96:4F:95:16:0C:1D:19:DD:3B:32:E8:C9

 

これで、UEK でも ptp_vmw が利用できそうです。

[root@lab-vm-04 ~]# modprobe ptp_vmw
[root@lab-vm-04 ~]# lsmod | grep ptp_vmw
ptp_vmw                16384  0

 

おまけ

UKE 自体には、以前から ptp_vmw ドライバが追加されていました。

 

しかし、カーネル ビルドの config ファイルで CONFIG_PTP_1588_CLOCK_VMW=m が指定されていなかったので、カーネル モジュールが RPM には追加されていなかったようです。

 

そして、OL8 / OL9 どちらの RPM でも、kernel-uek ではなく kernel-uek-modules-extra に追加されています。

 

ちなみに、VMware Photon OS では、3.0 の頃から追加されていました。

 

以上、Oracle UEK での ptp_vmw の話でした。