LoginSignup
17
18

Oracle LinuxのデフォルトカーネルをスマートにUEKからRHCKに変更する

Last updated at Posted at 2019-05-10

前提条件

  • Oracle Linux 7
  • Oracle Linux 8
  • Oracle Linux 9

はじめに

Oracle Linuxには2種類のカーネルがある。1つはデフォルトカーネルのUEK(Unbreakable Enterprise Kernel)で、もう1つはRed Hatと完全に互換性を持つRHCK(Red Hat Compatible Kernel)である。UEKにはR4、R5など、さらにいくつかあるのだが、本題では無いので無視する。

今回何が言いたいかというと、

UEK→RHCKの変更に関する情報はたくさん転がっているけれど、スマートではないものが多いんじゃね?

7系になってGRUB2に変更されたことが大きく影響しているのだけれど、独断と偏見で、スマートな変更方法について語りたい。

UEKとRHCKの互換性

UEKとRHCKではベースカーネルのバージョンは違うが、ユーザー空間で動作するアプリケーションについてはABI(Application Binary Interface)互換性がある。そのため一般的なアプリケーションの動作では、ほとんど影響しない。

なぜRHCKか?

UEKとRHCKでは互換性があるのは知っているけれど、RHCKを使いたいケースがある。

たとえば、使う商用パッケージがサポートするのはRHCKだけとか、RHCKのほうが利用者が多いので安定してるんじゃね(全RHEL系ディストリビューションを含む)といった理由だ。

次に実際の方法を解説する。

環境を確認する

これからOracle Linux 7 / 8 / 9における変更方法を説明する。6系は違うので注意すること。

ディストリビューション&バージョンを調べる。

# cat /etc/oracle-release
Oracle Linux Server release 7.6

現在のカーネルを確認すると"uek.x86_64"となっており、UEKカーネルになっていることがわかる。

# uname -r
4.14.35-1844.3.2.el7uek.x86_64

インストールされているカーネルを確認すると、UEKとRHCKがインストールされている。

# rpm -qa | grep kernel | sort
abrt-addon-kerneloops-2.1.11-52.0.1.el7.x86_64
kernel-3.10.0-957.10.1.el7.x86_64
kernel-3.10.0-957.12.1.el7.x86_64 ★これにしたい
kernel-3.10.0-957.5.1.el7.x86_64
kernel-tools-3.10.0-957.12.1.el7.x86_64
kernel-tools-libs-3.10.0-957.12.1.el7.x86_64
kernel-uek-4.14.35-1844.2.5.el7uek.x86_64
kernel-uek-4.14.35-1844.3.2.el7uek.x86_64 ★これが現在
kernel-uek-4.14.35-1844.4.5.el7uek.x86_64

見落としがちなのが/etc/sysconfig/kernelで、yum updateするときは、このファイルが参照される。アップデートパッケージがあるときには、こちらで指定した方がデフォルトカーネルになる。

UEK-UEK6:/etc/sysconfig/kernel
# UPDATEDEFAULT specifies if new-kernel-pkg should make
# new kernels the default
UPDATEDEFAULT=yes

# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel-uek
UEK7:/etc/sysconfig/kernel
# UPDATEDEFAULT specifies if kernel-install should make
# new kernels the default
UPDATEDEFAULT=yes

# DEFAULTKERNEL specifies the default kernel package type
DEFAULTKERNEL=kernel-uek-core

grubbyを使って変更する

GRUB2で便利なのがgrubbyである。grubbyを使うとかなりスマートに変更できる。詳しくはgrubby --helpや下記のマニュアルを見てほしい。

参考:grubby ツールを使用した GRUB 2 メニューの永続的な変更

デフォルトのカーネルを表示する。

# grubby --default-kernel
/boot/vmlinuz-4.14.35-1844.4.5.el7uek.x86_64

デフォルトのインデックス番号を表示する。これだけではよく分からないので、次にメニューを全表示する。

# grubby --default-index
0

メニューを全部表示するには--info=ALLを指定する。

