Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

第30章 カーネル

クラッシュダンプ中に以前に破損した PT_NOTE エントリーの修正

一部の HP サーバーでは、カーネルコードの不具合が原因で、カーネルクラッシュが原因で PT_NOTE エントリーが破損する可能性があります。その結果、カーネルクラッシュダンプユーティリティーは初期化に失敗していました。提供されるパッチは、PT_NOTE エントリーの割り当てに合わせて、1 つの物理ページ内にあるため、書き込みと読み取りが同一になります。その結果、上記の状況でカーネルクラッシュダンプが期待どおりに機能するようになりました。(BZ#1073651)

slub_debug パラメーターを削除してメモリーを保存します。

slub_debug パラメーターは SLUB アロケーターのデバッグを有効にします。これにより、各オブジェクトは追加のメモリーを消費します。slub_debug カーネルパラメーターを使用しても、128 GB システムの自動設定により、kdump キャプチャーカーネルに十分なメモリーが割り当てられませんでした。そのため、kdump init スクリプトのさまざまなタスクが Out Of Memory (OOM)エラーメッセージで終了し、クラッシュダンプは保存されませんでした。提供されたパッチは slub_debug パラメーターを削除し、クラッシュダンプは前述のシナリオで期待どおりに保存されるようになりました。(BZ#1180246)

新しい CPU が割り当てられている際にデッドロックを引き起こす競合状態の削除

以前は、新しい CPU が割り当てられると、CPU ホットプラグと stop_two_cpus ()関数間の競合状態が発生すると、新しい CPU の移行スレッドがすでに アクティブ とマークされ、が有効に なっ ていないとデッドロックが生じる可能性がありました。この競合状態を削除する一連のパッチが適用されました。その結果、新しい CPU が割り当てられているシステムが、意図したとおりに実行されるようになりました。(BZ#1252281)

アップストリームからの hugepage 移行パッチを使用したカーネルの更新

以前は、ヒュージページの移行でカーネルパニックを含むいくつかのバグが発生する可能性がありました。アップストリームのパッチのセットがバックポートされ、これらのバグが修正されました。更新されたカーネルは安定し、AMD64 および Intel 64 以外のアーキテクチャーでは hugepage の移行が自動的に無効にされるようになりました。(BZ#1287322)

UEFI およびセキュアブートが有効になっているカーネルの起動

Unified Extensible Firmware Interface (UEFI)が使用され、セキュアブートが有効になっている場合、オペレーティングシステムは 3.10.0-327.3.1.el7.x86_64 カーネル以降、すべてのカーネルで起動できませんでした。3.10.0-327.4.4.el7 カーネルおよび更新により、システムが想定どおりに起動します。(BZ#1290441)

インストールされたすべてのカーネルの initramfs イメージに追加された新しいマイクロコード

以前は、microcode_ctl パッケージをインストールすると、postinstall スクリプトレットは実行中のカーネルに対してのみ initramfs ファイルを再構築し、その他のインストール済みカーネルには構築されませんでした。そのため、ビルドが完了すると、さらにインストールされていないカーネルの initramfs ファイルがありました。この修正により、インストールしたすべてのカーネルの initramfs イメージに新しいマイクロコードが追加されました。その結果、不要な initramfs ファイルが生成されなくなりました。(BZ#1292158)

GFS2 の競合状態が原因でカーネルの スラブ エラーが発生しなくなる

これまで GFS2 ファイルシステムで競合状態が発生していました。この場合、2 つのプロセスがディレクトリールックアップに使用されるカーネル スラブ メモリーを同時に解放しようとしました。その結果、両方のプロセスが同じメモリーを解放すると、カーネルで スラブ メモリーエラーが発生しました。競合状態を排除するために GFS2 ファイルシステムにパッチが適用され、プロセスが別のプロセスですでに解放されているメモリーの解放を試みることができなくなりました。現在は、メモリーの解放を試みる際に、各プロセスが強制的にオンになります。その結果、カーネルの スラブ エラーは発生しなくなりました。(BZ#1276477)

GFS2 が ファイル内の正しい場所にデータを書き込むようになりました。

以前は、GFS2 ファイルシステムは、4 KB を超える場所で O_DIRECT (Direct I/O)で開かれたファイルを書き込む際に、開始オフセットを誤って計算していました。その結果、ファイルの誤った場所にデータが書き込まれました。GFS2 にパッチを適用し、ダイレクト I/O 書き込みの正しいファイルオフセットを計算します。その結果、GFS2 は ファイル内の正しい場所にデータを書き込むようになりました。(BZ#1289630)

kdump メカニズムが失敗した場合は解放される dump-capture カーネルメモリー

,high および ,low 構文を使用して crashkernel メモリーが割り当てられると、高い部分の予約に成功しても kdump メカニズムの予約に失敗することがありました。この障害は、特にいくつかの理由で大規模なシステムで発生する可能性があります。手動で指定した crashkernel 低メモリーが大きすぎるため、適切な memblock リージョンが見つかりませんでした。kexec ユーティリティーは dump-capture カーネルを正常に読み込むことができますが、メモリーが少ないため、dump-capture カーネルの起動に失敗していました。提供されるパッチセットは、高いメモリー部分が割り当てられた 、dump-capture カーネル用に少ないメモリーを予約します。これにより、kdump メカニズムが失敗すると、dump-capture カーネルメモリーが解放されます。したがって、ユーザーは定期的に計測値を取ることができます。(BZ#1241236)

kabi-whitelists コンポーネントが利用できないため、ksc ユーティリティーがバグのファイルに失敗しなくなりました。

以前の更新では、kabi-whitelists コンポーネントがカーネルコンポーネントの kabi-whitelists サブコンポーネントに変更されました。そのため、kabi-whitelists コンポーネント値がアクティブではなく、以下のエラーメッセージが生成されていたため、ksc ユーティリティーはバグを報告できませんでした。
Could not create bug.<Fault 32000:"The component value 'kabi-whitelists' is not active">
今回の更新で、カーネルコンポーネントの正しいサブコンポーネントは kabi-whitelisted で、ksc ファイルが予想通りにバグされるようになりました。(BZ#1328384)

必須の引数なしで実行すると、ksc がクラッシュする代わりにエラーを返すようになりました。

以前は、必須の引数なしで実行すると、ksc ツールが予期せず終了していました。今回の更新で、ksc はエラーメッセージを返し、上記の状況で正常に終了するようになりました。(BZ#1272348)

ext4 ファイルシステムを期待どおりに変更できるようになりました。

ext4 コードのバグにより、1 キロバイトのブロックサイズを持ち 32 メガバイト未満の ext4 ファイルシステムのサイズを変更できませんでした。このバグを修正するためのパッチが適用され、説明されている ext4 ファイルシステムのサイズを期待どおりに変更できるようになりました。(BZ#1172496)

qdisc を仮想デバイスにアタッチする際の予期しない動作が発生しなくなる

以前は、qdisc を仮想デバイスに割り当てると、パケットが早期にドロップされ、帯域幅が低下するなどの予期しない動作が発生する可能性がありました。今回の更新により、仮想デバイスのデフォルト tx_queue_len が 1000 で、デバイスフラグで表されるようになりました。qdisc を仮想デバイスに割り当てることはデフォルト設定でサポートされ、tx_queue_len=0 の特別な処理が不要になりました。(BZ#1152231)

udev デーモンが dracutにより停止しなくなる

以前は、initramfs プロセスの dracut スクリプトは udevadm control コマンドを使用して udev デーモンを停止していました。これにより、udev デーモンが終了していました。ただし、systemd サービスポリシーは、デーモンを再起動することです。特定の状況では、これによりシステムが起動できませんでした。今回の更新で、udev デーモンを停止するコードが dracut スクリプトから削除され、上記の問題を回避できるようになりました。(BZ#1276983)

multi-fsb バッファーロギングが修正されました。

以前は、ディレクトリーブロックサイズが大きい XFS ファイルシステムのディレクトリーを変更すると、マルチブロックバッファーのロギングに問題があるため、カーネルパニックや結果としてサーバーがクラッシュする可能性がありました。提供されるパッチにより multi-fsb バッファーロギングが修正され、このシナリオでサーバーがクラッシュしなくなりました。(BZ#1356009)

第 6 世代 Intel Core プロセッサーで統合グラフィックスを使用するラップトップで、ハード画面のロックアップが発生しなくなりました。

第 6 世代 Intel Core プロセッサーで統合グラフィックスを使用するラップトップでは、以前は以下の場合にハードスクリーンロックが発生することがありました。
  • モニターのエッジ間でのカーソルの移動
  • 複数のモニター間のカーソルの移動
  • モニター設定のあらゆる側面の変更
  • マシンのドックまたは元に戻す
  • モニターのプラグまたはアンプラグ
このバグが修正され、このような状況で画面のハードロックアップが発生しなくなりました。(BZ#1341633)

永続メモリーを持つシステムで複数の問題を修正

永続的なメモリーを持つシステムで、実際の Non-Volatile Dual In-line Memory Modules (NVDIMMs)または memmap=X!Y カーネルコマンドラインパラメーターを使用してエミュレートされた NVDIMMs のいずれかの起動時に、いくつかの問題が発生することがあります。
永続メモリーのインライン化により、pmem デバイスのブロック(128 MB)ごとに以下のメッセージが表示されました。
Built 2 zonelists in Zone order, mobility grouping on.  Total pages: 8126731
Policy zone: Normal
システムが応答しなくなりました。
以下のレベルで メッセージ が表示されました。
BUG: unable to handle kernel paging request at ffff88007b7eef70
今回の更新で、上記のバグが修正されました。(BZ#1367257)

SUDO_USER 変数および USER 変数が設定されていない場合に Python エラーが表示されなくなる

以前は、SUDO_USER または USER 環境変数が設定されていないスペア環境で を実行すると、多数の python エラーが表示されていました。今回の更新で、未定義の SUDO_USER 変数および USER 変数が適切に処理され、エラーが表示されなくなりました。(BZ#1312057)

CIFS 匿名認証が失敗しなくなる

以前は、cifs モジュールは匿名認証に値を誤って設定していました。samba ファイルサーバーに加えられた変更は、このバグを公開しています。その結果、匿名認証に失敗していました。この更新により、クライアントの動作が変更され、匿名認証の 正しい 認証値を設定します。その結果、CIFS 匿名認証が正しく機能するようになりました。(BZ#1361407)