コンテンツにスキップ
このページの情報は古くなっています。/features/kernel/ から最新のドキュメントを参照してください。

CachyOS カーネル

CachyOS カーネルは、アップストリームの機能強化、設定、パッチを活用したカスタムカーネルです。

  • 高度なコンパイル: GCC と Clang の両コンパイラーに対応した高度にカスタマイズ可能な PKGBUILD
  • リンク時最適化 (LTO): パフォーマンス向上のためデフォルトで Thin LTO を有効化
  • プロファイルガイド最適化: 最適なコード生成のための AutoFDO + Propeller プロファイリング (詳細はこちら)
  • カーネル制御フロー整合性 (kCFI): LLVM 使用時にセキュリティ機能として利用可能
  • タイマー周波数オプション: 300Hz, 500Hz, 600Hz, 750Hz, 1000Hz から設定可能 (デフォルト: 1000Hz)
  • アーキテクチャ最適化: x86-64-v3, x86-64-v4, AMD Zen4 向け専用ビルドに対応
  • コンパイラ最適化: -fivopts-fmodulo-sched を含む高度な GCC フラグ
  • 複数のスケジューラ: ワークロードに応じて BORE, EEVDF, BMQ スケジューラを選択可能
  • AMD P-State の強化: Preferred Core 対応と linux-next からの最新の amd-pstate の改善パッチ
  • リアルタイム対応: BORE スケジューラを統合した RT カーネルビルドを提供
  • CachyOS Sauce: スケジューラとシステムのチューニングを含むカスタム CONFIG_CACHY 設定
  • 低レイテンシ最適化: 応答性の向上とジッター低減のためのパッチ
  • ZFS 対応: コンパイル済みモジュールによる組み込み ZFS ファイルシステムサポート
  • NVIDIA 統合:
    • パッチ済みのプロプライエタリ版 NVIDIA ドライバモジュール
    • オープンソース版 NVIDIA ドライバのサポート
    • すぐに使えるモジュールをリポジトリ内で提供
  • I/O スケジューラの改善:
    • BFQ と mq-deadline のパフォーマンス強化
    • 代替 ADIOS I/O スケジューラのサポート
  • メモリ管理:
    • メモリ圧迫時のページスラッシングを防ぐ le9uo パッチ
    • Zen カーネルのメモリ管理チューニング (コンパクション、ウォーターマーク最適化)
  • ゲーミングハードウェア: Steam Deck パッチ (オーディオ, HW Quirks, HID) と ROG Ally 対応
  • Apple ハードウェア: T2 MacBook にデフォルトで対応
  • ASUS ハードウェア: ASUS ハードウェアの互換性を向上するパッチ
  • グラフィックス: HDR サポートを有効化、AMDGPU の min_powercap オーバーライド (amdgpu_ignore_min_pcap)
  • マルチメディア: v4l2loopback モジュールをデフォルトで内蔵
  • 仮想化: VFIO/GPU パススルー向け ACS オーバーライドに対応
  • アップストリーム統合: Clear Linux と linux-next から厳選したパッチを取り込み

CachyOS カーネルには、ユーザー体験を向上させる、目立たないながらも重要な機能がほかにもあります。

  • ストリップなしのカーネルバイナリをもつ、デバッグバリアントのカーネルを内蔵しています。これは AutoFDO でカーネルをプロファイリングするために必要です。
  • Waydroid に必要なモジュールである Binder がカーネル設定で標準で有効になっており、すでに設定済みです。