# grubby --info=ALL
index=0 ★現在はインデックス番号0のこれ↓
kernel=/boot/vmlinuz-4.14.35-1844.4.5.el7uek.x86_64
args="ro crashkernel=auto LANG=ja_JP.utf8 console=tty0 console=ttyS0,9600 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0 netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi iscsi_param=node.session.timeo.replacement_timeout=6000 net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 ipmi_si.trydefaults=0 libiscsi.debug_libiscsi_eh=1 network-config=e2NvbmZpZzogZGlzYWJsZWR9Cg== loglevel=4"
root=UUID=0efcd14b-2edf-4b85-ae64-4c3855ca5a58
initrd=/boot/initramfs-4.14.35-1844.4.5.el7uek.x86_64.img
title=Oracle Linux Server 7.6, with Unbreakable Enterprise Kernel 4.14.35-1844.4.5.el7uek.x86_64
index=1
kernel=/boot/vmlinuz-3.10.0-957.12.1.el7.x86_64 ★これに変更したい
args="ro crashkernel=auto LANG=ja_JP.utf8 console=tty0 console=ttyS0,9600 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0 netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi iscsi_param=node.session.timeo.replacement_timeout=6000 net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 ipmi_si.trydefaults=0 libiscsi.debug_libiscsi_eh=1 network-config=e2NvbmZpZzogZGlzYWJsZWR9Cg== loglevel=4"
root=UUID=0efcd14b-2edf-4b85-ae64-4c3855ca5a58
initrd=/boot/initramfs-3.10.0-957.12.1.el7.x86_64.img
title=Oracle Linux Server 7.6, with Linux 3.10.0-957.12.1.el7.x86_64
index=2
kernel=/boot/vmlinuz-0-rescue-9c95796465364eaf81b3c9f027d03ee6
args="ro crashkernel=auto LANG=en_US.UTF-8 console=tty0 console=ttyS0,9600 rd.luks=0 rd.lvm=0 rd.md=0 rd.dm=0 netroot=iscsi:169.254.0.2:::1:iqn.2015-02.oracle.boot:uefi iscsi_param=node.session.timeo.replacement_timeout=6000 net.ifnames=1 nvme_core.shutdown_timeout=10 ipmi_si.tryacpi=0 ipmi_si.trydmi=0 ipmi_si.trydefaults=0 libiscsi.debug_libiscsi_eh=1 network-config=e2NvbmZpZzogZGlzYWJsZWR9Cg== loglevel=4"
root=UUID=0efcd14b-2edf-4b85-ae64-4c3855ca5a58
initrd=/boot/initramfs-0-rescue-9c95796465364eaf81b3c9f027d03ee6.img
title=Oracle Linux Server 7.6 Rescue 9c95796465364eaf81b3c9f027d03ee6 (3.10.0-957.10.1.el7.x86_64)
★中略
index=8
non linux entry

次のようにgrepすれば簡潔に表示できる。

grubby --info=ALL | grep -A 2 index

デフォルトカーネルをRHCKに変更する。--set-default-index=<index number>を使えばインデックス番号を使える。しかし間違いの元なので使わない。

# grubby --set-default /boot/vmlinuz-3.10.0-957.12.1.el7.x86_64

変更されていることを確認する。

# grubby --default-index
1
# grubby --default-kernel
/boot/vmlinuz-3.10.0-957.12.1.el7.x86_64

/etc/sysconfig/kernelを修正する

最後に/etc/sysconfig/kernelDEFAULTKERNELパラメータでデフォルトカーネルをRHCK変更する。これを変更しないとパッケージをupdateしたときにUEKに戻ってしまう。なお、指定するパラメータはカーネルのバージョンによって異なる。

カーネルの種類 DEFAULTKERNELの値
RHCK(Oracle Linux7まで) kernel
RHCK(Oracle Linux8以降) kernel-core
UEK-UEK6 kernel-uek
UEK7(※) kernel-uek-core

※ UEK7がデフォルトになっているのはOracle Linux 8 Update 7以降。Oracle Linuxでは、同一メジャーバージョン内でも複数バージョンのUEKがあるので注意する。

# vi /etc/sysconfig/kernel

変更前:
 DEFAULTKERNEL=kernel-uek-core

変更後:
 DEFAULTKERNEL=kernel-core
 #DEFAULTKERNEL=kernel-uek-core

末尾に-coreが付けるかわからないときはrpm -qaで判断できる。kernel-corekernel-uek-coreがあれば、それぞれ-coreが必要である。

UEK7の場合
$ rpm -qa | grep uek | sort
kernel-uek-5.15.0-5.76.5.1.el9uek.x86_64
kernel-uek-core-5.15.0-5.76.5.1.el9uek.x86_64  ★coreがあるのでkernel-uek-core
kernel-uek-devel-5.15.0-5.76.5.1.el9uek.x86_64
kernel-uek-modules-5.15.0-5.76.5.1.el9uek.x86_64
UEK6の場合
$ rpm -qa | grep uek | sort
kernel-uek-5.4.17-2136.314.6.2.el8uek.x86_64 ★coreがないのでkernel-uek
kernel-uek-devel-5.4.17-2136.314.6.2.el8uek.x86_64
RHCKの場合
$ rpm -qa | grep kernel | sort -n
kernel-5.14.0-70.26.1.0.1.el9_0.x86_64
kernel-core-5.14.0-70.26.1.0.1.el9_0.x86_64  ★coreがあるのでkernel-core
kernel-headers-5.14.0-70.26.1.0.1.el9_0.x86_64
kernel-modules-5.14.0-70.26.1.0.1.el9_0.x86_64
kernel-tools-5.14.0-70.26.1.0.1.el9_0.x86_64

修正が終わったらリブートする。

# reboot

再起動したら確認する。次のようにRHCKに変わっていることがわかる。

# grubby --default-kernel
/boot/vmlinuz-3.10.0-957.12.1.el7.x86_64
# grubby --default-index
1

おわりに

一通りの手順を見てどうだろうか。grub2-mkconfigなどのgrub2系コマンドもあるが、それよりもずいぶんスマートにできたはずである。

参考資料

17
18
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
18