CachyOS カーネル
CachyOS カーネルは、アップストリームの機能強化、設定、パッチを活用したカスタムカーネルです。
パフォーマンス最適化
Section titled “パフォーマンス最適化”- 高度なコンパイル: 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 フラグ
CPU の強化
Section titled “CPU の強化”- 複数のスケジューラ: ワークロードに応じて BORE, EEVDF, BMQ スケジューラを選択可能
- AMD P-State の強化: Preferred Core 対応と linux-next からの最新の amd-pstate の改善パッチ
- リアルタイム対応: BORE スケジューラを統合した RT カーネルビルドを提供
- CachyOS Sauce: スケジューラとシステムのチューニングを含むカスタム
CONFIG_CACHY設定 - 低レイテンシ最適化: 応答性の向上とジッター低減のためのパッチ
ファイルシステムとメモリ
Section titled “ファイルシステムとメモリ”- ZFS 対応: コンパイル済みモジュールによる組み込み ZFS ファイルシステムサポート
- NVIDIA 統合:
- パッチ済みのプロプライエタリ版 NVIDIA ドライバモジュール
- オープンソース版 NVIDIA ドライバのサポート
- すぐに使えるモジュールをリポジトリ内で提供
- I/O スケジューラの改善:
- BFQ と mq-deadline のパフォーマンス強化
- 代替 ADIOS I/O スケジューラのサポート
- メモリ管理:
- メモリ圧迫時のページスラッシングを防ぐ le9uo パッチ
- Zen カーネルのメモリ管理チューニング (コンパクション、ウォーターマーク最適化)
そのほかの機能
Section titled “そのほかの機能”ハードウェアサポート
Section titled “ハードウェアサポート”- ゲーミングハードウェア: Steam Deck パッチ (オーディオ, HW Quirks, HID) と ROG Ally 対応
- Apple ハードウェア: T2 MacBook にデフォルトで対応
- ASUS ハードウェア: ASUS ハードウェアの互換性を向上するパッチ
- グラフィックス: HDR サポートを有効化、AMDGPU の min_powercap オーバーライド (
amdgpu_ignore_min_pcap)
システムの強化
Section titled “システムの強化”- マルチメディア: v4l2loopback モジュールをデフォルトで内蔵
- 仮想化: VFIO/GPU パススルー向け ACS オーバーライドに対応
- アップストリーム統合: Clear Linux と linux-next から厳選したパッチを取り込み
CachyOS カーネルには、ユーザー体験を向上させる、目立たないながらも重要な機能がほかにもあります。
- ストリップなしのカーネルバイナリをもつ、デバッグバリアントのカーネルを内蔵しています。これは AutoFDO でカーネルをプロファイリングするために必要です。
- Waydroid に必要なモジュールである Binder がカーネル設定で標準で有効になっており、すでに設定済みです。
CachyOS は幅広いカーネルに対応しています。対応するすべてのカーネルには CachyOS ベースパッチセットが適用されています。 それぞれのカーネルには、GCC の代わりに Clang でビルドされた対応する -lto バリアントがあります。
- linux-cachyos
- linux-cachyos-bore
- BORE スケジューラを採用
- linux-cachyos-bmq
- Alfred Chen による Project C の BMQ スケジューラを採用
sched-ext には非対応です。
- Alfred Chen による Project C の BMQ スケジューラを採用
- 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 の投稿をお願いします。
パッケージ命名規則
Section titled “パッケージ命名規則”linux-cachyos # 標準カーネルのベースパッケージ、Clang と ThinLTO でコンパイル済みlinux-cachyos-hardened # hardened カーネルのベースパッケージ、GCC でコンパイル済みlinux-cachyos-hardened-lto # linux-cachyos-hardened の Clang コンパイル版linux-cachyos-hardened-{,lto-}headerslinux-cachyos-hardened-{,lto-}nvidialinux-cachyos-hardened-{,lto-}nvidia-openlinux-cachyos-hardened-{,lto-}zfslinux-cachyos-hardened-{,lto-}dbgプリビルドカーネルモジュール
Section titled “プリビルドカーネルモジュール”より多くのユーザーに対応するために、CachyOS はよく使われる主要なカーネルモジュールをカーネルとともに提供しています。これにより、カーネルのアップデートや新しいカーネルのインストールごとにモジュールを再コンパイルする必要がなくなり、リポジトリからインストールするだけで使えます。これにより、同じモジュールをプリコンパイル版として提供している -dkms パッケージは実質的に不要になります。
ZFS は CachyOS がサポートする多くのファイルシステムのひとつです。CDDL ライセンスが理由で Linux カーネルのライセンスと互換性がなく、カーネルツリーへのマージができません。提供しているモジュールは最新カーネルとの互換性を確保するため、アップストリームの最新機能と修正が含まれています。
NVIDIA
Section titled “NVIDIA”CachyOS はクローズドソースとオープンソースの両方のカーネルモジュールのプリコンパイル版を提供しています。NVIDIA のカーネルモジュール開発はツリー外で行われるため、カーネルのリリースサイクルとは一致せず、標準の設定が最新カーネルと互換性がないことがあります。回避策として、CachyOS はコミュニティが作成したパッチや NVIDIA から直接提供されたパッチをモジュールに適用しています。
よくある質問
Section titled “よくある質問”なぜ AutoFDO はほかのカーネルバリアントには使われないの?
Section titled “なぜ AutoFDO はほかのカーネルバリアントには使われないの?”カーネルを実質的に2回ビルドする必要があるため、コンパイルに多くの時間とリソースがかかるからです。AutoFDO を使ったカーネルビルドは以下の手順で行われます。
- AutoFDO とデバッグ機能を有効にしてカーネルをビルド
- プロファイルを作成、つまり最適化に必要なプロファイリングデータを収集するためのワークロードを実行
- AutoFDO プロファイルを使ってカーネルを再ビルド
こうした事情により現時点では linux-cachyos バリアントのみに適用されています。
AutoFDO の詳細についてはこちらをご覧ください。
リアルタイムカーネルでゲームのパフォーマンスを改善できる?
Section titled “リアルタイムカーネルでゲームのパフォーマンスを改善できる?”改善できません。リアルタイムカーネルは通常のプリエンプティブ (PREEMPT) カーネルと比べてはるかに多くのコードのプリエンプトを許容するようになります。これによりゲームプロセスを含む多くのタスクが頻繁にプリエンプトされてシステムリソースが強制的に解放されることにつながり、パフォーマンスを低下させます。