第3章 コンパイラーとツール
dracut
で iBFT エントリーに応じて VLAN を設定する
今までは
dracut
ユーティリティーでは iBFT に VLAN パラメーターが記述され有効になっていても VLAN ネットワークインターフェースを作成しませんでした。今回の更新により VLAN での iSCSI 起動が期待通り正しく動作するようになります。
gcc でSystem z バイナリーでのホットパッチに対応
gcc ホットパッチ属性では System z バイナリーでマルチスレッド化したコードのオンラインパッチ適用に関するサポートが実装されています。今回の更新により、機能属性を使用するとホットパッチを適用する機能を選択することができるようになります。また、全機能のホットパッチ適用を有効にする場合は -mhotpatch= コマンドラインオプションを使用します。
ホットパッチ適用を有効にするとソフトウェアのサイズが増大するためパフォーマンスに悪影響を及ぼします。このため、ホットパッチ適用は特定の機能に限定し、一般的にはホットパッチ適用は避けることを推奨しています。
TLS バージョンに対する curl サポートの変更
NSS で TLS プロトコルのマイナーバージョンの指定をネゴシエートできるよう
curl
の新しいオプション --tlsv1.0
、--tlsv1.1
、--tlsv1.2
が採用されています。準じて libcurl
API には該当の定数 CURL_SSLVERSION_TLSv1_0、CURL_SSLVERSION_TLSv1_1、CURL_SSLVERSION_TLSv1_2 が採用されています。既存している curl
の --tlsv1
オプションと libcurl API の CURL_SSLVERSION_TLSv1 定数のセマンティックはクライアントとサーバーの両方で対応する最新の TLS 1.x プロトコルをネゴシエートするよう修正されています。
Python ConfigParser による値のないオプションの処理
Python ConfigParser は各オプションに対して値を必要とする設計でしたが、my.cnf などの特定の設定ファイルには値を持たないオプションがあります。このため、ConfigParser ではこのような設定ファイルの読み込みに失敗していました。この機能が Python 2.6.6 にバックポートされ、ConfigParser で値を持たないオプションがある設定ファイルの読み込みを行えるようになりました。
tcpdump で -J、-j、--time-stamp-precision の各オプションに対応
カーネル、glibc、libpcap でナノ秒単位のタイムスタンプ解決を取得する API が提供されるため、tcpdump でこの機能を利用するよう更新されています。これによりユーザー側で利用可能なタイムスタンプソースの問い合わせ、特定タイムスタンプソースの設定、指定した解決法を使ったタイムスタンプの要求 (--time-stamp-precision) などを行えるようになります。
SCSI デバイス間でのデータのコピーを行うユーティリティーに対する改善
SCSI プロトコルの利点を活かせるストレージデバイス間のデータコピーの効率性を高めるユーティリティーが sg3_utils パッケージに採用されています。この機能を有効にするため、
sg_xcopy
と sg_copy_results
のプログラムが sg3_utils パッケージにバックポートされています。
ethtool でカスタムの RSS ハッシュキーの定義に対応
RSS にカスタムのハッシュキーを定義できるよう ethtool に機能強化が加えられています。これにより受け取りキュー方向に向けたトラフィックに応じて受け取りキューを利用し、期待しているトラフィックに適したキーを選択することでパフォーマンスとセキュリティの両方を向上させています。
tcpdump に Setdirection のサポートが追加
tcpdump パッケージに setdirection サポートが加えられています。-P フラグに引数として使用することでキャプチャするパケットを指定できるようになります。受信パケットのみの場合は -P in、送信パケットのみの場合は -P out、両方のパケットを指定する場合は -P inout を設定します。
sysctl によるシステムディレクトリーのグループの読み取り
sysctl
ユーティリティーに新しいオプション --system
が採用され、sysctl でシステムディレクトリーのグループの設定ファイルを処理できるようになります。
mcelog パッケージのアップストリームバージョン 109 へのアップグレード
mcelog パッケージがアップストリームバージョン 109 にアップグレードされ、バグ修正および機能強化が追加されています。特に、mcelog で Intel Core i7 CPU アーキテクチャに対応するようになります。
biosdevname のアップストリームバージョン 0.6.2 へのアップグレード
biosdevname パッケージがアップストリームバージョン 0.6.2 にアップグレードされています。中でも Mellanox の新しいドライバー用の
dev_port
属性が追加され FCoE デバイスの命名を無視できるようになります。
PCRE ライブラリーの改善
バイナリーファイルが有効な UTF-8 シーケンスではなかった場合、grep ユーティリティーが PCRE のマッチングの失敗から復帰できるようにするため、次の機能が PCRE ライブラリーにバックポートされています。
* pcre_exec() 関数で対象外の開始オフセット値をチェックし、PCRE_ERROR_BADOFFSET エラーを報告するようになります。PCRE_ERROR_NOMATCH エラーの報告や無限ループは行われなくなります。
* pcre_exec() 関数を呼び出し無効な UTF-8 サブジェクト文字列で UTF-8 の一致を行うと、ovector アレイの引数の大きさが十分であれば無効な UTF-8 バイトの 1 番目のサブジェクト文字列のオフセットと詳細な理由コードが ovector アレイエレメントに返されます。また、こうした詳細を表示するのに pcretest ユーティリティーを使用することができるようになります。今回の更新により、pcre_compile() 関数で報告されるのは最初の無効 UTF-8 バイトであり最後のバイトではありません。また、公的な使用を目的とはしていない pcre_valid_utf8() 関数の署名が変更されているため注意してください。pcretest ユーティリティーのエラーコードに読みやすいエラーメッセージが追加されています。
glibc の動的ローダーで Intel AVX-512 に対応
glibc の動的ローダーで Intel AVX-512 拡張に対応するようになります。動的ローダーで必要とされる AVX-512 レジスターの保存と復元が可能になるため、同じ AVX-512 を使用する監査モジュールが原因で AVX-512 を有効にしたアプリケーションに障害が発生しないようにしています。
Valgrind で Intel MPX の命令を認識
Valgrind は MPX (Intel Memory Protection Extensions) の命令および MPX bnd プレフィックスを使った命令は認識しませんでした。このため、Valgrind は MPX 命令を使ったプログラムは SIGKILL 信号で終了していました。更新により新しい MPX 命令や bnd プレフィックスを認識するようになります。現在、新しい MPX 命令はすべて動作のない命令として実装されているため bnd プレフィックスは無視されます。結果、MPX 命令や bnd プレフィックスを使ったプログラムは CPU では MPX が有効にはされていなかったかのように Valgrind 配下で実行されるため、このプログラムは終了しなくなります。
free で読みやすい出力に対応
free
ユーティリティーに新しいオプション -h
が追加されています。すべての出力フィールドが単位などを含め最短 3 桁表記に自動的に調整されるため出力が読みやすくなります。
w で -i オプションに対応
w
ユーティリティーに -i
オプションが追加され FROM
のコラムにホスト名の代わりに IP アドレスが表示されます。
vim のバージョン 7.4 へのリベース
vim パッケージがアップストリームバージョン 7.4 に更新されバグ修正および機能強化が追加されています。注目すべき変更として次のようなものが挙げられます。Vim テキストエディターで
undofile
オプションを設定すると undo 履歴をファイルに保存できるようになります。デフォルトではバッファを解放する際、そのバッファ用に作成された undo 履歴ツリーは破棄されます。undo 履歴をファイルに保存する機能を有効にすると、履歴を自動的に保存し、次回バッファを開いた時にその履歴を復元します。今回の更新では新しい正規表現エンジンが採用されています。今までのエンジンはバックトラックのアルゴリズムを使用していました。テキストに対するパターンの合致は一方向で行われ、この合致に失敗すると別の方向での合致が行われていました。単純なパターンの場合は正しく動作していましたが、長いテキストで複雑なパターンを合致させようとするとかなり長い時間がかかっていました。新しいエンジンではステートマシンの論理を使用し、現在の文字で可能性のあるすべての代替を試行し可能性のあるパターンの状態を保存します。ただし、このプロセスは単純なパターンの場合には今までのエンジンより少し時間がかかります。長いテキストに対して複雑なパターンの合致を行う場合は今までのエンジンより短時間で処理されます。特に注目すべきは行数の多い XML ファイルや JavaScript の構文の強調表示が改善されている点です。