第12章 カーネル

IBM Power Systems アーキテクチャーの Little Endian 版向けの protobuf-c パッケージが利用可能

今回の更新により、IBM Power Systems アーキテクチャーの Little Endian 版向けの protobuf-c パッケージが追加されました。この protobuf-c パッケージは、Google の Protocol Buffer 向けの C バインディングを提供し、このアーキテクチャーにおける criu パッケージの前提条件となっています。criu パッケージは、複数のプロセスまたは複数のプロセスグループのチェックポイント処理と復元を可能にする、Checkpoint/Restore in User space (CRIU) 関数を提供します (BZ#1289666)。

CAN プロトコルがカーネルで有効化

Controller Area Network (CAN) プロトコルカーネルモジュールが有効化され、CAN デバイスドライバー向けのデバイスインターフェースを提供するようになりました。CAN は、元々は自動車において、さまざまなマイクロコントローラーを接続することを目的としたビークルバス仕様です。それ以来、他の領域にも拡張されてきました。CAN は、高パフォーマンスのインターフェースが必要とされる工業および機械の制御で、RS-485 などの他のインターフェースでは不十分な場合にも使用されています。CAN プロトコルモジュールからエクスポートされる関数は、CAN デバイスドライバーによって使用され、カーネルがデバイスを認識し、アプリケーションがデータを接続/転送できるようにします。カーネルで CAN を有効にすると、サードパーティー製の CAN ドライバーとアプリケーションを使用して CAN ベースのシステムを実装できるようになります (BZ#1311631)。

kexec-tools に永続メモリーのサポートが追加

Linux カーネルは、Non-Volatile Dual In-line Memory Module (NVDIMM) メモリーデバイス向けに E820_PRAM および E820_PMEM タイプをサポートするようになりました。kexec-tools がこれらのメモリーデバイスをサポートするためのパッチがアップストリームからバックポートされました (BZ#1282554)。

libndctl: ユーザー空間 nvdimm 管理ライブラリー

libndctl ユーザー空間ライブラリーが追加されました。これは、カーネルの libnvdimm サブシステムによって提供される、ioctl および sysfs のエントリーポイントへの C インターフェースのコレクションです。このライブラリーにより、NVDIMM 対応プラットフォームを対象とするよりハイレベルな管理ソフトウェアが有効となり、また NVDIMM を管理するためのコマンドラインインターフェースも提供されます (BZ#1271425)。

hpvsa および hpdsa ドライバーに対応するために kABI ホワイトリスト用の新規シンボルが追加

今回の更新により、kernel Application Binary Interface (kABI) ホワイトリストに一式のシンボルが追加され、hpvsa および hpdsa ドライバーに対応するようになりました。
新たに追加されたのは、以下のシンボルです。
  • scsi_add_device
  • scsi_adjust_queue_depth
  • scsi_cmd_get_serial
  • scsi_dma_map
  • scsi_dma_unmap
  • scsi_scan_host (BZ#1274471)

crash がバージョン 7.1.5 にリベース

crash パッケージがアップストリームのバージョン 7.1.5 にアップグレードされました。このバージョンでは、複数のバグが修正され、以前のバージョンに比べて数多くの機能が拡張されています。今回のリベースで注目すべき点は、dis -sdis -fsys -ilist -l などの新しいオプションが追加されたことと、64-bit ARM アーキテクチャーで Quick Emulator (QEMU) によって生成された Executable and Linkable Format (ELF) vmcore が新たにサポートされるようになり、アップストリームの最新のカーネルをサポートするために必要な更新がいくつか追加されたことです。個別のパッチを選択してバックポートするよりも、crash パッケージをリベースする方がより安全かつ効率性が高くなります (BZ#1292566)。

新規パッケージ: crash-ptdump-command

Crash-ptdump-command は、crash ユーティリティーに ptdump サブコマンドを追加する crash の拡張モジュールを提供する新たな rpm パッケージです。ptdump サブコマンドは、Intel Processor Trace ファシリティーによって生成されるログバッファーを vmcore ファイルから取得してデコードし、ファイルに出力します。この新しいパッケージは EM64T および AMD64 アーキテクチャー向けに設計されています (BZ#1298172)。

ambient ケイパビリティーをサポート

ケイパビリティーとは、Linux カーネルが、従来はスーパーユーザー権限に関連付けされていた権限を、複数の個別のユニットに分割するために使用するスレッドごとの属性です。今回の更新により、ambient ケイパビリティーに対するサポートがカーネルに追加されました。ambient ケイパビリティーとは、execve() システムコールを使用してプログラムを実行する際に保持されるケイパビリティーのセットです。ambient ケイパビリティーにできるのは、permitted と inheritable のケイパビリティーのみです。prctl() コールを使用して ambient ケイパビリティーを変更することが可能です。カーネルのケイパビリティー全般に関する詳しい情報は、capabilities(7) の man ページを参照してください。また、prctl コールについての情報は、prctl(2) の man ページを参照してください (BZ#1165316)。

cpuid が利用可能

今回の更新により、Red Hat Enterprise Linux で cpuid ユーティリティーが利用できるようになりました。このユーティリティーは、CPUID 命令から収集される CPU についての詳細情報をダンプするのに加えて、具体的な CPU モデルを特定するツールで、Intel、AMD、VIA の CPU に対応しています (BZ#1307043)。

FC-FCoE シンボルが KABI のホワイトリストに追加

今回の更新により、libfc および libfcoe カーネルモジュールに属するシンボルのリストが、Kernel Application Binary Interface (KABI) ホワイトリストに追加されました。これにより、libfc および libfcoe に依存している Fibre Channel over Ethernet (FCoE) が新たに追加されたシンボルを安全に使用することができます (BZ#1232050)。

新規パッケージ: OpenPower systems 向けの opal-prd

新しい opal-prd パッケージには、ハードウェア固有のリカバリープロセスを処理するデーモンが含まれています。このデーモンは、ブート後にバックグラウドのシステムプロセスとして実行する必要があります。OPAL ファームウェアと対話してハードウェアエラーの原因を捉えて、イベントを管理プロセッサーにログ記録し、適切な場合に回復可能なエラーを処理します (BZ#1224121)。

新規パッケージ: libcxl

新しい libcxl パッケージには、ユーザー空間内のアプリケーションがカーネルの cxl 機能を介して CAPI ハードウェアにアクセスするためのユーザー空間ライブラリーが含まれています。このライブラリーは、ppc64 および ppc64le のアーキテクチャーで使用することができます (BZ#1305080)。

新たに追加された iproute コマンドをカーネルがサポート

今回の更新により、新規追加された iproute コマンドが正しく機能するためのカーネルのサポートが追加されました。提供されているパッチセットには、以下が含まれています。
  • プレフィックス付きのポリシーのハッシュ化を可能にする IPsec インターフェースの拡張機能
  • preflen の閾値に基づいたハッシュのプレフィックスポリシーの追加
  • netlink によるポリシーハッシュテーブルの閾値の設定 (BZ#1222936)

PID cgroup コントローラーのバックポート

今回の更新により、新たなプロセス識別子 (PID) コントローラーが追加されました。このコントローラーは、cgroup ごとのプロセスを対象とし、特定の制限に達した後に、新規タスクがフォークまたはクローンされるのを cgroup 階層で阻止することを許可します (BZ#1265339)

mpt2sas と mpt3sas がマージ

mpt2sasmpt3sas のドライバーのソースコードが統合されました。アップストリームとは異なり、Red Hat Enterprise Linux 7 は、互換性の理由で 2 つのバイナリードライバーを引き続き維持します (BZ#1262031)。

ksc で複数の .ko ファイルの指定が可能

以前のリリースでは、ksc ユーティリティーの 1 回の実行で複数の .ko ファイルを追加することができませんでした。そのため、複数のカーネルモジュールを含むドライバーは、1 回の実行で ksc に渡されませんでした。今回の更新により、同じ実行で、-k オプションを複数回指定することができるようになり、kcs の 1 回の実行を使用して複数のカーネルモジュールで使用されているシンボルの検索に使用することができます。その結果、全モジュールが使用するシンボルを記載した単一のファイルが生成されるようになりました (BZ#906659)。

dracut の更新

dracut initramfs ジェネレーターが更新され、多数のバグが修正され、以前のバージョンに比べて数多くの機能が拡張されました。注目すべき点は以下のとおりです。
  • dracut に新たなカーネルコマンドラインオプション rd.emergency=[reboot|poweroff|halt] が追加されました。このオプションは、クリティカルなエラーが発生した場合に実行すべき操作を指定します。rd.emergency=[reboot|poweroff|halt] を使用する際には、rd.shell=0 オプションも指定する必要があります。
  • rebootpoweroffhalt の各コマンドが dracut の emergency シェルで機能するようになりました。
  • dracut は、カーネルコマンドライン上で複数のボンディング、ブリッジ、VLAN 設定をサポートするようになりました。
  • カーネルコマンドライン上で rd.device.timeout=<seconds> オプションを使用してデバイスのタイムアウトを指定できるようになりました。
  • カーネルコマンドラインで指定した DNS ネームサーバーが DHCP で使用されるようになりました。
  • dracut が 20 バイトの MAC アドレスをサポートするようになりました。
  • 最大転送単位 (MTU) と MAC アドレスが DHCP および IPv6 Stateless Address AutoConfiguration (SLAAC) 向けに正しく設定されました。
  • ip= カーネルコマンドラインオプションは、かっこで括られた MAC アドレスをサポートするようになりました。
  • dracut が NFS over RDMA (NFSoRDMA) モジュールをサポートするようになりました。
  • Fibre Channel over Ethernet (FCoE) デバイスに kdump のサポートが追加されました。FCoE デバイスの設定は、kdump initramfs にコンパイルされます。カーネルクラッシュダンプを FCoE デバイスに保存できるようになりました。
  • dracut--install-optional <file list> オプションと install_optional_items+= <file>[ <file> ...] 設定ファイルディレクティブをサポートするようになりました。この新しいオプションまたはディレクティブを使用するときに、ファイルが存在する場合はファイルがインストールされ、ファイルが存在しない場合はエラーが返されません。
  • dracut DHCP が rfc3442-classless-static-routes オプションを認識するようになりました。これにより、クラスレスのネットワークアドレスを使用できるようになりました (BZ#1359144、BZ#1178497、BZ#1324454、BZ#1194604、BZ#1282679、BZ#1282680、BZ#1332412、BZ#1319270, BZ#1271656、BZ#1271656、BZ#1367374、BZ#1169672, BZ#1222529、BZ#1260955)。

Wacom Cintiq 27 QHD のサポート

Wacom Cintiq 27 QHD タブレットが Red Hat Enterprise Linux 7 でサポートされるようになりました (BZ#1342989)。

Intel® Omni-Path Architecture (OPA) カーネルドライバーの完全なサポート

以前のリリースでは、はテクノロジープレビューとして提供されていた Intel® Omni-Path Architecture (OPA) カーネルドライバーが完全にサポートされるようになりました。Intel® OPA は、クラスター環境内におけるコンピュートと I/O ノード間の高パフォーマンスのデータ転送 (高帯域幅、高メッセージ速度、低レイテンシー) に向けた初期化および設定を実装する Host Fabric Interconnect (HFI) ハードウェアを提供します。
Intel® Omni-Path Architecture のマニュアルの入手方法については、https://access.redhat.com/articles/2039623 の記事を参照してください (BZ#1374826)。

cyclitest の --smi オプションを root 以外のユーザーが利用可能

今回の更新により、root 以外のユーザーとして cyclictest プログラムに --smi オプションを指定して実行できるようになりました。ただし、そのユーザーが realtime グループに属していることも条件となります。システム管理割り込み (SMI)をサポートするプロセッサーでは、--smi によりそのシステムの SMI に関するレポートが表示されます。これは、以前のリリースでは、root ユーザーのみが利用可能でした (BZ#1346771)。

新しい Smart Array ストレージアダプターに対するサポートが追加

Red Hat Enterprise Linux 7.2 以前のバージョンでは、新しい Smart Array ストレージアダプターは正式にサポートされていませんでした。ただし、これらのアダプターは、aacraid ドライバーにより検出され、システムは正しく機能しているようでした。今回の更新により、新しい Smart Array ストレージアダプターは、新しい smartpqi ドライバーによって適切にサポートされるようになりました。更新時にはそれらのアダプター用のドライバー名が変わる点に注意してください (BZ#1273115)。

Linux カーネルが信頼済み Virtual Function (VF) の概念をサポート

Linux カーネルにアップストリームのコードがバックポートされ、信頼済み Virtual Function (VF) の概念に対応するようになりました。その結果、信頼済み VF は、マルチキャスト無作為検出モードを有効化できるようになり、30 を超える IPv6 アドレスを割り当てられるようにすることができます。信頼済み VF は、メディアアクセス制御 (MAC) アドレスを上書きすることも可能です (BZ#1302101)。

IBM Power Systems で seccomp mode 2 をサポート

今回の更新により、IBM Power Systems 上における seccomp mode 2 のサポートが追加されました。seccomp mode 2 は、Berkeley Packet Filter (BPF) 設定ファイルを解析してシステムコールのフィルタリングを定義します。このモードにより、セキュリティーが著しく強化されます。これは、Linux on IBM Power Systems におけるコンテナーの導入に不可欠です (BZ#1186835)。

Memory Bandwidth Monitoring を追加

今回の更新で、Memory Bandwidth Monitoring (MBM) が Linux カーネルに追加されました。MBM は、Resource Monitoring ID (RMID) に関連付けられた、特定のタスクやタスクグループのメモリー帯域幅の使用をトラッキングするのに使用する、プラットフォームの Quality of Service (QoS) 機能のファミリーに含まれる CPU 機能です (BZ#1084618)。

brcmfmac が Broadcom ワイヤレスカードをサポート

brcmfmac カーネルドライバーが更新され、Broadcom BCM4350 と BCM43602 のワイヤレスカードをサポートするようになりました (BZ#1298446)。

ip addr コマンドに autojoin オプションが追加され、マルチキャストのグループ参加/脱退が可能

以前のリリースでは、マルチキャストプルーニングを実行するイーサネットスイッチに対して、Internet Group Management Protocol (IGMP) のメンバーシップを示す方法がありませんでした。そのため、それらのスイッチはパケットをホストのポートにレプリケートしませんでした。今回の更新により、ip addr コマンドで autojoin のオプションが利用できるように機能が拡張され、ホストがマルチキャストグループに参加または脱退できるようになりました (BZ#1267398)。

Open vSwitch が NAT をサポート

今回の更新で、Network Address Translation (NAT) のサポートが Open vSwitch カーネルモジュールに追加されました (BZ#1297465)。

ページテーブルが並行して初期化される

以前のリリースでは、Intel EM64T、Intel 64、および AMD64 アーキテクチャーをベースとする Non-Uniform Memory Access (NUMA) システムでページテーブルが順次に初期化されていました。そのため、大型のサーバーで起動時のパフォーマンスが低下する場合がありました。今回の更新により、パッチセットがバックポートされ、メモリーの初期化の大半は、ノードのアクティブ化の一環として、ノードとローカルの CPU で並行して行われるようになりました。その結果、16 TB から 32 TB のメモリーを搭載したシステムの起動時間は、以前のバージョンと比べて約 2 倍速くなりました (BZ#727269)。

Linux カーネルが Intel MPX をサポート

今回の更新により、Intel Memory Protection Extensions (MPX) のサポートが Linux カーネルに追加されました。Intel MPX とは、Intel 64 アーキテクチャー向けの拡張機能セットです。Intel MPX は、コンパイラー、ランタイムライブラリー、オペレーティングシステムのサポートと共に、バッファーのオーバーフローが原因でコンパイル時間の通常の目的が悪用される可能性のあるポインターリファレンスをチェックすることによって、ソフトウェアの堅牢性とセキュリティーを強化します (BZ#1138650)。表示されるようになりました。

ftrace が期待どおりにコマンド名を出力する

trylock() 関数が正常にロックを取得しなかった場合は、ftrace カーネルトレーサーでのコマンド名の保存に失敗していました。その結果、ftrace/sys/kernel/debug/tracing ファイルにコマンド名を正常に出力しませんでした。この更新により、コマンド名の記録の問題が修正され、ftrace が期待どおりにコマンド名を出力するようになりました。また、ユーザーは、saved_cmdlines_size カーネル設定パラメーターを設定して、保存されるコマンドの数を設定できるようになりました (BZ#1117093)。

スワップアウト共有メモリーが /proc/<pid>/smaps に表示される

今回の更新の前には、スワップアウト共有メモリーは /proc/<pid>/status ファイルと /proc/<pid>/smaps ファイルのどちらにも表示されませんでした。今回の更新により、sysV shm、共有の匿名マッピングおよび tmpfs ファイルへのマッピングを含む、スワップアウト共有メモリーのプロセスごとのアカウンティングが追加されました。スワップアウト共有メモリーは、/proc/<pid>/smaps に表示されるようになりました。ただし、スワップアウト共有メモリーは、/proc/<pid>/status とスワップアウト shmem ページには反映されないため、procps などの特定のツールでは、依然として表示されない状態のままです (BZ#838926)。

カーネルの UEFI サポートの更新

カーネルの Unified Extensible Firmware Interface (UEFI) サポートが、アップストリームカーネルの選択されたパッチで更新されました。このセットにより、数多くのバグが修正され、以前のバージョンに比べて数多くの機能が拡張されています (BZ#1310154)。

セキュアブートを使用するゲストでマウスコントローラーが機能

Red Hat Enterprise Linux は、セキュアブート機能を有効にしたゲスト仮想マシンでマウスコントローラーをサポートするようになりました。これにより、デフォルトでセキュアブートが有効化されているハイパーバイザー上で実行されている Red Hat Enterprise Linux ゲストのマウスが確実に機能するようになりました (BZ#1331578)。

RealTek RTS520 カードリーダーをサポート

今回の更新により、RealTek RTS520 カードリーダーに対するサポートが追加されました (BZ#1280133)。

トンネルデバイスでロックレス xmit をサポート

以前のリリースでは、デフォルトで pfifo_fast 待ち行列規律を使用するトンネルデバイスには、tx パス用のシリアライゼーションロックが必要でした。今回の更新により、CPU ごとの変数が静的アカウンティングに使用されるようになり、tx パスに対するシリアライゼーションロックは不要となりました。その結果、ユーザー空間では、xmit パスをロックする必要なく noqueue 待ち行列規律を設定できるようになったため、トンネルデバイスの xmit パフォーマンスが大幅に向上しました (BZ#1328874)。

Chelsio ドライバーの更新

Chelsio NIC、iWARP、vNIC、iSCSI のドライバーが最新のバージョンに更新されました。この新しいバージョンでは、複数のバグが修正され、以前のバージョンに比べて数多くの機能が拡張されています。
最も注目すべき機能拡張は以下のとおりです。
  • アダプターの統計を取得するための ethtool のサポート
  • チャネルの統計をダンプするための ethtool のサポート
  • ループバックポート統計情報をダンプする ethtool
  • CIM MA ロジックアナライザーのログをダンプするための debugfs エントリー
  • CIM PIF ロジックアナライザーのコンテンツをダンプするための debugfs エントリー
  • チャネルレートをダンプするための debugfs エントリー
  • バックドアアクセスを有効にするための debugfs エントリー
  • meminfo をダンプするための debugfs のサポート
  • MPS トレーシングのサポート
  • RX のハードウェアタイムスタンプのサポート
  • T6 アダプター用のデバイス ID (BZ#1275829)

Chelsio ドライバーの 25 G、50 G 、100 G モードのサポート

今回の更新により、Chelsio ドライバーの 25 G、50 G、100 G スピードモードの定義を追加するパッチセットが Linux カーネルにバックポートされました。また、このパッチセットにより、cxgb4 および cxgb4vf ドライバーにリンクモードマスク API も追加されます (BZ#1365689)。

mlx5 が NFSoRDMA をサポート

今回の更新により、mlx5 ドライバーが、Network File System over Remote Direct Memory Access (NFSoRDMA) のエクスポートをサポートするようになりました。その結果、RDMA で NFS 共有をマウントして、クライアントコンピューターから以下のような操作を実行することができます。
  • ls コマンドを使用した NFS 共有上のファイルの一覧表示
  • 新規ファイルに対する touch コマンドの使用
この機能により、一部のジョブを共有ストレージから実行することができます。これは、サイズが拡大し続ける、InfiniBand 接続の大型グリッドを実行している場合に役立ちます (BZ#1262728)。

第 6 世代 インテル Core プロセッサーで I2C が有効化

今回の更新より、カーネルドライバーによって制御される I2C デバイスが、第 6 世代 インテル Core プロセッサーでサポートされるようになりました (BZ#1331018)。

mlx4 および mlx5 が RoCE をサポート

今回の更新により、Remote Direct Memory Access Over Converged Ethernet (RoCE) ネットワークプロトコルのタイムスパニングが mlx4 および mlx5 のドライバーに追加されました。RoCE とは、ロスレスイーサネットネットワークでレイテンシーが非常に低い Remote Direct Memory Access (RDMA) を介して、効率的なサーバー間のデータ転送を提供するメカニズムです。RoCE は、2 つのイーサネットパケットのうちの 1 つで InfiniBand (IB) トランスポートをカプセル化します。イーサネットパケットには、専用のイーサネットタイプ (0x8915) の RoCEv1 と、ユーザーデータグラムプロトコル (UDP) および専用の UDP ポート (4791) の RoCEv2 があります。
これらの両方の RoCE バージョンが mlx4mlx5 に対応するようになりました。今回の更新より、mlx4 デバイスの物理ポートにフェイルオーバーとリンクアグリゲーションの機能を提供する mlx4 は RoCE Virtual Function リンクアグリゲーションプロトコルをサポートします。2 つの物理ポートを表す IB ポートのみがアプリケーション層に公開されます (BZ#1275423, BZ#1275187, BZ#1275209) (BZ#1275423)。

チャネル間同期のサポート

今回の更新より、Linux カーネルは、AMD64、Intel 64、IBM Power Systems、64 ビット ARM のアーキテクチャーにおけるチャネル間同期をサポートするようになりました。デバイスは、ホストのソフトウェアによる介入なく、作業キュー上の I/O 操作の実行を同期またはシリアル化することができるようになりました (BZ#1275711)。

SGI UV4 に対するサポートを Linux カーネルに追加

今回の更新より、Linux カーネルは SGI UV4 プラットフォームをサポートするようになりました (BZ#1276458)。

TPM 2.0 のサポートの更新

Linux カーネルで、Trusted Platform Module (TPM) バージョン 2.0 のサポートが更新されました (BZ#1273499)。

12 TB の RAM のサポート

今回の更新により、カーネルによる 12 TB の RAM のサポートが認定されました。この新たな機能は、高度なメモリー技術に対応し、Red Hat Enterprise Linux 7 のライフタイム内にリリースされる将来のサーバーの技術要件を満たす可能性をもたらします。この機能は、AMD64 と Intel 64 のアーキテクチャーで利用可能です (BZ#797488)。

RDMA 向けの 10GbE RoCE Express 機能の完全なサポート

Red Hat Enterprise Linux 7.3 では、10GbE RDMA over Converged Ethernet (RoCE) Express 機能が完全にサポートされるようになりました。これにより、IBM z Systems 上におけるイーサネットと Remote Direct Memory Access (RDMA)、ならびに Direct Access Programming Library (DAPL) と OpenFabrics Enterprise Distribution (OFED) API の使用が可能となりました。
この機能を IBM z13 system で使用する前には、最低限必要なサービスが適用されていることを確認してください: z/VM APAR UM34525 および HW ycode N98778.057 (bundle 14) (BZ#1289933)。

IBM z Systems で zEDC 圧縮を完全にサポート

Red Hat Enterprise Linux 7.3 以降のバージョンでは、 Generic Workqueue (GenWQE) エンジンデバイスドライバーが完全にサポートされています。このドライバーの初期タスクは、RFC1950、RFC1951、RFC1952 フォーマットの zlib 形式の圧縮と、圧縮解除ですが、その他のさまざまなタスクを加速するように調整することが可能です (BZ#1289929)。

IBM z Systems 向けの LPAR ウォッチドッグ

IBM z Systems 受けの機能拡張されたウォッチドッグが完全にサポートされるようになりました。このドライバーは、Linux の論理パーティション (LPAR) および z/VM ハイパーバイザー内の Linux ゲストに対応し、Linux システムが応答しなくなった場合には自動リブートや自動ダンプの機能を提供します (BZ#1278794)。