dkms

プロプライエタリなドライバやカーネルに同梱されてないものをうまく使うための仕組みとして、dkms (Dynamic Kernel Module Support)というのがあります。ドライバのソースが/usr/src/の下にそれぞれあって、カーネルをアップグレードして再起動した際など、必要な際に自動的にドライバをコンパイル、インストールしてくれます。ただし、SCSI系等でブート時に必須でinitrdに組み込む必要があるヤツだと、再起動の前に、

  • dkms build -m {ドライバ名} -v {ドライバのバージョン} -k {カーネルのバージョン}
  • dkms install -m {ドライバ名} -v {ドライバのバージョン} -k {カーネルのバージョン}

とかする必要はありそう。ちなみに、起動時に自動インストールするか、とかinitrdに組み込むか等の設定は /usr/src/{ドライバ名}/dkms.conf で行います。

PSPでドライバを当てたときに特にdkmsでする必要はなかったと思う。というのは、今までそれをやったことないからという単純な理由だけど。基本的にはSASコントローラのドライバはRHELの標準のものか、無いときはインストール時に足すので、initrdに組み込む必要はあるのだろうか。

今のRHELだとkernel-sourceパッケージがなくなっているので、カーネルをアップグレードしてしたらsrc.rpmを入手してきて展開しないといけないわけで、Fedoraみたいに頻繁にカーネルのバージョンが変わるわけではないけど面倒くさくてそんなのはお父さんはイヤなのである。

といったところで思い出しました。以前、RHELで作るファイルサーバ その1で書いたdkmsです。あれを使えばディストリの提供しているカーネルに入っていないドライバをオンデマンドでコンパイルしてインストしてくるではないですか

dkmsはディストリ提供のカーネルに入っていないドライバをオンデマンドでコンパイルしてインストールしてくれるらしい。