Centosでカーネルパニックをデバッグする

新しいマシンに直面し、何らかの理由で(アイドル状態にならないように)自分でカーネルをコンパイルする必要がある場合、カーネルパニックが発生します。

カーネルのパニックは非常に厄介です。起動時のパニックはさらに厄介です。ログのないパニックは、ハードディスクがないと特に厄介です。

問題を解決するためにいくつかのだまし方法を提供します:(以下の内容はredhatシステム用ですが、ほとんどの方法は一般的です)

パニックの原因となったリンクを特定します####

起動プロセスについて簡単に説明します。

1 Power On                                 Maybe Err:Worlds Collides
2 BIOS                                     Maybe Err:Worlds Collides
3 Load Grub From MBR                       Maybe Err:See nothing
4 load Grub and show it                    Maybe Err:Grub loads failed
5 Grub reads menu.list                     Maybe Err:Grub loads failed
6 Grub loads kernel image                  Maybe Err:Grub loads failed
7 kernel mounts root filesystem            Maybe Err:PANIC
8 kernel runs init                         Maybe Err:PANIC
9 init runs scripts to start               Maybe Err:PANIC

まず、どのリンクがパニックを引き起こしたかを確認する必要があります。ログが比較的完全である場合は、通常、手がかりに基づいて上記のリンクが原因で発生した問題を判断できます。通常、パニックはstep7、step8、およびstep9リンクで発生します。

以下は、step7およびstep8パニックのいくつかのトリックを提供します

カーネルパラメータにデバッグスイッチを追加し、ACPIをオフにします。selinux####

1234 title CentOS (2.6.32-358.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-358.el6.x86_64 ro root=/dev/mapper/vg_localhost-lv_root rd_NO_LUKS rd_NO_MD rd_LVM_LV=vg_localhost/lv_swap crashkernel=128M LANG=zh_CN.UTF-8 rd_LVM_LV=vg_localhost/lv_root KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM debug selinux=0 acpi=0 initrd /initramfs-2.6.32-358.el6.x86_64.img

これは、キャラクターをテストするときです。状況がどうであれ、最も可能性の高い問題を最初に取り除く必要があります。さらに、redhatシステムは「rhgbquiet」などのパラメーターをカーネルの最後に追加し、それらをすべて削除します。起動時に、画面を凝視して疑わしい出力があるかどうかを確認します。システムは記録せずに短時間で大量のログを出力する可能性があるため、ログ出力レートと一時停止時間を設定する必要があります。詳細なパラメータについては、以下を参照してください。

https://wiki.archlinux.org/index.php/Boot_debugging

dracutデバッグスイッチをカーネルパラメータに追加します####

redhatシステムの後の段階で、dracutを使用してinitrdイメージを作成しました。dracutに関するマニュアルは次のとおりです。

http://people.redhat.com/harald/dracut-rhel6.html#lsinitrd

デバッグスイッチはここにあります:

https://fedoraproject.org/wiki/How_to_debug_Dracut_problems

rdshellを設定し、パニック後にdracutが提供するシェルにジャンプし、dmesgと入力してログ情報を表示できます。

結局、理由はよくわかりません。非常にアイドル状態なので、###の開始時にシリアルデバイスのデバッグを追加することを検討できます。

いくつかのツールチップ####

http://free-electrons.com/blog/find-root-device/

その他の参考資料:

http://www.tuxradar.com/content/how-fix-linux-boot-problems

Recommended Posts

Centosでカーネルパニックをデバッグする
Centos7アップグレードカーネル
CentOS7.5-1804システムカーネルのアップグレード
Centos7にMySQL5.7をインストールします
セントスにphpをインストールする
Centosカーネルコンパイル構成
CentOS6.5はカーネルを3.10.28にアップグレードします
Centosカーネルバージョンのアップグレード
CentOSでHadoopを構築する
セントスでのKVM仮想化
Centos7は役に立たないカーネルを削除します
Centosは冗長カーネルを削除します
CentOS7.6でzabbixモニタリングzabbix4.2をビルドする
virtualboxのCentosネットワーク設定
gccをcentosで6.4.0に更新します
CentOS7にrpmでJDK8をインストールします
CentOS7でのJDK1.8チュートリアルの最小インストール
CentOS8でのnmcliの詳細な使用
Centosカーネルアップグレードの3つの方法
CentOS7にDockerを使用してMySqlをインストールする
Percona Serverデータベースのインストール(CentOS 8)
Centosでyumモードでjavaをインストールする
Linux:Centos7は元のカーネルをアップグレードします
Centos7.2にHDP2.6をインストールする方法
Centos7オペレーティングシステムをDockerにインストールする
セントス7カーネルのアップグレード事故を覚えておいてください
Centos7にFreeIPAをインストールして構成する
Centos7.3でYumプライベートウェアハウスを構築する
centos6.5環境でのTomcat構成JMX