CachyOS は幅広いカーネルに対応しています。対応するすべてのカーネルには CachyOS ベースパッチセットが適用されています。 それぞれのカーネルには、GCC の代わりに Clang でビルドされた対応する -lto バリアントがあります。

  • linux-cachyos
    • 標準のカーネル、迷ったらこれ
    • 応答性向上のため 1000Hz ティックレートを採用
    • Clang と ThinLTO でビルド
    • パフォーマンス向上のため独自の AutoFDO プロファイルでプロファイリング済み、プロファイリングに使用したスクリプトはこちら
  • linux-cachyos-bore
    • BORE スケジューラを採用
  • linux-cachyos-bmq
    • Alfred Chen による Project C の BMQ スケジューラを採用
      • sched-ext には非対応です。
  • linux-cachyos-deckify
    • ハンドヘルドデバイス向けのデフォルトカーネル
      • ハンドヘルドデバイスでほかのカーネルを使用することは非推奨でサポート対象外です。
    • BORE スケジューラを採用
    • ベースパッチセットに加え、ハンドヘルドデバイスでの互換性と全体的な体験を向上させるハンドヘルド専用パッチを適用
  • linux-cachyos-eevdf
    • 応答性向上のためデフォルトカーネルスケジューラをチューニング
  • linux-cachyos-lts
    • 最新の長期サポート (LTS) カーネルをベースに構築
    • BORE スケジューラを採用
    • 最大限の安定性を確保するため、ほかのカーネルと比べてパッチ数を最小限に
  • linux-cachyos-hardened
    • BORE スケジューラを採用
    • linux-hardened パッチセットを適用済み
    • linux-hardened の設定をベースにしたカーネル設定
      • 非常に積極的なセキュリティ強化が施されており、パフォーマンスとユーザー体験に大きな影響があります。
      • sched-ext には非対応です。
  • linux-cachyos-rc
    • Linus のツリーからの最新メインラインカーネルをベースに構築
    • BORE スケジューラを採用
    • パッチセットに新機能を導入するメインカーネル
  • linux-cachyos-server
    • デスクトップではなくサーバーワークロード向けにチューニング
      • 300Hz ティックレート
      • プリエンプションなし
      • チューニングなしの EEVDF
  • linux-cachyos-rt-bore
    • リアルタイムプリエンプション
    • BORE スケジューラを採用

標準カーネルへの提案や改善がある場合は linux-cachyos GitHub で Issue の投稿をお願いします。

Terminal window
linux-cachyos # 標準カーネルのベースパッケージ、Clang と ThinLTO でコンパイル済み
linux-cachyos-hardened # hardened カーネルのベースパッケージ、GCC でコンパイル済み
linux-cachyos-hardened-lto # linux-cachyos-hardened の Clang コンパイル版
linux-cachyos-hardened-{,lto-}headers
linux-cachyos-hardened-{,lto-}nvidia
linux-cachyos-hardened-{,lto-}nvidia-open
linux-cachyos-hardened-{,lto-}zfs
linux-cachyos-hardened-{,lto-}dbg

プリビルドカーネルモジュール

Section titled “プリビルドカーネルモジュール”

より多くのユーザーに対応するために、CachyOS はよく使われる主要なカーネルモジュールをカーネルとともに提供しています。これにより、カーネルのアップデートや新しいカーネルのインストールごとにモジュールを再コンパイルする必要がなくなり、リポジトリからインストールするだけで使えます。これにより、同じモジュールをプリコンパイル版として提供している -dkms パッケージは実質的に不要になります。

ZFS は CachyOS がサポートする多くのファイルシステムのひとつです。CDDL ライセンスが理由で Linux カーネルのライセンスと互換性がなく、カーネルツリーへのマージができません。提供しているモジュールは最新カーネルとの互換性を確保するため、アップストリームの最新機能と修正が含まれています。

CachyOS はクローズドソースとオープンソースの両方のカーネルモジュールのプリコンパイル版を提供しています。NVIDIA のカーネルモジュール開発はツリー外で行われるため、カーネルのリリースサイクルとは一致せず、標準の設定が最新カーネルと互換性がないことがあります。回避策として、CachyOS はコミュニティが作成したパッチや NVIDIA から直接提供されたパッチをモジュールに適用しています。

なぜ AutoFDO はほかのカーネルバリアントには使われないの?

Section titled “なぜ AutoFDO はほかのカーネルバリアントには使われないの?”

カーネルを実質的に2回ビルドする必要があるため、コンパイルに多くの時間とリソースがかかるからです。AutoFDO を使ったカーネルビルドは以下の手順で行われます。

  1. AutoFDO とデバッグ機能を有効にしてカーネルをビルド
  2. プロファイルを作成、つまり最適化に必要なプロファイリングデータを収集するためのワークロードを実行
  3. AutoFDO プロファイルを使ってカーネルを再ビルド

こうした事情により現時点では linux-cachyos バリアントのみに適用されています。

AutoFDO の詳細についてはこちらをご覧ください。

リアルタイムカーネルでゲームのパフォーマンスを改善できる?

Section titled “リアルタイムカーネルでゲームのパフォーマンスを改善できる?”

改善できません。リアルタイムカーネルは通常のプリエンプティブ (PREEMPT) カーネルと比べてはるかに多くのコードのプリエンプトを許容するようになります。これによりゲームプロセスを含む多くのタスクが頻繁にプリエンプトされてシステムリソースが強制的に解放されることにつながり、パフォーマンスを低下させます。