事象
CentOS8でdnf update後にOSを再起動したらOSが起動しなくなった。
原因(順序立てて)
対処
余力が無く割愛。
古いkernelかレスキューモードで起動してinitramfsの再作成とかするんだろう、というイメージ。
あるいは、一時的にDUDを使えるならそれで起動して、改めてOSにRAIDコントローラのドライバをインストールするなど。
対策
回避策1
CentOS8.1に手動でCentOS8.2用のRAIDコントローラのドライバをインストールする。かつ、その直後にOSをCentOS8.2にバージョンアップする。
→すでにCentOS8.1を運用中で、これからOSバージョンアップをする可能性がある環境向け。
回避策2
現時点の最初バージョン(8.2)のOSイメージ、RAIDコントローラのドライバを用いてOSをインストールする。
→OSを新規インストールできる環境向け。
操作手順
回避策1
事前確認
現在のOSのバージョンを確認する。
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)
8.1。SASのドライバのバージョンを確認する。
[root@localhost ~]# rpm -qa | grep sas kmod-megaraid_sas-07.707.51.00-1.el8_1.elrepo.x86_64
「el8_1」なのでCentOS8.1用であることがわかる。
# 厳密にはRHEL8.1用だがそのへんは割愛。
更新作業
RAIDコントローラのドライバ(DUD)をダウンロードしてきた。
[root@localhost ~]# ls -l 合計 692 -rw-------. 1 root root 1878 8月 25 00:50 anaconda-ks.cfg -rw-r--r--. 1 root root 694272 8月 25 00:59 dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso -rw-r--r--. 1 root root 116 8月 25 00:50 ks_centos8_01-post.log -rw-------. 1 root root 1771 8月 25 00:50 original-ks.cfg
OS上で手動で適用するため、まずマウントする。
[root@localhost ~]# mount dd-megaraid_sas-07.710.50.00-1.el8_2.elrepo.iso /mnt/ mount: /mnt: 警告: デバイスは書き込み禁止です、読み込み専用でマウントします.
中身はこんな感じ。
[root@localhost ~]# ls -l /mnt/ 合計 5 -rw-rw-r--. 1 502 506 28 5月 2 05:29 rhdd3 drwxrwsr-x. 3 502 506 2048 5月 2 05:29 rpms drwxrwsr-x. 2 502 506 2048 5月 2 05:29 src
使うのはこれ。「el8_2」なのでCentOS8.2用。
[root@localhost ~]# ls -l /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm -rw-rw-r--. 1 502 506 97252 5月 2 05:29 /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm
rpmコマンドで直接インストールしてみる。
[root@localhost ~]# rpm -ivh /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm 警告: /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm: ヘッダー V4 DSA/SHA1 Signature、鍵 ID baadae52: NOKEY エラー: 依存性の欠如: kernel >= 4.18.0-193.el8 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(__dynamic_dev_dbg) = 0xd1ebdaa0 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(_dev_info) = 0x828b6323 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(alloc_workqueue) = 0xdf9208c0 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dev_err) = 0xb05c257c は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dev_notice) = 0x638266e6 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dev_printk) = 0x37f6e9be は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dev_warn) = 0x61cd7cc3 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dma_alloc_attrs) = 0x100e5057 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dma_free_attrs) = 0x2a63c6dc は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dma_set_coherent_mask) = 0x0c0b6182 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています kernel(dma_set_mask) = 0x72743f81 は kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 に必要とされています
依存関係で失敗した。dnfコマンドで試してみる。
[root@localhost ~]# dnf install /mnt/rpms/x86_64/kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64.rpm メタデータの期限切れの最終確認: 0:00:06 時間前の 2020年08月25日 01時00分30秒 に実施しました。 依存関係が解決しました。 ============================================================================================================================= パッケージ アーキテクチャー バージョン リポジトリー サイズ ============================================================================================================================= アップグレード: kexec-tools x86_64 2.0.20-14.el8 BaseOS 485 k linux-firmware noarch 20191202-97.gite8a0f4c9.el8 BaseOS 72 M kmod-megaraid_sas x86_64 07.710.50.00-1.el8_2.elrepo @commandline 95 k 依存関係のインストール: kernel-core x86_64 4.18.0-193.14.2.el8_2 BaseOS 28 M トランザクションの概要 ============================================================================================================================= インストール 1 パッケージ アップグレード 3 パッケージ 合計サイズ: 100 M ダウンロードサイズの合計: 100 M これでよろしいですか? [y/N]: y (中略) アップグレード済み: kexec-tools-2.0.20-14.el8.x86_64 linux-firmware-20191202-97.gite8a0f4c9.el8.noarch kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64 インストール済み: kernel-core-4.18.0-193.14.2.el8_2.x86_64 完了しました!
いけた。結果を確認する。
[root@localhost ~]# rpm -qa | grep sas kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64
依存関係によりel8_2のkernel-coreがインストールされたので、ここでOSのバージョンを確認してみる。
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 8.1.1911 (Core)
まだアップデートされていなかった。推測だが、ここでOSを再起動すると、次回は起動に失敗する。今度は逆で、OSが8.1に対しRAIDコントローラのドライバが8.2用となり、不整合となるため。
次に、OSをバージョンアップする。
[root@localhost ~]# dnf -y update (中略) 完了しました!
OSのバージョンを確認する。
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core)
8.2にバージョンアップされた。無差別にアップデートしたので、念のためRAIDコントローラのドライバが意図せずアップデートやデグレードしていないか確認する。
[root@localhost ~]# rpm -qa | grep sas kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64
問題ない。
それでは、いよいよOSを再起動する。
[root@localhost ~]# systemctl reboot
事後確認
まず、OSが正常に起動することを確認する。
一応、OSとRAIDコントローラのドライバのバージョンを最終確認する。
[root@localhost ~]# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core)
[root@localhost ~]# rpm -qa | grep sas kmod-megaraid_sas-07.710.50.00-1.el8_2.elrepo.x86_64
以上。
対処2(恒久対処)
インストール環境に依るので割愛する。
参考サイト
なし