「動的カーネルモジュールサポート」の版間の差分
(→DKMS パッケージの作成: 「DKMS パッケージガイドライン」に移動) |
(→初期 RAM ディスク: 翻訳) |
||
73行目: | 73行目: | ||
[[DKMS パッケージガイドライン]] を見てください。 |
[[DKMS パッケージガイドライン]] を見てください。 |
||
− | == |
+ | == 初期 RAM ディスク == |
+ | [[Wikipedia:ja:Initial ramdisk|初期 RAM ディスク]] 内で使用されているカーネルモジュールを DKMS を通してインストールした場合(例: {{AUR|zfs-dkms}})、[[pacman]] フックを記述して初期 RAM ディスクイメージの再生成手順を自動化できます。 |
||
− | In case you've got any kernel modules installed via DKMS that are used in [[Wikipedia:Initial ramdisk|initial ramdisk]], e.g. {{AUR|zfs-dkms}}, you may want to write a [[pacman]] hook to automate the process of regenerating initramfs image(s). |
||
− | + | 例えば、{{Pkg|linux}} と [[mkinitcpio]] を使用している場合に、{{AUR|zfs-dkms}} がアップグレードされる度に [[ZFS]] モジュールを更新するには: |
|
{{hc|1=/etc/pacman.d/hooks/90-mkinitcpio-dkms-linux.hook|2=[Trigger] |
{{hc|1=/etc/pacman.d/hooks/90-mkinitcpio-dkms-linux.hook|2=[Trigger] |
||
94行目: | 94行目: | ||
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -p linux'}} |
Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -p linux'}} |
||
+ | 他のカーネルをインストールしている場合には、フックに target を追加したり、フックの追加コピーを作成したりもできます。{{ic|90-}} 接頭辞は、フックが DKMS フックの後に実行されるようにするために必要であることに注意してください。 |
||
− | You may add more targets to the hook and make additional copies of the hook if you've installed other kernels. Note the {{ic|90-}} prefix is necessary to make sure it runs after the DKMS hooks. |
||
== 参照 == |
== 参照 == |
2022年4月20日 (水) 12:07時点における版
Wikipedia より:
- Dynamic Kernel Module Support (DKMS) はカーネルのソースツリーの外にソースが存在する Linux カーネルモジュールの生成を可能にするプログラム/フレームワークです。新しいカーネルがインストールされたときに DKMS モジュールは自動的にリビルドされます。
これはユーザーが会社・プロジェクト・パッケージメンテナが新しいバージョンのモジュールをリリースするのを待つ必要がないということを意味します。Pacman#フックが導入されたことで、カーネルがアップグレードされたときにモジュールのリビルドは自動的に処理されるようになっています。
目次
インストール
dkms パッケージとターゲットカーネル/カーネルヘッダーをインストールしてください。例えば、デフォルトの linux カーネルの場合は、linux-headers になります。他のカーネルの場合は、それぞれ独自のヘッダーパッケージがあります。
カーネルのソースツリーの外にあるモジュールについてはかなりの数の DKMS のパッケージが作られています。いくらかは 公式リポジトリ にも存在しますが、ほとんどのモジュールは AUR にあります。
アップグレード
大抵はカーネルのアップグレード時に DKMS モジュールのリビルドが行われますが、リビルドが失敗する可能性がときどきあります。pacman の出力をよく見てください。起動するのに DKMS モジュールに依存している環境の場合や公式リポジトリに存在しないカスタムカーネルで DKMS を使用する場合は特に重要です。
カーネルの変更に対処したり、バグを修正したり、必要な機能を追加するため、再起動する前に DKMS パッケージをアップグレードするようにしてください。
使用方法
DKMS を手動で使用する方法です。
タブ補完は次を実行することで使えます:
# source /usr/share/bash-completion/completions/dkms
モジュールの確認
モジュールの現在の状態、バージョンやツリーのカーネルを確認するには:
$ dkms status
モジュールのリビルド
全てのモジュールをリビルド:
# dkms autoinstall
もしくは特定のカーネルのモジュールをリビルド:
# dkms autoinstall -k 3.16.4-1-ARCH
特定のモジュールをビルド (例: 現在使用しているカーネル):
# dkms install -m nvidia -v 334.21
もしくは:
# dkms install nvidia/334.21
全てのカーネルでモジュールをビルドするには:
# dkms install nvidia/334.21 --all
モジュールの削除
モジュールを削除するには (古いモジュールが勝手に削除されることはありません):
# dkms remove -m nvidia -v 331.49 --all
もしくは:
# dkms remove nvidia/331.49 --all
dkms パッケージを削除した場合、モジュールのビルドファイルに関連する情報が消失します。その場合 /usr/lib/modules/KERNELVERSION-ARCH
から使用しないファイルやディレクトリを削除してください。
DKMS パッケージの作成
DKMS パッケージガイドライン を見てください。
初期 RAM ディスク
初期 RAM ディスク 内で使用されているカーネルモジュールを DKMS を通してインストールした場合(例: zfs-dkmsAUR)、pacman フックを記述して初期 RAM ディスクイメージの再生成手順を自動化できます。
例えば、linux と mkinitcpio を使用している場合に、zfs-dkmsAUR がアップグレードされる度に ZFS モジュールを更新するには:
/etc/pacman.d/hooks/90-mkinitcpio-dkms-linux.hook
[Trigger] Operation=Install Operation=Upgrade Operation=Remove Type=Package Target=zfs-dkms Target=linux [Action] Description=Update dkms modules in Linux initcpio Depends=mkinitcpio When=PostTransaction NeedsTargets Exec=/bin/sh -c 'while read -r trg; do case $trg in linux) exit 0; esac; done; /usr/bin/mkinitcpio -p linux'
他のカーネルをインストールしている場合には、フックに target を追加したり、フックの追加コピーを作成したりもできます。90-
接頭辞は、フックが DKMS フックの後に実行されるようにするために必要であることに注意してください。