「カーネル」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎kernel.org カーネル: 行列を揃える)
(5人の利用者による、間の26版が非表示)
1行目: 1行目:
 
[[Category:カーネル]]
 
[[Category:カーネル]]
  +
[[Category:ソフトウェア一覧]]
 
[[cs:Kernel Compilation]]
 
[[cs:Kernel Compilation]]
 
[[en:Kernels]]
 
[[en:Kernels]]
[[es:Kernel Compilation]]
+
[[es:Kernels]]
 
[[it:Kernels]]
 
[[it:Kernels]]
[[zh-CN:Kernels]]
+
[[ru:Kernels]]
  +
[[zh-hans:Kernels]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|カーネルモジュール}}
 
{{Related|カーネルモジュール}}
  +
{{Related|カーネルモジュールのコンパイル}}
 
{{Related|カーネルパニック}}
 
{{Related|カーネルパニック}}
 
{{Related|Linux-ck}}
 
{{Related|Linux-ck}}
15行目: 18行目:
 
:''カーネルは、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。''
 
:''カーネルは、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。''
   
メインラインの Linux カーネルに加えて、Arch Linux では様々なカーネルを使うことができます。リポジトリから利用できるカーネルの一部と、それぞれの簡単な説明をこのページでリストアップしています。また、システムのカーネルに適用することができるパッチの説明も記述します。記事の最後にはカスタムカーネルのコンパイルの概要とリンクが付してあります。
+
メインラインの [[Wikipedia:ja:Linuxカーネル|Linux カーネル]]に加えて、Arch Linux では様々なカーネルを使うことができます。リポジトリから利用できるカーネルの一部と、それぞれの簡単な説明をこのページでリストアップしています。また、システムのカーネルに適用することができるパッチの説明も記述します。記事の最後にはカスタムカーネルのコンパイルの概要とリンクが付してあります。
   
==事前コンイル済みカネル==
+
==公式ッケ==
===公式パッケージ===
 
 
;{{Pkg|linux}}
 
;{{Pkg|linux}}
:[core] リポジトリにある Linux カーネルとモジュール。バニラカーネル素のカーネルに[https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux 多少のパッチが適用されています]。
+
:[core] リポジトリにある Linux カーネルとモジュール。バニラカーネル(素のカーネル)に[https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux 多少のパッチが適用されています]。
  +
  +
;{{Pkg|linux-hardened}}
  +
