![](https://habrastorage.org/getpro/habr/post_images/9e3/d19/948/9e3d19948ac4132613bf784ef7c7d229.png)
新しいバージョンのカーネルで2か月間の積極的な作業が行われ、今日、Linus TorvaldsがついにLinux 4.9カーネルを導入しました 。 最も注目すべき測定は、カーネルスタックオーバーフローを診断およびブロックするためのツール、ならびにOverlayFSでのSELinuxサポートの追加、および多くの人が望んでいたGerybusバスの実装です。
統計に関しては、いつものように広範囲です。 新しいバージョンでは、1400人の開発者による15,000件の修正が採用されました。 パッチの合計サイズは45 MBです。 パッチの変更は11,042ファイルに影響し、632,157行のコードが追加され、354,728行が削除されました。 このバージョンで示された変更の大部分(約42%)が何らかの形でデバイスドライバーに関連していることは驚くことではありません。 その他の19%の変更は、さまざまなハードウェアアーキテクチャのコードの更新に関連しています。12%-ネットワークスタック、5%-ファイルシステム、4%-カーネルサブシステム。
さて、 カーネルの新しいバージョンの 重要な変更点についてもう少し詳しく説明します 。
ネットワークサブシステム
- 最後に、Googleが提案したTCP輻輳制御アルゴリズムの実装がカーネルに追加されました。 いわゆるBBR(ボトルネック帯域幅とRTT)について話します。これは、google.comやYouTubeなどのリソースからのトラフィックのデータ伝送遅延を減らすために使用されます。
- 乱数生成モジュールがnetfilterに追加されました。 このモジュールは、パッケージのランダムな割り当てを選択するために使用することをお勧めします。たとえば、キュー内のランダムな配布などです。
- ネットリンクインターフェイスに基づいて、BATMANネットワークメッシュプロトコルを構成するための新しいメカニズム(モバイルアドホックネットワークへのより良いアプローチ)が導入されました。
- さらに、バイトクォータが実装されるnetfilterにクォータメカニズムが追加されました。 例として、100 MBのクォータを設定する可能性があります。この場合、このルールのトラフィック制限を使い果たした後、ルール自体のアクションは停止します。
セキュリティと仮想化
- ここでは、主に、スタックオーバーフローを検出およびブロックするための多くのツールを提供する仮想スタックスタックマッピングメカニズム(CONFIG_VMAP_STACK)の実装により、いくつかの変更の追加を強調する必要があります。 上記はすべてx86アーキテクチャに関連しています。 この新機能は、カーネルの脆弱性を悪用することを計画している攻撃者にとって問題になる可能性があります。 これらの変更により、メモリ割り当て操作の数を減らし、セキュリティを強化し、スタックオーバーフローを診断するためのさまざまなツールを実装できます。 これはすべて、最適化とキャッシュによる遅延を最小限に抑える開発者のおかげで実装されています。
- SELinuxの場合、マルチレイヤーファイルシステムのサポートが追加されました。これはまず、OverlayFSです。 これらは、いわゆるコンテナ隔離システムで環境を構築するために使用されます。
- pkey_alloc()、pkey_free()、pkey_mprotect()などのシステムコールも実装されており、将来のIntelプロセッサモデルで機能する特定のPKU(ユーザー空間のメモリ保護キー)メカニズムのサポートが追加されています。
システムサービスとメモリ
- ここでの主な変更点は、Greybusサブシステムの追加です。 モジュール式スマートフォンAraのコンポーネントの相互作用を保証するために特別に設計されています(そう、彼らはそれを忘れていません!)。 そのため、Greybusでは、必要に応じて接続するハードウェアコンポーネントの相互作用に内部バスを使用できます。 コールルーティングとプライベート通信のサポートがあります。 これにより、2つのコンポーネントが閉じたモードで相互にやり取りできるようになります。 おそらく、モジュラースマートフォンプロジェクトの愛好家は、今でも仕事を続けることができます。
- 新しいファイルセットが/ sys / kernel / irqに追加されました。これは、割り込みハンドラのテーブルの構成を記述しています。 新しいセットは、/ proc / interruptsの代わりとして配置されます。
- CONFIG_DEBUG_TEST_DRIVER_REMOVEオプションが登場しました。これにより、初期段階(デバイスの初期化)でドライバーのロード、アンロード、および再ロードのサイクルを通じてデバイスドライバーのアンロードをテストできます。 これはすべて自動的に機能します。
- 開発者は、コアドキュメントをフォーマットするためのツールの開発も続けました。
ファイルとドライブ
- FUSEモジュールは、POSIX ACLに準拠したアクセス制御リストのサポートを受けました。
- 多数の共通エクステントのサポートがXFSファイルシステムに追加され、複数の所有者が連続したデータ領域に関する情報を共有できるようになりました。 この機能により、XFSにcopy_file_range()を実装できます。
- 開発者は、NFS4.2仕様で定義されているNFSサーバーにCOPY操作のサポートを追加し、サーバーからクライアントへ、またはその逆に情報を移動せずにファイルの内容をコピーできるようにしました。
ハードウェア
- AMDGPUドライバーは、GCN 1.0マイクロアーキテクチャーに基づく南諸島GPUファミリーの(これまでの実験的な)サポートのサポートを導入しました。 仮想ディスプレイを操作するためのツールが追加されました 。
- Mellanox Technologiesプラットフォームシステムのサポートが追加されました。
- Loongson 1Cプロセッサのサポートも追加されました。
- Broadcom Northstar USB 3.0コントローラーとRockchip / Innosilicon USB 2.0コントローラーがサポートされるようになりました。
まあ、Linusと開発者コミュニティ全体のおかげで、Linuxの開発を可能にする新しい成果を待っています。