「カーネル」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (→非公式カーネル: 表示順番を変更) |
細 (→公式サポートカーネル: テンプレートエラーを修正) |
||
(5人の利用者による、間の64版が非表示) | |||
3行目: | 3行目: | ||
[[bs:Kernel]] |
[[bs:Kernel]] |
||
[[en:Kernel]] |
[[en:Kernel]] |
||
− | [[es:Kernel]] |
||
[[fr:Kernel]] |
[[fr:Kernel]] |
||
− | [[it:Kernel]] |
||
[[pt:Kernel]] |
[[pt:Kernel]] |
||
[[ru:Kernel]] |
[[ru:Kernel]] |
||
12行目: | 10行目: | ||
{{Related|カーネルモジュール}} |
{{Related|カーネルモジュール}} |
||
{{Related|カーネルモジュールのコンパイル}} |
{{Related|カーネルモジュールのコンパイル}} |
||
− | {{Related|カーネルパニック}} |
||
{{Related|sysctl}} |
{{Related|sysctl}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | + | Wikipedia によると: |
|
+ | :[[Wikipedia:ja:Linuxカーネル|Linux カーネル]]とは、モノリシックで Unix ライクなオープンソースのコンピュータ[[Wikipedia:ja:カーネル|オペレーティングシステムカーネル]]である。 |
||
− | :''カーネルは、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。'' |
||
− | + | [[Arch Linux]] は Linux カーネルをベースにしています。Arch Linux では最新の安定版カーネルに加え、様々な代替 Linux カーネルを利用することができます。この記事では、リポジトリで利用可能な選択肢のいくつかを、それぞれの簡単な説明とともにリストアップしています。また、システムのカーネルに適用できるパッチについての説明もあります。記事の最後には、カスタムカーネルのコンパイルについての概要と、様々な方法へのリンクがあります。 |
|
+ | カーネルのパッケージは {{ic|/usr/lib/modules/}} に[[インストール]]されます。その後、パッケージは [[Wikipedia:ja:vmlinuz|vmlinuz]] 実行可能イメージを生成するために使用され、生成されたイメージは {{ic|/boot/}} へ保存されます。[https://archlinux.org/news/new-kernel-packages-and-mkinitcpio-hooks/] 異なるカーネルをインストールしたり、複数のカーネルを切り替えたりする場合は、変更を反映させるために[[ブートローダー]]を設定しなければなりません。 |
||
− | ==公式サポートカーネル== |
||
+ | |||
+ | == 公式サポートカーネル == |
||
公式にサポートされているカーネルについては、[https://bbs.archlinux.org/viewforum.php?id=22 フォーラム]でのコミュニティサポートと[[バグ報告ガイドライン|バグレポート]]を利用できます。 |
公式にサポートされているカーネルについては、[https://bbs.archlinux.org/viewforum.php?id=22 フォーラム]でのコミュニティサポートと[[バグ報告ガイドライン|バグレポート]]を利用できます。 |
||
+ | * {{App|Stable|いくつかのパッチを適用したバニラな Linux カーネル。|https://www.kernel.org/|{{Pkg|linux}}}} |
||
− | ;{{Pkg|linux}} |
||
+ | * {{App|Hardened|カーネルおよびユーザ空間の脆弱性を緩和するための一連の堅牢化パッチを適用した、セキュリティ特化の Linux カーネルです。また、{{Pkg|linux}} よりも多くの上流のカーネル堅牢化機能を有効にします。|https://github.com/anthraxx/linux-hardened|{{Pkg|linux-hardened}}}} |
||
− | :[core] リポジトリにある Linux カーネルとモジュール。バニラカーネル(素のカーネル)に[https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux 多少のパッチが適用されています]。 |
||
+ | * {{App|Longterm|サーバーでの使用を対象にしたコンフィグオプションが含まれている、長期サポート (LTS) Linux カーネルおよびモジュール。|https://www.kernel.org/|{{Pkg|linux-lts}}}} |
||
− | |||
+ | * {{App|[[リアルタイムカーネル]]|IngoMolnar が率いるコア開発者の小グループによって維持されています。このパッチを使用すると、コードのいくつかの非常に小さな領域("raw_spinlock クリティカル領域")を除いて、ほぼすべてのカーネルをプリエンプトできます。これは、ほとんどのカーネルスピンロックを優先度継承をサポートするミューテックスに置き換え、すべての割り込みとソフトウェア割り込みをカーネルスレッドに移動することによって行われます。|https://wiki.linuxfoundation.org/realtime/start|{{Pkg|linux-rt}}, {{Pkg|linux-rt-lts}}}} |
||
− | ;{{Pkg|linux-hardened}} |
||
+ | : {{Note|1=リアルタイムカーネルサポートは [https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=baeb9a7d8b60b021d907127509c44507539c15e5 Linux 6.12] にマージされました。}} |
||
− | :カーネルやユーザースペースに対する脆弱性攻撃から防護する [https://github.com/thestinger/linux-hardened ハードニングパッチセット] が適用されたセキュリティ指向 Linux カーネル。ユーザー名前空間 (非特権による使用はパッチで無効化済み) や audit、あるいは [[SELinux]] など標準の {{Pkg|linux}} には含まれていないカーネルの堅牢化機能も有効になっています。 |
||
+ | * {{App|Zen Kernel|カーネルハッカーの共同作業により、日常的なシステムに最適な Linux カーネルです。より詳細な情報は [https://github.com/zen-kernel/zen-kernel/wiki/FAQ FAQ] と [https://github.com/zen-kernel/zen-kernel/wiki/Detailed-Feature-List Detailed Feature List] を参照してください。|https://github.com/zen-kernel/zen-kernel|{{Pkg|linux-zen}}}} |
||
− | |||
− | ;{{Pkg|linux-lts}} |
||
− | :[core] リポジトリにある長期サポート版 (Long term support, LTS) の Linux カーネルとモジュール。 |
||
− | |||
− | ;{{Pkg|linux-zen}} |
||
− | :[https://github.com/zen-kernel/zen-kernel ZEN Kernel] はカーネルハッカーたちの知恵の結晶です。日常的な利用にうってつけの最高の Linux カーネルになります。詳しい情報は https://liquorix.net を見てください (Debian 向けの ZEN ベースのカーネルバイナリ)。 |
||
== コンパイル == |
== コンパイル == |
||
41行目: | 35行目: | ||
次の方法を使って、独自のカーネルをコンパイルできます。 |
次の方法を使って、独自のカーネルをコンパイルできます。 |
||
− | ; [[カーネ |
+ | ; [[カーネル/Arch build system|Arch Build System]]: 既存の {{Pkg|linux}} [[PKGBUILD]] の高い品質と[[Wikipedia:Package management system|パッケージ管理]]の利点を生かします。 |
− | ; [[カーネル/コンパイル |
+ | ; [[カーネル/伝統的なコンパイル方法|伝統的な方法]]: 手動でソースの tarball をダウンロードし、ホームディレクトリで通常のユーザーとしてコンパイルする必要があります。 |
{{Warning| |
{{Warning| |
||
− | * カスタムカーネルを使用すると、データの損失など、あらゆる種類の安定性と信頼性の問題が発生する可能性があります。[[バックアップ]] |
+ | * カスタムカーネルを使用すると、データの損失など、あらゆる種類の安定性と信頼性の問題が発生する可能性があります。[[バックアップ]]をとることを強くお勧めします。 |
* Arch Linux は [[#公式サポートカーネル]]のみを公式にサポートしています。別のカーネルを使用する場合は、サポートリクエストにその旨を記載してください。}} |
* Arch Linux は [[#公式サポートカーネル]]のみを公式にサポートしています。別のカーネルを使用する場合は、サポートリクエストにその旨を記載してください。}} |
||
{{Tip| |
{{Tip| |
||
+ | * システムの速度を上げる最良の方法は、まず、カーネルの設定をアーキテクチャやプロセッサの種類に合わせることです。 |
||
− | * Best way to increase the speed of your system is to first tailor your kernel config to your architecture and processor type. |
||
+ | * 自分が持っていないもの、使っていないもののサポートを含まないようにすることで、カーネルのサイズ (つまりビルド時間) を小さくすることができます。例えば、Bluetooth、video4linux、1000Mbit イーサネットなどのサポートです。 |
||
− | * You can reduce the size of your kernel (and therefore build time) by not including support for things you do not have or use. For example support for things like bluetooth, video4linux, 1000Mbit ethernet, etc. |
||
− | Arch のカーネルパッケージ |
+ | Arch のカーネルパッケージ設定ファイルは Arch のパッケージのソースファイルに含まれています。例えば {{Pkg|linux}} の場合 [https://gitlab.archlinux.org/archlinux/packaging/packages/linux] にリンクがあります。今現在動かしているカーネルのコンフィグファイルはファイルシステムの {{ic|/proc/config.gz}} に存在します (カーネルオプションの {{ic|CONFIG_IKCONFIG_PROC}} が有効になっている場合。)}} |
リストにあるパッケージの中には、[[非公式ユーザーリポジトリ]]からバイナリパッケージを入手できるものもあります。 |
リストにあるパッケージの中には、[[非公式ユーザーリポジトリ]]からバイナリパッケージを入手できるものもあります。 |
||
− | ===kernel.org カーネル=== |
+ | === kernel.org カーネル === |
− | ;{{AUR|linux-git}} |
||
− | :[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git Linus Torvalds の git リポジトリ] から得たソースを使ってビルドする Linux カーネルとモジュール。 |
||
+ | * {{App|Git|Linus Torvalds の git リポジトリから得たソースを使ってビルドする Linux カーネルとモジュール。|https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git|{{AUR|linux-git}}}} |
||
− | ;{{AUR|linux-mainline}} |
||
+ | * {{App|Mainline|すべての新機能が導入されるカーネル、2〜3ヶ月ごとにリリースされます。|https://www.kernel.org/|{{AUR|linux-mainline}}}} |
||
− | :メインラインの Linux カーネルとモジュール。 |
||
+ | *{{App|Next|次の Mainline リリースにマージされる予定の機能を持つ最先端のカーネル。|https://www.kernel.org/doc/man-pages/linux-next.html|{{AUR|linux-next-git}}}} |
||
+ | * {{App|DRM|最先端の GPU ドライバ付き Linux カーネル。|https://cgit.freedesktop.org/drm/|{{AUR|linux-drm-tip-git}}, {{AUR|linux-drm-next-git}}}} |
||
+ | * {{App|Longterm 4.19|長期サポート (LTS) Linux 4.19 カーネルとモジュール。|https://www.kernel.org/|{{AUR|linux-lts419}}}} |
||
+ | * {{App|Longterm 5.4|長期サポート (LTS) Linux 5.4 カーネルとモジュール。|https://www.kernel.org/|{{AUR|linux-lts54}}}} |
||
+ | * {{App|Longterm 5.10|長期サポート (LTS) Linux 5.10 カーネルとモジュール。|https://www.kernel.org/|{{AUR|linux-lts510}}}} |
||
+ | * {{App|Longterm 5.15|長期サポート (LTS) Linux 5.15 カーネルとモジュール。|https://www.kernel.org/|{{AUR|linux-lts515}}}} |
||
+ | * {{App|Longterm 6.1|長期サポート (LTS) Linux 6.1 カーネルとモジュール。|https://www.kernel.org/|{{AUR|linux-lts61}}}} |
||
+ | === 非公式カーネル === |
||
− | ;{{AUR|linux-next-git}} |
||
− | :Next —次のメインラインリリースにマージされる予定の機能を備えた最先端のカーネル。 |
||
+ | * {{App|[[Linux-ck|Ck]]|デスクトップに特に重点を置いてシステムの応答性を向上させるように設計された Con Kolivas (MuQSS scheduler を含む) によるパッチが含まれていますが、どのような使用目的でも問題なく使えます。|http://ck.kolivas.org/|{{AUR|linux-ck}}}} |
||
− | ;{{AUR|linux-lts44}} |
||
+ | * {{App|Clear|Intel の Clear Linux プロジェクトからのパッチ、パフォーマンスとセキュリティの最適化を提供します。|https://github.com/clearlinux-pkgs/linux|{{AUR|linux-clear}}}} |
||
− | :Longterm 4.4 長期サポート版カーネルとモジュール。 |
||
+ | * {{App|[[Wikipedia:Linux-libre|Libre]]|[[Wikipedia:ja:難読化 (ソフトウェア)|難読化された]]デバイスドライバや[[Wikipedia:ja:バイナリ・ブロブ|プロプライエタリ]]のデバイスドライバーを使用しません。|https://www.fsfla.org/ikiwiki/selibre/linux-libre/|{{AUR|linux-libre}}}} |
||
+ | * {{App|Liquorix|Debian をターゲットとした設定と Zen カーネルソースを使用して構築されたカーネル代替品。デスクトップ、マルチメディア、ゲームなどのワークロード向けに設計されており、Debian Linux の性能代替カーネルとしてよく利用されます。Liquorix パッチセットのメンテナである Damentz は、同様に Zen パッチセットの開発者でもあります。|https://liquorix.net|{{AUR|linux-lqx}}}} |
||
+ | * {{App|pf-kernel|カーネルメインラインにマージされない、ほんの少しの素晴らしい機能を提供します。カーネルエンジニアによって管理されています。新しいカーネルのための含まれるパッチのポートが公式にリリースされていない場合、パッチセットは新しいカーネルへのパッチポートを提供し、サポートします。linux-pf の現在の最も代表的なパッチは、UKSM、DDCCI、v4l2loopback、そして BBRv3 です。|https://pfkernel.natalenko.name|パッケージ:}} |
||
+ | :* [[非公式ユーザーリポジトリ#post-factum kernels|リポジトリ]]: pf-kernel の開発者 [https://aur.archlinux.org/account/post-factum post-factum] による {{AUR|linux-pf}} |
||
+ | * {{App|Project C|Alfred Chen 氏の Project C パッチセット (BMQ スケジューラと PDS スケジューラ) を当てたカーネル。|https://gitlab.com/alfredchen/projectc|{{AUR|linux-prjc}}}} |
||
+ | * {{App|Nitrous|Skylake 及びそれ以降に対して最適化された修正版 Linux カーネル。|https://gitlab.com/xdevs23/linux-nitrous|{{AUR|linux-nitrous}}}} |
||
+ | * {{App|tkg|デスクトップやゲームのパフォーマンスを向上させるためのパッチや調整を提供する、高度にカスタマイズ可能なカーネルビルドシステム。Etienne Juvigny によってメンテナンスされています。他のパッチの中で、様々な CPU スケージューラを提供しています: CFS、Project C PDS、Project C BMQ、MuQSS、CacULE。|https://github.com/Frogging-Family/linux-tkg|[[非公式ユーザーリポジトリ#chaotic-aur|chaotic-aur]] リポジトリで利用可能}} |
||
+ | * {{App|VFIO|Alex Williamson によって作成されたいくつかのパッチ(acs オーバーライドおよび i915)により、一部のマシンで KVM を使用して PCI パススルーを実行できるようになります。|https://lwn.net/Articles/499240/|{{AUR|linux-vfio}}, {{AUR|linux-vfio-lts}}}} |
||
+ | * {{App|XanMod|高性能ワークステーション、ゲーミングデスクトップ、メディアセンターなどで最大限に活用されることを目指し、より強固で応答性の高い、スムーズなデスクトップ体験を提供するために構築されています。このカーネルでは、BFQ I/O スケジューラ、[https://github.com/google/bbr/tree/v3 TCP BBRv3] 輻輳制御、x86_64 高度命令セットのサポート、部分的な Clear Linux パッチセットが使用されており、また一部のデフォルトも変更されています。|https://xanmod.org/|{{AUR|linux-xanmod}}, {{AUR|linux-xanmod-lts}}, {{AUR|linux-xanmod-rt}}, {{AUR|linux-xanmod-bore}}}} |
||
+ | * {{App|linux-cachyos|Linux SCHED-EXT + BORE + CachyOS の Cachy Sauce Kernel に加え、その他のパッチや改善されたカーネルモジュールが含まれています。|https://github.com/CachyOS/linux-cachyos|{{AUR|linux-cachyos}}}} |
||
+ | == トラブルシューティング == |
||
− | ;{{AUR|linux-lts49}} |
||
− | :Longterm 4.9 長期サポート版カーネルとモジュール。 |
||
+ | === カーネルパニック === |
||
− | ;{{AUR|linux-lts414}} |
||
− | :Longterm 4.14 長期サポート版カーネルとモジュール。 |
||
+ | Linux カーネルが回復不能な障害状態になると、''カーネルパニック''が発生します。この状態は通常、バグのあるハードウェアドライバーが原因で、マシンがデッドロックされ、応答しなくなり、再起動が必要になります。デッドロックの直前に、診断メッセージが生成されます。これは、障害が発生したときの''マシンの状態''、障害を検出したカーネルの関数までの ''呼び出しトレース''、および現在ロードされているモジュールのリストです。ありがたいことに、カーネルのメインラインバージョン (公式リポジトリで提供されているものなど) を使用してカーネルパニックが発生することはあまりありませんが、発生した場合に備えて対処方法を知る必要があります。 |
||
− | ;{{AUR|linux-lts419}} |
||
− | :Longterm 4.19 長期サポート版カーネルとモジュール。 |
||
+ | {{Note|カーネルパニックは、''oops'' または''カーネル oops'' と呼ばれることもあります。パニックと oops は両方とも障害状態の結果として発生するものですが、oops はより一般的なものであり、必ずしもマシンがデッドロックするわけではありません。問題のあるタスクを強制終了して実行を継続することで、カーネルが oops から回復できる場合があります。}} |
||
− | ;{{AUR|linux-lts54}} |
||
− | :Longterm 5.4 長期サポート版カーネルとモジュール。 |
||
+ | {{Tip|回復可能な oops で代わりにパニックを発生させることを強制するには、カーネルパラメータ {{ic|1=oops=panic}} を起動時に渡すか、{{ic|/proc/sys/kernel/panic_on_oops}} に {{ic|1}} を書き込んでください。oops リカバリによってシステムが不安定になり将来のエラーの診断が困難になることを懸念しているのであれば、これは推奨される方法です。}} |
||
− | ===非公式カーネル=== |
||
− | ;{{AUR|linux-aufs}} |
||
− | :aufs 対応の linux カーネルとモジュール。[[Docker]] を使用する際に有用。 |
||
+ | ==== パニックメッセージの検証 ==== |
||
− | ;{{AUR|linux-ck}} |
||
− | :Con Kolivas の ck1 パッチセットを適用した Linux カーネル。 |
||
− | :[[PKGBUILD]] 内で次の追加オプションを切り替えることができます: BFQ スケジューラ, nconfig, localmodconfig, 動作中のカーネル設定の利用。 |
||
− | :これらのパッチはシステムのレスポンスを改善するように作られており、特にデスクトップに向きますが、どのような使用目的でも問題なく使えます。ck パッチには BFS が含まれています。 |
||
− | :詳しい情報とインストールの方法については [[linux-ck]] を読んで下さい。 |
||
+ | カーネルパニックがブートプロセスの非常に早い段階で発生する場合、コンソール上に "Kernel panic - not syncing:" というメッセージが表示されることがありますが、[[Systemd]] が実行し始めると、通常カーネルメッセージはキャプチャされシステムのログに書き込まれます。しかし、パニックが発生した際には、カーネルによる診断メッセージ出力は''ほとんどの場合''ディスク上のログファイルに書き込まれません。{{ic|system-journald}} がメッセージを取得・記録する前にマシンがデッドロックしてしまうからです。なので、パニックメッセージを検証する唯一の手段は、(''kdump crashkernel'' を設定することなく)パニックの発生時にメッセージをコンソール上で見ることです。以下のカーネルパラメータを渡して起動し、tty1 でパニックの再現を試みてください: |
||
− | ;{{AUR|linux-clear}} |
||
− | :IntelのClear Linuxプロジェクトからのパッチ。パフォーマンスとセキュリティの最適化を提供します。: https://github.com/clearlinux-pkgs/linux |
||
+ | systemd.journald.forward_to_console=1 console=tty1 |
||
− | ;{{AUR|linux-libre}} |
||
− | :"バイナリブロブ"が取り除かれた Linux カーネル。 |
||
+ | {{Tip|パニックメッセージが速くスクロールしすぎて検証できない場合、起動時にカーネルパラメータ {{ic|1=pause_on_oops=''秒数''}} を渡してみてください。}} |
||
− | ;{{AUR|linux-lqx}} |
||
− | :[http://liquorix.net Liquorix] はデスクトップ・マルチメディア・ゲーム用途に Debian 用の設定と ZEN カーネルソースを使ってビルドされたディストロカーネル代替です。Debian Linux ではパフォーマンス向上カーネルとしてよく使われています。Liquorix パッチセットのメンテナである Damentz は ZEN パッチセットの開発者でもあります。 |
||
+ | ===== 例: 不良モジュール ===== |
||
− | ;{{AUR|linux-mptcp}} |
||
− | :[http://multipath-tcp.org/ Multipath TCP] に対応する Linux カーネルとモジュール。 |
||
+ | 診断メッセージの情報を使って、何のサブシステムやモジュールがパニックを引き起こしているかを推測できます。この例では、とある架空のマシンで起動中にパニックが発生してしまいました。'''太字'''で強調した行に注目してください。 |
||
− | ;{{AUR|linux-pf}} |
||
− | :pf-kernel パッチ [-ck パッチセット (BFS 含む), TuxOnIce, BFQ] と aufs3 が含まれた Linux カーネルとモジュール。 |
||
+ | {{bc|'''kernel: BUG: unable to handle kernel NULL pointer dereference at (null)''' <sup>1</sup> |
||
− | ;{{AUR|linux-rt}} |
||
+ | '''kernel: IP: fw_core_init+0x18/0x1000 [firewire_core]''' <sup>2</sup> |
||
− | :リアルタイムパッチセットがあてられた Linux カーネル。遅延を減らしてハードリアルタイムが可能になります: https://rt.wiki.kernel.org/ |
||
+ | kernel: PGD 718d00067 |
||
+ | kernel: P4D 718d00067 |
||
+ | kernel: PUD 7b3611067 |
||
+ | kernel: PMD 0 |
||
+ | kernel: |
||
+ | kernel: Oops: 0002 [#1] PREEMPT SMP |
||
+ | '''kernel: Modules linked in: firewire_core(+) crc_itu_t cfg80211 rfkill ipt_REJECT nf_reject_ipv4 nf_log_ipv4 nf_log_common xt_LOG nf_conntrack_ipv4 ...''' <sup>3</sup> |
||
+ | kernel: CPU: 6 PID: 1438 Comm: modprobe Tainted: P O 4.13.3-1-ARCH #1 |
||
+ | kernel: Hardware name: Gigabyte Technology Co., Ltd. H97-D3H/H97-D3H-CF, BIOS F5 06/26/2014 |
||
+ | kernel: task: ffff9c667abd9e00 task.stack: ffffb53b8db34000 |
||
+ | kernel: RIP: 0010:fw_core_init+0x18/0x1000 [firewire_core] |
||
+ | kernel: RSP: 0018:ffffb53b8db37c68 EFLAGS: 00010246 |
||
+ | kernel: RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000 |
||
+ | kernel: RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffffffffc16d3af4 |
||
+ | kernel: RBP: ffffb53b8db37c70 R08: 0000000000000000 R09: ffffffffae113e95 |
||
+ | kernel: R10: ffffe93edfdb9680 R11: 0000000000000000 R12: ffffffffc16d9000 |
||
+ | kernel: R13: ffff9c6729bf8f60 R14: ffffffffc16d5710 R15: ffff9c6736e55840 |
||
+ | kernel: FS: 00007f301fc80b80(0000) GS:ffff9c675dd80000(0000) knlGS:0000000000000000 |
||
+ | kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 |
||
+ | kernel: CR2: 0000000000000000 CR3: 00000007c6456000 CR4: 00000000001406e0 |
||
+ | kernel: Call Trace: |
||
+ | '''kernel: do_one_initcall+0x50/0x190''' <sup>4</sup> |
||
+ | kernel: ? do_init_module+0x27/0x1f2 |
||
+ | kernel: do_init_module+0x5f/0x1f2 |
||
+ | kernel: load_module+0x23f3/0x2be0 |
||
+ | kernel: SYSC_init_module+0x16b/0x1a0 |
||
+ | kernel: ? SYSC_init_module+0x16b/0x1a0 |
||
+ | kernel: SyS_init_module+0xe/0x10 |
||
+ | kernel: entry_SYSCALL_64_fastpath+0x1a/0xa5 |
||
+ | kernel: RIP: 0033:0x7f301f3a2a0a |
||
+ | kernel: RSP: 002b:00007ffcabbd1998 EFLAGS: 00000246 ORIG_RAX: 00000000000000af |
||
+ | kernel: RAX: ffffffffffffffda RBX: 0000000000c85a48 RCX: 00007f301f3a2a0a |
||
+ | kernel: RDX: 000000000041aada RSI: 000000000001a738 RDI: 00007f301e7eb010 |
||
+ | kernel: RBP: 0000000000c8a520 R08: 0000000000000001 R09: 0000000000000085 |
||
+ | kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000c79208 |
||
+ | kernel: R13: 0000000000c8b4d8 R14: 00007f301e7fffff R15: 0000000000000030 |
||
+ | kernel: Code: <c7> 04 25 00 00 00 00 01 00 00 00 bb f4 ff ff ff e8 73 43 9c ec 48 |
||
+ | kernel: RIP: fw_core_init+0x18/0x1000 [firewire_core] RSP: ffffb53b8db37c68 |
||
+ | kernel: CR2: 0000000000000000 |
||
+ | kernel: ---[ end trace 71f4306ea1238f17 ]--- |
||
+ | '''kernel: Kernel panic - not syncing: Fatal exception''' <sup>5</sup> |
||
+ | kernel: Kernel Offset: 0x80000000 from 0xffffffff810000000 (relocation range: 0xffffffff800000000-0xfffffffffbffffffff |
||
+ | kernel: ---[ end Kernel panic - not syncing: Fatal exception}} |
||
+ | # パニックを引き起こしたエラーの種類を示しています。この場合、プログラマのバグです。 |
||
− | ;{{AUR|linux-vfio}} / {{AUR|linux-vfio-lts}} |
||
+ | # モジュール ''firewire_core'' 内の ''fw_core_init'' という関数でパニックが発生したことを示しています。 |
||
− | :Alex Williamson によって書かれた KVM で PCI パススルーを出来るようにするパッチが適用された Linux カーネル (acs override と i915)。 |
||
+ | # ''firewire_core'' は最後にロードされたモジュールであることを示しています。 |
||
+ | # ''fw_core_init'' 関数を呼んだ関数は ''do_one_initcall'' であったことを示しています。 |
||
+ | # この ''oops'' メッセージが実際にカーネルパニックであり、システムがデッドロックしていることを示しています。 |
||
+ | 以上のメッセージにより、''firewire_core'' モジュールがロードされたときの初期ルーチン中にパニックが発生したということを推測できます。(マシンのファームウェアハードウェアは、プログラマのエラーによりこのバージョンのファームウェアドライバモジュールと互換性が無いかもしれないことが推測でき、新しいリリースを待つ必要があることになります。) その間、マシンを再び走らせる最も簡単な方法は、モジュールがロードされないようにすることです。以下の方法のうち1つを取ってください: |
||
− | ;{{AUR|linux-xanmod}} / {{AUR|linux-xanmod-lts}} |
||
− | :高性能ワークステーション、ゲームデスクトップ、メディアセンターなど、性能を最大限活用し、強固で応答性が高く、スムーズなデスクトップエクスペリエンスを提供するように構築されています。このカーネルは、BFS スケジューラ、BFQ I/O スケジューラ、UKSM リアルタイムメモリデータの重複排除、YeAH TCP 輻輳制御、x86_64 高度な命令セットサポート、およびその他のデフォルトの変更を使用します。: https://xanmod.org/ |
||
+ | * モジュールが ''initramfs'' の実行中にロードされる場合、[[カーネルパラメータ]] {{ic|1=rd.blacklist=firewire_core}} を設定して再起動してください。 |
||
− | == Debugging regressions == |
||
+ | * それ以外の場合、カーネルパラメータ {{ic|1=module_blacklist=firewire_core}} を設定して再起動してください。 |
||
+ | ==== 再起動して root シェルに入り問題を修正する ==== |
||
− | See [[General troubleshooting#Debugging regressions]]. |
||
+ | {{Out of date|[https://gitlab.archlinux.org/archlinux/packaging/packages/systemd/-/commit/292cdf8a2f7dd7c6c7d91d2b59617391935c837c initramfs の root アカウントはロックされているため]、{{ic|rd.rescue}} と {{ic|rd.emergency}} は動作しません。}} |
||
− | Try {{AUR|linux-mainline}} to check if the issue is already fixed upstream. The stickied comment also mentions a repository which contains already built kernels, so it may not be necessary to build it manually, which can take some time. |
||
+ | {{Accuracy|{{ic|rd.emergency}} ではキーボードは動作しないため、使用できません。}} |
||
− | It may also be worth considering trying the LTS kernel ({{Pkg|linux-lts}}) to debug issues which did not appear recently. Older versions of the LTS kernel can be found in the [[Arch Linux Archive]]. |
||
+ | システムに変更を加えてパニックが起こらないようにするには、root シェルが必要です。パニックが起動時に発生する場合、マシンがデッドロックする前に root シェルに入るための戦略が複数あります: |
||
− | If the issue still persists, [[bisect]] {{AUR|linux-git}} and report the bug on the [https://bugzilla.kernel.org/ kernel bugzilla]. It is important to try the "vanilla" version without any patches to make sure it is not related to them. If a patch causes the issue, report it to the author of the patch. |
||
+ | * カーネルパラメータ {{ic|emergency}} か {{ic|rd.emergency}} か {{ic|-b}} を設定して再起動する。これで、root ファイルシステムがマウントされて {{ic|systemd}} が起動した直後にログインプロンプトが表示されます。 |
||
− | {{Note|Bisecting the kernel can take a lot of time since it may need to be rebuilt many times.}} |
||
+ | : {{Note|この時点では、root ファイルシステムは'''読み取り専用'''でマウントされます。ファイルシステムに変更を加えるには、{{ic|mount -o remount,rw /}} を root ユーザとして実行してください。}} |
||
+ | * カーネルパラメータ {{ic|rescue}}、{{ic|rd.rescue}}、{{ic|single}}、{{ic|s}}、{{ic|S}}、{{ic|1}} のどれか設定して再起動する。これで、ローカルのファイルシステムがマウントされた直後にログインプロンプトが表示されます。 |
||
+ | * カーネルパラメータ {{ic|1=systemd.debug_shell}} を設定して再起動する。これで、非常に初期の root シェルが tty9 で表示されます。{{ic|Ctrl+Alt+F9}} を押してそのシェルに切り替えてください。 |
||
+ | * パニックを引き起こしているカーネルの機能を無効化するために、異なるカーネルパラメータの組で再起動して実験する。"定番" の {{ic|1=acpi=off}} と {{ic|nolapic}} を試してみてください。 |
||
+ | : {{Tip|すべてのカーネルパラメータは [https://docs.kernel.org/admin-guide/kernel-parameters.html kernel-parameters.html] を参照して下さい。}} |
||
+ | * 最後の手段として、[[インストールガイド#インストールメディアの準備|Arch Linux インストールメディア]]を起動し、ルートファイルシステムを {{ic|/mnt}} にマウントし、{{ic|arch-chroot /mnt}} を root ユーザとして実行する。 |
||
+ | * パニックを引き起こしているサービスやプログラムを無効化する。不具合のあるアップデートをロールバックする。設定の問題を修正する。 |
||
+ | |||
+ | {{Tip|[[Wikipedia:Initial ramdisk|初期 RAM ディスク]]イメージが破損している場合、新しいイメージを生成する必要があるかもしれません。イメージの破損は、カーネルアップデートが中断された場合に起こる可能性があります。新しいイメージを作成する方法は、[[mkinitcpio#イメージ作成とアクティベーション]] を参照してください。}} |
||
+ | |||
+ | === リグレッションをデバッグする === |
||
+ | |||
+ | [[一般的なトラブルシューティング#リグレッションをデバッグする]] を参照してください。 |
||
+ | |||
+ | {{AUR|linux-mainline}} を試して、その問題が既に上流で修正されているかどうかを確認してください。ピン留めされたコメントは既にビルドされたカーネルを含むリポジトリにも言及しているので、時間がかかる手動でのビルドは必要ないかもしれません。 |
||
+ | |||
+ | 最近発生しなかった問題をデバッグするために LTS カーネル ({{Pkg|linux-lts}}) を試してみることも検討する価値があるかもしれません。LTS カーネルの古いバージョンは [[Arch Linux Archive]] で見つけることができます。 |
||
+ | |||
+ | それでも問題が解決しないときは、{{AUR|linux-git}} を [[bisect]] してください。そして、[https://bugzilla.kernel.org/ kernel bugzilla] でバグを報告してください。パッチと関係ないことを確認するために、パッチなしの "バニラ"バージョンを試すことが重要です。もしパッチが問題を引き起こすなら、そのパッチの作者に報告してください。 |
||
+ | |||
+ | {{Note|カーネルの bisect は何度も作り直さなければならないので、かなりの時間がかかるかもしれません。}} |
||
+ | |||
+ | ==== より小さなカーネルを構築する ==== |
||
+ | |||
+ | [[modprobed-db]] か {{ic|make localmodconfig}} を使って、ローカルシステムに必要なモジュールだけをビルドしたり、によってカーネルビルド時間を短縮したりできます。もちろん、ネットワークの問題をデバッグするために、サウンドドライバなど、無関係なドライバを完全に削除することも可能です。 |
||
== 参照 == |
== 参照 == |
||
+ | |||
− | *[http://www.kroah.com/lkn/ O'Reilly - Linux Kernel in a Nutshell] (フリーの電子書籍) |
||
+ | * [http://www.kroah.com/lkn/ O'Reilly - Linux Kernel in a Nutshell] (フリーの電子書籍) |
||
* [http://kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/ What stable kernel should I use?] by Greg Kroah-Hartman |
* [http://kroah.com/log/blog/2018/08/24/what-stable-kernel-should-i-use/ What stable kernel should I use?] by Greg Kroah-Hartman |
||
− | * [https:// |
+ | * [https://docs.kernel.org/index.html Linux カーネルのドキュメント] |
+ | |||
+ | {{TranslationStatus|Kernel|2024-10-10|818024}} |
2024年10月15日 (火) 17:42時点における最新版
Wikipedia によると:
- Linux カーネルとは、モノリシックで Unix ライクなオープンソースのコンピュータオペレーティングシステムカーネルである。
Arch Linux は Linux カーネルをベースにしています。Arch Linux では最新の安定版カーネルに加え、様々な代替 Linux カーネルを利用することができます。この記事では、リポジトリで利用可能な選択肢のいくつかを、それぞれの簡単な説明とともにリストアップしています。また、システムのカーネルに適用できるパッチについての説明もあります。記事の最後には、カスタムカーネルのコンパイルについての概要と、様々な方法へのリンクがあります。
カーネルのパッケージは /usr/lib/modules/
にインストールされます。その後、パッケージは vmlinuz 実行可能イメージを生成するために使用され、生成されたイメージは /boot/
へ保存されます。[1] 異なるカーネルをインストールしたり、複数のカーネルを切り替えたりする場合は、変更を反映させるためにブートローダーを設定しなければなりません。
目次
公式サポートカーネル
公式にサポートされているカーネルについては、フォーラムでのコミュニティサポートとバグレポートを利用できます。
- Stable — いくつかのパッチを適用したバニラな Linux カーネル。
- Hardened — カーネルおよびユーザ空間の脆弱性を緩和するための一連の堅牢化パッチを適用した、セキュリティ特化の Linux カーネルです。また、linux よりも多くの上流のカーネル堅牢化機能を有効にします。
- Longterm — サーバーでの使用を対象にしたコンフィグオプションが含まれている、長期サポート (LTS) Linux カーネルおよびモジュール。
- リアルタイムカーネル — IngoMolnar が率いるコア開発者の小グループによって維持されています。このパッチを使用すると、コードのいくつかの非常に小さな領域("raw_spinlock クリティカル領域")を除いて、ほぼすべてのカーネルをプリエンプトできます。これは、ほとんどのカーネルスピンロックを優先度継承をサポートするミューテックスに置き換え、すべての割り込みとソフトウェア割り込みをカーネルスレッドに移動することによって行われます。
- Zen Kernel — カーネルハッカーの共同作業により、日常的なシステムに最適な Linux カーネルです。より詳細な情報は FAQ と Detailed Feature List を参照してください。
コンパイル
次の方法を使って、独自のカーネルをコンパイルできます。
- Arch Build System
- 既存の linux PKGBUILD の高い品質とパッケージ管理の利点を生かします。
- 伝統的な方法
- 手動でソースの tarball をダウンロードし、ホームディレクトリで通常のユーザーとしてコンパイルする必要があります。
リストにあるパッケージの中には、非公式ユーザーリポジトリからバイナリパッケージを入手できるものもあります。
kernel.org カーネル
- Git — Linus Torvalds の git リポジトリから得たソースを使ってビルドする Linux カーネルとモジュール。
- Mainline — すべての新機能が導入されるカーネル、2〜3ヶ月ごとにリリースされます。
- Next — 次の Mainline リリースにマージされる予定の機能を持つ最先端のカーネル。
- DRM — 最先端の GPU ドライバ付き Linux カーネル。
- Longterm 4.19 — 長期サポート (LTS) Linux 4.19 カーネルとモジュール。
- Longterm 5.4 — 長期サポート (LTS) Linux 5.4 カーネルとモジュール。
- Longterm 5.10 — 長期サポート (LTS) Linux 5.10 カーネルとモジュール。
- Longterm 5.15 — 長期サポート (LTS) Linux 5.15 カーネルとモジュール。
- Longterm 6.1 — 長期サポート (LTS) Linux 6.1 カーネルとモジュール。
非公式カーネル
- Ck — デスクトップに特に重点を置いてシステムの応答性を向上させるように設計された Con Kolivas (MuQSS scheduler を含む) によるパッチが含まれていますが、どのような使用目的でも問題なく使えます。
- Clear — Intel の Clear Linux プロジェクトからのパッチ、パフォーマンスとセキュリティの最適化を提供します。
- Liquorix — Debian をターゲットとした設定と Zen カーネルソースを使用して構築されたカーネル代替品。デスクトップ、マルチメディア、ゲームなどのワークロード向けに設計されており、Debian Linux の性能代替カーネルとしてよく利用されます。Liquorix パッチセットのメンテナである Damentz は、同様に Zen パッチセットの開発者でもあります。
- pf-kernel — カーネルメインラインにマージされない、ほんの少しの素晴らしい機能を提供します。カーネルエンジニアによって管理されています。新しいカーネルのための含まれるパッチのポートが公式にリリースされていない場合、パッチセットは新しいカーネルへのパッチポートを提供し、サポートします。linux-pf の現在の最も代表的なパッチは、UKSM、DDCCI、v4l2loopback、そして BBRv3 です。
- https://pfkernel.natalenko.name || パッケージ:
- リポジトリ: pf-kernel の開発者 post-factum による linux-pfAUR
- Project C — Alfred Chen 氏の Project C パッチセット (BMQ スケジューラと PDS スケジューラ) を当てたカーネル。
- Nitrous — Skylake 及びそれ以降に対して最適化された修正版 Linux カーネル。
- tkg — デスクトップやゲームのパフォーマンスを向上させるためのパッチや調整を提供する、高度にカスタマイズ可能なカーネルビルドシステム。Etienne Juvigny によってメンテナンスされています。他のパッチの中で、様々な CPU スケージューラを提供しています: CFS、Project C PDS、Project C BMQ、MuQSS、CacULE。
- https://github.com/Frogging-Family/linux-tkg || chaotic-aur リポジトリで利用可能
- VFIO — Alex Williamson によって作成されたいくつかのパッチ(acs オーバーライドおよび i915)により、一部のマシンで KVM を使用して PCI パススルーを実行できるようになります。
- XanMod — 高性能ワークステーション、ゲーミングデスクトップ、メディアセンターなどで最大限に活用されることを目指し、より強固で応答性の高い、スムーズなデスクトップ体験を提供するために構築されています。このカーネルでは、BFQ I/O スケジューラ、TCP BBRv3 輻輳制御、x86_64 高度命令セットのサポート、部分的な Clear Linux パッチセットが使用されており、また一部のデフォルトも変更されています。
- https://xanmod.org/ || linux-xanmodAUR, linux-xanmod-ltsAUR, linux-xanmod-rtAUR, linux-xanmod-boreAUR
- linux-cachyos — Linux SCHED-EXT + BORE + CachyOS の Cachy Sauce Kernel に加え、その他のパッチや改善されたカーネルモジュールが含まれています。
トラブルシューティング
カーネルパニック
Linux カーネルが回復不能な障害状態になると、カーネルパニックが発生します。この状態は通常、バグのあるハードウェアドライバーが原因で、マシンがデッドロックされ、応答しなくなり、再起動が必要になります。デッドロックの直前に、診断メッセージが生成されます。これは、障害が発生したときのマシンの状態、障害を検出したカーネルの関数までの 呼び出しトレース、および現在ロードされているモジュールのリストです。ありがたいことに、カーネルのメインラインバージョン (公式リポジトリで提供されているものなど) を使用してカーネルパニックが発生することはあまりありませんが、発生した場合に備えて対処方法を知る必要があります。
パニックメッセージの検証
カーネルパニックがブートプロセスの非常に早い段階で発生する場合、コンソール上に "Kernel panic - not syncing:" というメッセージが表示されることがありますが、Systemd が実行し始めると、通常カーネルメッセージはキャプチャされシステムのログに書き込まれます。しかし、パニックが発生した際には、カーネルによる診断メッセージ出力はほとんどの場合ディスク上のログファイルに書き込まれません。system-journald
がメッセージを取得・記録する前にマシンがデッドロックしてしまうからです。なので、パニックメッセージを検証する唯一の手段は、(kdump crashkernel を設定することなく)パニックの発生時にメッセージをコンソール上で見ることです。以下のカーネルパラメータを渡して起動し、tty1 でパニックの再現を試みてください:
systemd.journald.forward_to_console=1 console=tty1
例: 不良モジュール
診断メッセージの情報を使って、何のサブシステムやモジュールがパニックを引き起こしているかを推測できます。この例では、とある架空のマシンで起動中にパニックが発生してしまいました。太字で強調した行に注目してください。
kernel: BUG: unable to handle kernel NULL pointer dereference at (null) 1 kernel: IP: fw_core_init+0x18/0x1000 [firewire_core] 2 kernel: PGD 718d00067 kernel: P4D 718d00067 kernel: PUD 7b3611067 kernel: PMD 0 kernel: kernel: Oops: 0002 [#1] PREEMPT SMP kernel: Modules linked in: firewire_core(+) crc_itu_t cfg80211 rfkill ipt_REJECT nf_reject_ipv4 nf_log_ipv4 nf_log_common xt_LOG nf_conntrack_ipv4 ... 3 kernel: CPU: 6 PID: 1438 Comm: modprobe Tainted: P O 4.13.3-1-ARCH #1 kernel: Hardware name: Gigabyte Technology Co., Ltd. H97-D3H/H97-D3H-CF, BIOS F5 06/26/2014 kernel: task: ffff9c667abd9e00 task.stack: ffffb53b8db34000 kernel: RIP: 0010:fw_core_init+0x18/0x1000 [firewire_core] kernel: RSP: 0018:ffffb53b8db37c68 EFLAGS: 00010246 kernel: RAX: 0000000000000000 RBX: 0000000000000000 RCX: 0000000000000000 kernel: RDX: 0000000000000000 RSI: 0000000000000008 RDI: ffffffffc16d3af4 kernel: RBP: ffffb53b8db37c70 R08: 0000000000000000 R09: ffffffffae113e95 kernel: R10: ffffe93edfdb9680 R11: 0000000000000000 R12: ffffffffc16d9000 kernel: R13: ffff9c6729bf8f60 R14: ffffffffc16d5710 R15: ffff9c6736e55840 kernel: FS: 00007f301fc80b80(0000) GS:ffff9c675dd80000(0000) knlGS:0000000000000000 kernel: CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 kernel: CR2: 0000000000000000 CR3: 00000007c6456000 CR4: 00000000001406e0 kernel: Call Trace: kernel: do_one_initcall+0x50/0x190 4 kernel: ? do_init_module+0x27/0x1f2 kernel: do_init_module+0x5f/0x1f2 kernel: load_module+0x23f3/0x2be0 kernel: SYSC_init_module+0x16b/0x1a0 kernel: ? SYSC_init_module+0x16b/0x1a0 kernel: SyS_init_module+0xe/0x10 kernel: entry_SYSCALL_64_fastpath+0x1a/0xa5 kernel: RIP: 0033:0x7f301f3a2a0a kernel: RSP: 002b:00007ffcabbd1998 EFLAGS: 00000246 ORIG_RAX: 00000000000000af kernel: RAX: ffffffffffffffda RBX: 0000000000c85a48 RCX: 00007f301f3a2a0a kernel: RDX: 000000000041aada RSI: 000000000001a738 RDI: 00007f301e7eb010 kernel: RBP: 0000000000c8a520 R08: 0000000000000001 R09: 0000000000000085 kernel: R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000c79208 kernel: R13: 0000000000c8b4d8 R14: 00007f301e7fffff R15: 0000000000000030 kernel: Code: <c7> 04 25 00 00 00 00 01 00 00 00 bb f4 ff ff ff e8 73 43 9c ec 48 kernel: RIP: fw_core_init+0x18/0x1000 [firewire_core] RSP: ffffb53b8db37c68 kernel: CR2: 0000000000000000 kernel: ---[ end trace 71f4306ea1238f17 ]--- kernel: Kernel panic - not syncing: Fatal exception 5 kernel: Kernel Offset: 0x80000000 from 0xffffffff810000000 (relocation range: 0xffffffff800000000-0xfffffffffbffffffff kernel: ---[ end Kernel panic - not syncing: Fatal exception
- パニックを引き起こしたエラーの種類を示しています。この場合、プログラマのバグです。
- モジュール firewire_core 内の fw_core_init という関数でパニックが発生したことを示しています。
- firewire_core は最後にロードされたモジュールであることを示しています。
- fw_core_init 関数を呼んだ関数は do_one_initcall であったことを示しています。
- この oops メッセージが実際にカーネルパニックであり、システムがデッドロックしていることを示しています。
以上のメッセージにより、firewire_core モジュールがロードされたときの初期ルーチン中にパニックが発生したということを推測できます。(マシンのファームウェアハードウェアは、プログラマのエラーによりこのバージョンのファームウェアドライバモジュールと互換性が無いかもしれないことが推測でき、新しいリリースを待つ必要があることになります。) その間、マシンを再び走らせる最も簡単な方法は、モジュールがロードされないようにすることです。以下の方法のうち1つを取ってください:
- モジュールが initramfs の実行中にロードされる場合、カーネルパラメータ
rd.blacklist=firewire_core
を設定して再起動してください。 - それ以外の場合、カーネルパラメータ
module_blacklist=firewire_core
を設定して再起動してください。
再起動して root シェルに入り問題を修正する
システムに変更を加えてパニックが起こらないようにするには、root シェルが必要です。パニックが起動時に発生する場合、マシンがデッドロックする前に root シェルに入るための戦略が複数あります:
- カーネルパラメータ
emergency
かrd.emergency
か-b
を設定して再起動する。これで、root ファイルシステムがマウントされてsystemd
が起動した直後にログインプロンプトが表示されます。
- カーネルパラメータ
rescue
、rd.rescue
、single
、s
、S
、1
のどれか設定して再起動する。これで、ローカルのファイルシステムがマウントされた直後にログインプロンプトが表示されます。 - カーネルパラメータ
systemd.debug_shell
を設定して再起動する。これで、非常に初期の root シェルが tty9 で表示されます。Ctrl+Alt+F9
を押してそのシェルに切り替えてください。 - パニックを引き起こしているカーネルの機能を無効化するために、異なるカーネルパラメータの組で再起動して実験する。"定番" の
acpi=off
とnolapic
を試してみてください。
- 最後の手段として、Arch Linux インストールメディアを起動し、ルートファイルシステムを
/mnt
にマウントし、arch-chroot /mnt
を root ユーザとして実行する。 - パニックを引き起こしているサービスやプログラムを無効化する。不具合のあるアップデートをロールバックする。設定の問題を修正する。
リグレッションをデバッグする
一般的なトラブルシューティング#リグレッションをデバッグする を参照してください。
linux-mainlineAUR を試して、その問題が既に上流で修正されているかどうかを確認してください。ピン留めされたコメントは既にビルドされたカーネルを含むリポジトリにも言及しているので、時間がかかる手動でのビルドは必要ないかもしれません。
最近発生しなかった問題をデバッグするために LTS カーネル (linux-lts) を試してみることも検討する価値があるかもしれません。LTS カーネルの古いバージョンは Arch Linux Archive で見つけることができます。
それでも問題が解決しないときは、linux-gitAUR を bisect してください。そして、kernel bugzilla でバグを報告してください。パッチと関係ないことを確認するために、パッチなしの "バニラ"バージョンを試すことが重要です。もしパッチが問題を引き起こすなら、そのパッチの作者に報告してください。
より小さなカーネルを構築する
modprobed-db か make localmodconfig
を使って、ローカルシステムに必要なモジュールだけをビルドしたり、によってカーネルビルド時間を短縮したりできます。もちろん、ネットワークの問題をデバッグするために、サウンドドライバなど、無関係なドライバを完全に削除することも可能です。
参照
- O'Reilly - Linux Kernel in a Nutshell (フリーの電子書籍)
- What stable kernel should I use? by Greg Kroah-Hartman
- Linux カーネルのドキュメント