:カーネルやユーザースペースに対する脆弱性攻撃から防護する [https://github.com/thestinger/linux-hardened ハードニングパッチセット] が適用されたセキュリティ指向 Linux カーネル。ユーザー名前空間 (非特権による使用はパッチで無効化済み) や audit、あるいは [[SELinux]] など標準の {{Pkg|linux}} には含まれていないカーネルの堅牢化機能も有効になっています。
   
 
;{{Pkg|linux-lts}}
 
;{{Pkg|linux-lts}}
 
:[core] リポジトリにある長期サポート版 (Long term support, LTS) の Linux カーネルとモジュール。
 
:[core] リポジトリにある長期サポート版 (Long term support, LTS) の Linux カーネルとモジュール。
   
;{{Pkg|linux-grsec}}
+
;{{Pkg|linux-zen}}
  +
:[https://github.com/zen-kernel/zen-kernel ZEN Kernel] はカーネルハッカーたちの知恵の結晶です。日常的な利用にうってつけの最高の Linux カーネルになります。詳しい情報は https://liquorix.net を見てください (Debian 向けの ZEN ベースのカーネルバイナリ)。
:セキュリティを高めるための [[Grsecurity|Grsecurity パッチセット]]と PaX パッチがあてられた Linux カーネルとモジュール。
 
   
===AUR パッケジ===
+
==kernel.org ネル==
;{{AUR|linux-aufs_friendly}}
+
;{{AUR|linux-git}}
  +
:[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git Linus Torvalds の git リポジトリ] から得たソースを使ってビルドする Linux カーネルとモジュール。
:aufs 対応の linux カーネルとモジュール。[[Docker|Docker]] を使用する際に有用。
 
 
;{{AUR|linux-bfs}}
 
:[[Wikipedia:ja:Brain Fuck Scheduler|Brain Fuck Scheduler]] (BFS) が含まれた Linux カーネルとモジュール - BFS は Con Kolivas によって作成された、4096コア以下のデスクトップコンピュータ向けのタスクスケジューラ。任意で使える BFQ I/O スケジューラも付属。
 
 
;{{AUR|linux-ck}}
 
:Con Kolivas の ck1 パッチセットを適用した Linux カーネル。
 
:[[PKGBUILD|PKGBUILD]] 内で次の追加オプションを切り替えることができます: BFQ スケジューラ, nconfig, localmodconfig, 動作中のカーネル設定の利用。
 
:これらのパッチはシステムのレスポンスを改善するように作られており、特にデスクトップに向きますが、どのような使用目的でも問題なく使えます。ck パッチには BFS が含まれています。
 
:詳しい情報とインストールの方法については [[linux-ck|linux-ck]] を読んで下さい。
 
 
;{{AUR|linux-eee-ck}}
 
:Asus Eee PC 701 向けの Linux カーネルとモジュール、Con Kolivas の ck1 パッチセットを使用。
 
 
;{{AUR|linux-fbcondecor}}
 
:[[Fbsplash|fbcondecor]] をサポートした Linux カーネルとモジュール。
 
   
 
;{{AUR|linux-mainline}}
 
;{{AUR|linux-mainline}}
 
:メインラインの Linux カーネルとモジュール。
 
:メインラインの Linux カーネルとモジュール。
   
;{{AUR|linux-pax}}
+
;{{AUR|linux-next-git}}
  +
:Next —次のメインラインリリースにマージされる予定の機能を備えた最先端のカーネル。
:セキュリティを高めるための PaX パッチがあてられた Linux カーネルとモジュール。
 
   
;{{AUR|linux-ice}}
+
;{{AUR|linux-lts316}}
:gentoo-sources パッチセットが適用され [[TuxOnIce]] をサポートした Linux カーネルとモジュール。
+
:Longterm 3.16 長期サポートカーネルとモジュール。
   
;{{AUR|linux-lqx}}
+
;{{AUR|linux-lts44}}
  +
:Longterm 4.4 長期サポート版カーネルとモジュール。
:[http://liquorix.net Liquorix] はデスクトップ・マルチメディア・ゲーム用途に Debian 用の設定と ZEN カーネルソースを使ってビルドされたディストロカーネル代替です。Debian Linux ではパフォーマンス向上カーネルとしてよく使われています。Liquorix パッチセットのメンテナである Damentz は ZEN パッチセットの開発者でもあります。
 
   
;{{AUR|linux-lts34}}
+
;{{AUR|linux-lts49}}
:Linux 3.4 長期サポート版カーネルとモジュール。
+
:Longterm 4.9 長期サポート版カーネルとモジュール。
   
;{{AUR|linux-lts310}}
+
;{{AUR|linux-lts414}}
:Linux 3.10 長期サポート版カーネルとモジュール。
+
:Longterm 4.14 長期サポート版カーネルとモジュール。
   
;{{AUR|linux-lts312}}
+
;{{AUR|linux-lts419}}
:Linux 3.12 長期サポート版カーネルとモジュール。
+
:Longterm 4.19 長期サポート版カーネルとモジュール。
   
  +
==AUR パッケージ==
;{{AUR|linux-pf}}
 
  +
;{{AUR|linux-aufs}}
:pf-kernel パッチ [-ck パッチセット (BFS 含む), TuxOnIce, BFQ] と aufs3 が含まれた Linux カーネルとモジュール。
 
  +
:aufs 対応の linux カーネルとモジュール。[[Docker]] を使用する際に有用。
   
;{{AUR|linux-zen}}
+
;{{AUR|linux-ck}}
  +
:Con Kolivas の ck1 パッチセットを適用した Linux カーネル。
:[https://github.com/zen-kernel/zen-kernel ZEN Kernel] は毎日の利用のために最高の Linux カーネルを提供するカーネルハッカーのコラボレーションによって生まれました。[https://bbs.archlinux.org/viewtopic.php?id=117157 このリポジトリ]で ZEN カーネルのビルドが得られます。
 
  +
:[[PKGBUILD]] 内で次の追加オプションを切り替えることができます: BFQ スケジューラ, nconfig, localmodconfig, 動作中のカーネル設定の利用。
  +
:これらのパッチはシステムのレスポンスを改善するように作られており、特にデスクトップに向きますが、どのような使用目的でも問題なく使えます。ck パッチには BFS が含まれています。
  +
:詳しい情報とインストールの方法については [[linux-ck]] を読んで下さい。
   
 
;{{AUR|linux-libre}}
 
;{{AUR|linux-libre}}
 
:"バイナリブロブ"が取り除かれた Linux カーネル。
 
:"バイナリブロブ"が取り除かれた Linux カーネル。
   
;{{AUR|kernel-netbook}}
+
;{{AUR|linux-lqx}}
  +
:[http://liquorix.net Liquorix] はデスクトップ・マルチメディア・ゲーム用途に Debian 用の設定と ZEN カーネルソースを使ってビルドされたディストロカーネル代替です。Debian Linux ではパフォーマンス向上カーネルとしてよく使われています。Liquorix パッチセットのメンテナである Damentz は ZEN パッチセットの開発者でもあります。
:Eee PC などの Intel Atom N270/N280/N450/N550 を使っているネットブックのための安定したカーネル。外部ハードウェア ({{AUR|broadcom-wl}}) やパッチセット (BFS + TuxOnIce + BFQ optional) が追加されています - Intel GPU においてのみ動作
 
   
;{{AUR|linux-tresor}}/{{AUR|linux-lts-tresor}}
+
;{{AUR|linux-mptcp}}
:[https://www1.informatik.uni-erlangen.de/tresor TRESOR] が統合された、最新の LTS Linux カーネルとモジュール。
+
:[http://multipath-tcp.org/ Multipath TCP] に対応する Linux カーネルとモジュール。
   
;{{AUR|linux-git}}
+
;{{AUR|linux-pf}}
:[https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git Linus Torvalds git リポジトリ] から得ソースを使ってビルドする Linux カーネルとモジュール。
+
:pf-kernel パッチ [-ck パッチセット (BFS 含む), TuxOnIce, BFQ] と aufs3 が含まれた Linux カーネルとモジュール。
  +
  +
;{{AUR|linux-rt}}
  +
:リアルタイムパッチセットがあてられた Linux カーネル。遅延を減らしてハードリアルタイムが可能になります: https://rt.wiki.kernel.org/
  +
  +
;{{AUR|linux-vfio}}/{{AUR|linux-vfio-lts}}
  +
:Alex Williamson によって書かれた KVM で PCI パススルーを出来るようにするパッチが適用された Linux カーネル (acs override と i915)。
   
;{{AUR|linux-chromebook}}
+
;{{AUR|linux-xanmod}}/{{AUR|linux-xanmod-lts}}
  +
:高性能ワークステーション、ゲームデスクトップ、メディアセンターなど、性能を最大限活用し、強固で応答性が高く、スムーズなデスクトップエクスペリエンスを提供するように構築されています。このカーネルは、BFSスケジューラ、BFQ I/Oスケジューラ、UKSMリアルタイムメモリデータの重複排除、YeAH TCP輻輳制御、x86_64高度な命令セットサポート、およびその他のデフォルトの変更を使用します。: https://xanmod.org/
:chromebook ハードウェアのサポートが追加された Linux カーネルとパッチ。
 
   
 
==パッチとパッチセット==
 
==パッチとパッチセット==
   
カーネルにパッチをあてる理由は様々です。パフォーマンスを向上させたり reiser4 ファイルシステムのサポートなどメインラインに含まれていない機能を使うため、というのが大多数の理由でしょう。他の理由としては、カーネルの改善がどうやってなされるのか知ってみたいという好奇心もあるかもしれません。
+
カーネルにパッチをあてる理由は様々です。パフォーマンスを向上させたり [[reiser4]] ファイルシステムのサポートなどメインラインに含まれていない機能を使うため、というのが大多数の理由でしょう。他の理由としては、カーネルの改善がどうやってなされるのか知ってみたいという好奇心もあるかもしれません。
   
しかしながら、システムのスピードアップにベストな方法はまずカーネルをあなたのシステム、特にアーキテクチャとプロセッサーのタイプに適合させることだと気づくのは重要なことです。速度をアップさせるために、カスタムカーネルの一般的なアーキテクチャ用の設定を使ってパッケージ済みのバージョンを使うのは推奨されませんし、あまり価値はありません。他の利点は、あなたが持っていない・使っていない物のサポートを含めないことで、カーネルのサイズそしてビルド時間を減らすことができるということです。例えば、新しいカーネルバージョンがリリースされた時、私はいつもカーネルのコンフィグを皮切りに bluetooth, video4linux, 1000Mbit イーサネットといったサポートマシンに必要ない機能を削除します。このページではカーネルコンフィグのカスタマイズについては触れませんが、最初のステップとしてカーネルのビルドを行い、それからパッチセットを使ってみるのが推奨です。
+
しかしながら、システムのスピードアップにベストな方法はまずカーネルをあなたのシステム、特にアーキテクチャとプロセッサーのタイプに適合させることだと気づくのは重要なことです。速度をアップさせるために、カスタムカーネルの(一般的なアーキテクチャ用の設定を使って)パッケージ済みのバージョンを使うのは推奨されませんし、あまり価値はありません。他の利点は、あなたが持っていない・使っていない物のサポートを含めないことで、カーネルのサイズ(そしてビルド時間)を減らすことができるということです。例えば、新しいカーネルバージョンがリリースされた時、私はいつもカーネルのコンフィグを皮切りに bluetooth, video4linux, 1000Mbit イーサネットといったサポート(マシンに必要ない機能)を削除します。このページではカーネルコンフィグのカスタマイズについては触れませんが、最初のステップとしてカーネルのビルドを行い、それからパッチセットを使ってみるのが推奨です。
   
Arch のカーネルパッケージのコンフィグファイルを手始めとして使うこともできます。コンフィグファイルは Arch のパッケージのソースファイルに含まれています。例えば {{Pkg|linux}} のは [https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux] にリンクがあります。今現在動かしているカーネルのコンフィグファイルはファイルシステムの {{ic|/proc/config.gz}} に常に存在します。
+
Arch のカーネルパッケージのコンフィグファイルを手始めとして使うこともできます。コンフィグファイルは Arch のパッケージのソースファイルに含まれています。例えば {{Pkg|linux}} のは [https://projects.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/linux] にリンクがあります。今現在動かしているカーネルのコンフィグファイルはファイルシステムの {{ic|/proc/config.gz}} に存在します (カーネルオプションの {{ic|CONFIG_IKCONFIG_PROC}} が有効になっている場合)
   
 
===インストール方法===
 
===インストール方法===
   
カスタムカーネルパッケージのインストールには Arch Build System (ABS) を使います。カスタムパッケージをビルドしたことがない場合は次の記事を読んで勉強できます: [[Arch Build System|Arch Build System]], [[パッケージの作成]]。
+
カスタムカーネルパッケージのインストールには Arch Build System (ABS) を使います。カスタムパッケージをビルドしたことがない場合は次の記事を読んで勉強できます: [[Arch Build System]], [[パッケージの作成]]。
   
 
あなたがカーネルにパッチをあてたりカスタマイズをしたことがないとしても、インストールはそこまで難しいものではなく、また、それぞれのパッチセットの PKGBUILD がフォーラムにはたくさんあります。ただし、すぐ近くのバンドワゴンに飛びつくのではなく、それぞれのパッチセットの効能を調べるところから始めるのを推奨します。そのほうがいきなりカーネルを選ぶよりもやるべきことについて多く学ぶことができるでしょう。
 
あなたがカーネルにパッチをあてたりカスタマイズをしたことがないとしても、インストールはそこまで難しいものではなく、また、それぞれのパッチセットの PKGBUILD がフォーラムにはたくさんあります。ただし、すぐ近くのバンドワゴンに飛びつくのではなく、それぞれのパッチセットの効能を調べるところから始めるのを推奨します。そのほうがいきなりカーネルを選ぶよりもやるべきことについて多く学ぶことができるでしょう。
111行目: 111行目:
 
まず初めにパッチセットは様々な人によって開発されていることに注意してください。人々の中には linux カーネルの開発に深く関わっている人もいるでしょうし、そうでないひともいるでしょう。開発者のカーネルの理解度はパッチセットの信頼性と安定性に反映されます。
 
まず初めにパッチセットは様々な人によって開発されていることに注意してください。人々の中には linux カーネルの開発に深く関わっている人もいるでしょうし、そうでないひともいるでしょう。開発者のカーネルの理解度はパッチセットの信頼性と安定性に反映されます。
   
また、パッチセットによっては他のパッチセットとあわせて使うと効果がないものもあります (パッチの名前にそれが示されているかもしれません)。パッチセットとカーネルアップデートは'''非常に'''短い間隔でリリースされ、ほとんどの場合それを完全に追いつづける価値はありません。あまり夢中にならないようにしましょう、それを趣味にするなら話は別ですが。
+
また、パッチセットによっては他のパッチセットとあわせて使うと効果がないものもあります (パッチの名前にそれが示されているかもしれません)。パッチセット(とカーネルアップデート)は'''非常に'''短い間隔でリリースされ、ほとんどの場合それを完全に追いつづける価値はありません。あまり夢中にならないようにしましょう、それを趣味にするなら話は別ですが。
   
 
ググればもっと多くのパッチセットがあります - そのときはクォーテーションを使うのを覚えておいて下さい (例: {{ic|"-nitro"}})。そうしないと google はあなたが望む検索結果を'''表示しません'''。
 
ググればもっと多くのパッチセットがあります - そのときはクォーテーションを使うのを覚えておいて下さい (例: {{ic|"-nitro"}})。そうしないと google はあなたが望む検索結果を'''表示しません'''。
   
  +
{{note|このセクションに書かれていることに保証はありません。安定性や信頼性は担保されていないので注意してください。}}
{{note|This section is for '''information only''' - clearly no guarantees of stability or reliability are implied by inclusion on this page.}}
 
   
 
==== -ck ====
 
==== -ck ====
   
[[linux-ck|Linux-ck]] にはシステムのレスポンスを良くするためのパッチが含まれています。デスクトップ用途に重点が置かれていますが他の環境でも使えます。このパッチは Con Kolivas によって作成・メンテナンスされており、彼のサイトは http://users.on.net/~ckolivas/kernel/ にあります。Con はフルセットを管理していますがパッチを分けて提供もしており、使いたいものだけを追加することが可能です。
+
[[linux-ck]] にはシステムのレスポンスを良くするためのパッチが含まれています。デスクトップ用途に重点が置かれていますが他の環境でも使えます。このパッチは Con Kolivas によって作成・メンテナンスされており、彼のサイトは http://users.on.net/~ckolivas/kernel/ にあります。Con はフルセットを管理していますがパッチを分けて提供もしており、使いたいものだけを追加することが可能です。
   
-ck パッチは http://ck.kolivas.org/patches/3.0/ から入手できます
+
-ck パッチは http://users.tpg.com.au/ckolivas/kernel/ から入手できます
   
 
====-rt====
 
====-rt====
   
このパッチセットは Ingo Molnar 率いるコアデベロッパのグループによってメンテナンスされています。このパッチを使うことでカーネルのほとんど全てをリアルタイム実行できるようになります、ただしコードの非常に小さい領域 ("raw_spinlock critical regions") は除きます。カーネルのスピンロックのほとんどを優先度継承をサポートするミューテックスに置き換え、全ての割り込みとソフトウェア割り込みをカーネルスレッドに移動することでこれを実現しています。
+
このパッチセットは Ingo Molnar 率いるコアデベロッパのグループによってメンテナンスされています。このパッチを使うことでカーネルのほとんど全てをリアルタイム実行できるようになります、ただしコードの非常に小さい領域 ("raw_spinlock critical regions") は除きます。カーネルのスピンロックのほとんどを優先度継承をサポートするミューテックスに置き換え、全ての割り込みとソフトウェア割り込みをカーネルスレッドに移動することでこれを実現しています。詳しくは[[リアルタイムカーネル]]を参照してください
   
 
さらに高精度タイマーも組み入れられています - パッチセットは別々にメンテナンスされています。
 
さらに高精度タイマーも組み入れられています - パッチセットは別々にメンテナンスされています。
   
[as said from the [https://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch Real-Time Linux Wiki]]
+
[ソース: [https://rt.wiki.kernel.org/index.php/CONFIG_PREEMPT_RT_Patch Real-Time Linux Wiki]]
   
パッチは https://www.kernel.org/pub/linux/kernel/projects/rt/ にあります
+
パッチは https://www.kernel.org/pub/linux/kernel/projects/rt/ にあります
   
 
====-bld====
 
====-bld====
{{Warning|このスケジューラは開発中です。}}
+
{{Warning|このパッチは開発中です。}}
  +
BLD は O(1) の CPU 利用技術とされます。ランキューの負担にあわせて CPU ランキューの順番を変えます。つまり、スケジューラが負担の変化に対応することで、適当な順番でランキューを動作させることが可能です。この技術はスケジューラのチェックに依存しません。この技術では最も単純な方法が取られています: 負担を追跡してランキューの順番を変更する。どちらも同じような操作です。負担の追跡はシステム上で負担の変化が起こった時に行われ、負担が変化したランキューの順番が変えられます。一番負担が低いランキューから一番負担が高いランキューまでの順番が付けられたら、一番下の (一番忙しい) ランキューを選択するのは簡単です。スケジューラはランキューにタスクを割り振るときに何も計算や比較を行うことなく一番下のランキューを選択します。そして sched_exec や sched_fork で負担を分散させるのに一番良いのは一番下の一番忙しいランキューを優先することです。これで、ロードバランシングを行わなくてもシステムのバランスが取られます。try_to_wake_up するときアイドル状態のランキューが一番優先されるようになりますが、ドメインごとに実行されるため CPU のキャッシュを正しく利用します。キャッシュの利用には更なる注意が必要になります。
BLD is best described as a O(1) CPU picking technique. Which is done by reordering CPU runqueues based on runqueue loads. In other words, it keeps the scheduler aware of the load changes, which helps scheduler to keep runqueues in an order. This technique doesn't depend on scheduler ticks. The two most simple things in this technique are: load tracking and runqueue ordering; these are relatively simpler operations. Load tracking will be done whenever a load change happens on the system and based on this load change runqueue will be ordered. So, if we have an ordered runqueue from lowest to highest, then picking the less (or even busiest) runqueue is easy. Scheduler can pick the lowest runqueue without calculation and comparison at the time of placing a task in a runqueue. And while trying to distribute load at sched_exec and sched_fork our best choice is to pick the lowest busiest runqueue of the system. And in this way, system remains balanced without doing any load balancing. At the time of try_to_wake_up picking the idlest runqueue is topmost priority but it has been done as per domain basis to utilize CPU cache properly and it's an area where more concentration is requires.
 
   
Google Code ウェブページ: https://code.google.com/p/bld/
+
Github ウェブページ: https://github.com/rmullick/bld-patches
 
====-grsecurity====
 
 
[[Grsecurity]] はセキュリティに焦点を置いたパッチセットです。ロールベースアクセス制御など様々なセキュリティに関係する機能を追加し PaX プロジェクトの機能を利用します。デスクトップでも使うことはできますが公開サーバーでの利用が一番意味があるでしょう。アプリケーションによってはこのパッチセットで実装されている追加のセキュリティ対策と互換性がないことがあります。そうした問題が起こる場合は、セキュリティレベルを低くしてみて下さい。
 
 
-grsecurity パッチは https://grsecurity.net から入手できます
 
   
 
====Tiny-Patches====
 
====Tiny-Patches====
[http://elinux.org/Linux_Tiny Linux Tiny] の目標はメモリやディスクの使用量を減らし、小さなシステムで動作するのを助ける機能を追加することです。組み込みシステムの開発者や 386 など小さい・古いマシンのユーザーを対象にしています。
+
[https://elinux.org/Linux_Tiny Linux Tiny] の目標はメモリやディスクの使用量を減らし、小さなシステムで動作するのを助ける機能を追加することです。組み込みシステムの開発者や 386 など小さい・古いマシンのユーザーを対象にしています。
   
 
メインストリームの Linux カーネルに対するパッチリリースは止まっています。開発者達は少数のパッチに力を注ぎメインラインカーネルにパッチをマージさせることに時間を割くことを選んだようです。
 
メインストリームの Linux カーネルに対するパッチリリースは止まっています。開発者達は少数のパッチに力を注ぎメインラインカーネルにパッチをマージさせることに時間を割くことを選んだようです。
153行目: 147行目:
 
{{AUR|linux-pf}} は非公式の Linux カーネルのフォークで、メインラインにマージされていないひと握りの素敵な機能を提供します。既存の Linux フォークやパッチセットには基づいていませんが、必要なパッチが公式にリリースされていない場合に非公式のポートが使われることもあります。
 
{{AUR|linux-pf}} は非公式の Linux カーネルのフォークで、メインラインにマージされていないひと握りの素敵な機能を提供します。既存の Linux フォークやパッチセットには基づいていませんが、必要なパッチが公式にリリースされていない場合に非公式のポートが使われることもあります。
 
linux-pf の特徴的なパッチとして TuxOnIce, CK パッチセット (特に BFS), AUFS3, LinuxIMQ, l7 フィルタ, BFQ があります。
 
linux-pf の特徴的なパッチとして TuxOnIce, CK パッチセット (特に BFS), AUFS3, LinuxIMQ, l7 フィルタ, BFQ があります。
  +
  +
詳しくは [[linux-pf]] を見て下さい。
   
 
===個々のパッチ===
 
===個々のパッチ===
   
以下のパッチはバニラカーネルのビルドに含めたり、他のパッチセットに組み入れることができます
+
以下のパッチはバニラカーネルのビルドに含めたり、他のパッチセットに組み入れることができます:
 
====Reiser4====
 
 
[[Reiser4]]
 
   
  +
*[[Reiser4]]
====fbsplash====
 
[[fbsplash]]
+
*[[fbsplash]]
   
 
== コンパイル ==
 
== コンパイル ==
181行目: 173行目:
   
 
===プロプライエタリの NVIDIA ドライバ===
 
===プロプライエタリの NVIDIA ドライバ===
カスタムカーネルと一緒にプロプライエタリの NVIDIA ドライバを使う方法は [[NVIDIA#Alternate install: カスタムカーネル]] を見て下さい。
+
カスタムカーネルと一緒にプロプライエタリの NVIDIA ドライバを使う方法は [[NVIDIA#カスタムカーネル]]を見て下さい。
   
 
== 参照 ==
 
== 参照 ==

2020年4月10日 (金) 00:27時点における版

関連記事

Wikipedia より:

カーネルは、階層型に設計されたオペレーティングシステム (OS) の中核となる部分である。アプリケーションとハードウェアレベルでの実際のデータ処理との間の架け橋である。システムのリソースを管理し、ハードウェアとソフトウェアコンポーネントのやりとりを管理する。

メインラインの Linux カーネルに加えて、Arch Linux では様々なカーネルを使うことができます。リポジトリから利用できるカーネルの一部と、それぞれの簡単な説明をこのページでリストアップしています。また、システムのカーネルに適用することができるパッチの説明も記述します。記事の最後にはカスタムカーネルのコンパイルの概要とリンクが付してあります。

公式パッケージ

linux
[core] リポジトリにある Linux カーネルとモジュール。バニラカーネル(素のカーネル)に多少のパッチが適用されています
linux-hardened
カーネルやユーザースペースに対する脆弱性攻撃から防護する ハードニングパッチセット が適用されたセキュリティ指向 Linux カーネル。ユーザー名前空間 (非特権による使用はパッチで無効化済み) や audit、あるいは SELinux など標準の linux には含まれていないカーネルの堅牢化機能も有効になっています。
linux-lts
[core] リポジトリにある長期サポート版 (Long term support, LTS) の Linux カーネルとモジュール。
linux-zen
ZEN Kernel はカーネルハッカーたちの知恵の結晶です。日常的な利用にうってつけの最高の Linux カーネルになります。詳しい情報は https://liquorix.net を見てください (Debian 向けの ZEN ベースのカーネルバイナリ)。

kernel.org カーネル

linux-gitAUR
Linus Torvalds の git リポジトリ から得たソースを使ってビルドする Linux カーネルとモジュール。
linux-mainlineAUR
メインラインの Linux カーネルとモジュール。
linux-next-gitAUR
Next —次のメインラインリリースにマージされる予定の機能を備えた最先端のカーネル。
linux-lts316AUR
Longterm 3.16 長期サポート版カーネルとモジュール。
linux-lts44AUR
Longterm 4.4 長期サポート版カーネルとモジュール。
linux-lts49AUR
Longterm 4.9 長期サポート版カーネルとモジュール。
linux-lts414AUR
Longterm 4.14 長期サポート版カーネルとモジュール。
linux-lts419AUR
Longterm 4.19 長期サポート版カーネルとモジュール。

AUR パッケージ

linux-aufsAUR
aufs 対応の linux カーネルとモジュール。Docker を使用する際に有用。
linux-ckAUR
Con Kolivas の ck1 パッチセットを適用した Linux カーネル。
PKGBUILD 内で次の追加オプションを切り替えることができます: BFQ スケジューラ, nconfig, localmodconfig, 動作中のカーネル設定の利用。
これらのパッチはシステムのレスポンスを改善するように作られており、特にデスクトップに向きますが、どのような使用目的でも問題なく使えます。ck パッチには BFS が含まれています。
詳しい情報とインストールの方法については linux-ck を読んで下さい。
linux-libreAUR
"バイナリブロブ"が取り除かれた Linux カーネル。
linux-lqxAUR
Liquorix はデスクトップ・マルチメディア・ゲーム用途に Debian 用の設定と ZEN カーネルソースを使ってビルドされたディストロカーネル代替です。Debian Linux ではパフォーマンス向上カーネルとしてよく使われています。Liquorix パッチセットのメンテナである Damentz は ZEN パッチセットの開発者でもあります。
linux-mptcpAUR
Multipath TCP に対応する Linux カーネルとモジュール。
linux-pfAUR
pf-kernel パッチ [-ck パッチセット (BFS 含む), TuxOnIce, BFQ] と aufs3 が含まれた Linux カーネルとモジュール。
linux-rtAUR
リアルタイムパッチセットがあてられた Linux カーネル。遅延を減らしてハードリアルタイムが可能になります: https://rt.wiki.kernel.org/
linux-vfioAUR/linux-vfio-ltsAUR
Alex Williamson によって書かれた KVM で PCI パススルーを出来るようにするパッチが適用された Linux カーネル (acs override と i915)。
linux-xanmodAUR/linux-xanmod-ltsAUR
高性能ワークステーション、ゲームデスクトップ、メディアセンターなど、性能を最大限活用し、強固で応答性が高く、スムーズなデスクトップエクスペリエンスを提供するように構築されています。このカーネルは、BFSスケジューラ、BFQ I/Oスケジューラ、UKSMリアルタイムメモリデータの重複排除、YeAH TCP輻輳制御、x86_64高度な命令セットサポート、およびその他のデフォルトの変更を使用します。: https://xanmod.org/

パッチとパッチセット

カーネルにパッチをあてる理由は様々です。パフォーマンスを向上させたり reiser4 ファイルシステムのサポートなどメインラインに含まれていない機能を使うため、というのが大多数の理由でしょう。他の理由としては、カーネルの改善がどうやってなされるのか知ってみたいという好奇心もあるかもしれません。

しかしながら、システムのスピードアップにベストな方法はまずカーネルをあなたのシステム、特にアーキテクチャとプロセッサーのタイプに適合させることだと気づくのは重要なことです。速度をアップさせるために、カスタムカーネルの(一般的なアーキテクチャ用の設定を使って)パッケージ済みのバージョンを使うのは推奨されませんし、あまり価値はありません。他の利点は、あなたが持っていない・使っていない物のサポートを含めないことで、カーネルのサイズ(そしてビルド時間)を減らすことができるということです。例えば、新しいカーネルバージョンがリリースされた時、私はいつもカーネルのコンフィグを皮切りに bluetooth, video4linux, 1000Mbit イーサネットといったサポート(マシンに必要ない機能)を削除します。このページではカーネルコンフィグのカスタマイズについては触れませんが、最初のステップとしてカーネルのビルドを行い、それからパッチセットを使ってみるのが推奨です。

Arch のカーネルパッケージのコンフィグファイルを手始めとして使うこともできます。コンフィグファイルは Arch のパッケージのソースファイルに含まれています。例えば linux のは [1] にリンクがあります。今現在動かしているカーネルのコンフィグファイルはファイルシステムの /proc/config.gz に存在します (カーネルオプションの CONFIG_IKCONFIG_PROC が有効になっている場合)。

インストール方法

カスタムカーネルパッケージのインストールには Arch Build System (ABS) を使います。カスタムパッケージをビルドしたことがない場合は次の記事を読んで勉強できます: Arch Build System, パッケージの作成

あなたがカーネルにパッチをあてたりカスタマイズをしたことがないとしても、インストールはそこまで難しいものではなく、また、それぞれのパッチセットの PKGBUILD がフォーラムにはたくさんあります。ただし、すぐ近くのバンドワゴンに飛びつくのではなく、それぞれのパッチセットの効能を調べるところから始めるのを推奨します。そのほうがいきなりカーネルを選ぶよりもやるべきことについて多く学ぶことができるでしょう。

#コンパイル を見て下さい。

ノート: 新しいカーネルを使うために、あなたのブートローダ (例: GRUB) のブートオプションを変更するのを忘れないで下さい。

主なパッチセット

まず初めにパッチセットは様々な人によって開発されていることに注意してください。人々の中には linux カーネルの開発に深く関わっている人もいるでしょうし、そうでないひともいるでしょう。開発者のカーネルの理解度はパッチセットの信頼性と安定性に反映されます。

また、パッチセットによっては他のパッチセットとあわせて使うと効果がないものもあります (パッチの名前にそれが示されているかもしれません)。パッチセット(とカーネルアップデート)は非常に短い間隔でリリースされ、ほとんどの場合それを完全に追いつづける価値はありません。あまり夢中にならないようにしましょう、それを趣味にするなら話は別ですが。

ググればもっと多くのパッチセットがあります - そのときはクォーテーションを使うのを覚えておいて下さい (例: "-nitro")。そうしないと google はあなたが望む検索結果を表示しません

ノート: このセクションに書かれていることに保証はありません。安定性や信頼性は担保されていないので注意してください。

-ck

linux-ck にはシステムのレスポンスを良くするためのパッチが含まれています。デスクトップ用途に重点が置かれていますが他の環境でも使えます。このパッチは Con Kolivas によって作成・メンテナンスされており、彼のサイトは http://users.on.net/~ckolivas/kernel/ にあります。Con はフルセットを管理していますがパッチを分けて提供もしており、使いたいものだけを追加することが可能です。

-ck パッチは http://users.tpg.com.au/ckolivas/kernel/ から入手できます

-rt

このパッチセットは Ingo Molnar 率いるコアデベロッパのグループによってメンテナンスされています。このパッチを使うことでカーネルのほとんど全てをリアルタイム実行できるようになります、ただしコードの非常に小さい領域 ("raw_spinlock critical regions") は除きます。カーネルのスピンロックのほとんどを優先度継承をサポートするミューテックスに置き換え、全ての割り込みとソフトウェア割り込みをカーネルスレッドに移動することでこれを実現しています。詳しくはリアルタイムカーネルを参照してください。

さらに高精度タイマーも組み入れられています - パッチセットは別々にメンテナンスされています。

[ソース: Real-Time Linux Wiki]

パッチは https://www.kernel.org/pub/linux/kernel/projects/rt/ にあります。

-bld

警告: このパッチは開発中です。

BLD は O(1) の CPU 利用技術とされます。ランキューの負担にあわせて CPU ランキューの順番を変えます。つまり、スケジューラが負担の変化に対応することで、適当な順番でランキューを動作させることが可能です。この技術はスケジューラのチェックに依存しません。この技術では最も単純な方法が取られています: 負担を追跡してランキューの順番を変更する。どちらも同じような操作です。負担の追跡はシステム上で負担の変化が起こった時に行われ、負担が変化したランキューの順番が変えられます。一番負担が低いランキューから一番負担が高いランキューまでの順番が付けられたら、一番下の (一番忙しい) ランキューを選択するのは簡単です。スケジューラはランキューにタスクを割り振るときに何も計算や比較を行うことなく一番下のランキューを選択します。そして sched_exec や sched_fork で負担を分散させるのに一番良いのは一番下の一番忙しいランキューを優先することです。これで、ロードバランシングを行わなくてもシステムのバランスが取られます。try_to_wake_up するときアイドル状態のランキューが一番優先されるようになりますが、ドメインごとに実行されるため CPU のキャッシュを正しく利用します。キャッシュの利用には更なる注意が必要になります。

Github ウェブページ: https://github.com/rmullick/bld-patches

Tiny-Patches

Linux Tiny の目標はメモリやディスクの使用量を減らし、小さなシステムで動作するのを助ける機能を追加することです。組み込みシステムの開発者や 386 など小さい・古いマシンのユーザーを対象にしています。

メインストリームの Linux カーネルに対するパッチリリースは止まっています。開発者達は少数のパッチに力を注ぎメインラインカーネルにパッチをマージさせることに時間を割くことを選んだようです。

-pf

linux-pfAUR は非公式の Linux カーネルのフォークで、メインラインにマージされていないひと握りの素敵な機能を提供します。既存の Linux フォークやパッチセットには基づいていませんが、必要なパッチが公式にリリースされていない場合に非公式のポートが使われることもあります。 linux-pf の特徴的なパッチとして TuxOnIce, CK パッチセット (特に BFS), AUFS3, LinuxIMQ, l7 フィルタ, BFQ があります。

詳しくは linux-pf を見て下さい。

個々のパッチ

以下のパッチはバニラカーネルのビルドに含めたり、他のパッチセットに組み入れることができます:

コンパイル

Arch Linux ではカーネルコンパイルに複数の方法があります。

Arch Build System を使う

Arch Build System の利用には既存の linuxPKGBUILDパッケージ管理システムを使えるというアドバンテージがあります。PKGBUILD があるので、ソースがダウンロードされた後、ビルドを止めてカーネルを設定することができます。

カーネル/コンパイル/Arch Build System を見て下さい。

伝統的な方法

手動でソース tarball をダウンロードし、標準ユーザーとして home ディレクトリでビルドを行います。設定を行った後、コンパイル・インストールする方法は2つあります; 伝統的に手動で行うか makepkg + pacman を使うかです。

伝統的な方法のメリットは、他の Linux ディストリビューションでもカーネルを動作させることができることです。

カーネル/コンパイル/伝統的な方法を見て下さい。

プロプライエタリの NVIDIA ドライバ

カスタムカーネルと一緒にプロプライエタリの NVIDIA ドライバを使う方法は NVIDIA#カスタムカーネルを見て下さい。

参照