メモ置き場

メモ置き場です.開発したものや調べたことについて書きます.

[tex: ]

カーネルモジュールをブート時に自動で読み込む

以前Zynqでdevice tree overlayを試す記事を書いた.
ZynqでDevice Tree Overlayを使う - メモ置き場
その中でikwzmさんのdtbocfgというカーネルモジュールをロードする必要がある.今まではZynqをブートするたびにモジュールを手作業でインストールしていたが,流石にめんどくさくなったので自動でロードするようにした.
試した環境は

  • Ubuntu 16.04
  • kernel version 4.14.34

その時のメモ.

モジュールの自動ロード化

まず,上記記事に従ってkoファイル(dtbocfgのものでなくても,カーネルモジュールならなんでもいい)を作成する.出来たkoファイルを/lib/modules/$(uname -r)ディレクトリ下にコピーする.ディレクトリしたに自分でディレクトリを作成しても良いみたい.

$ sudo mkdir /lib/modules/$(uname -r)/drivers/mymodule
$ sudo cp mymodule.ko /lib/module/$(uname -r)/drivers/mymodule

コピーしたらdepmodを実行し,モジュールの依存関係に関する情報を更新する.

$ sudo depmod

次に,/etc/modules-load.d/modules.confに追加したいモジュールを書いておく.モジュール名はmodinfoで取得できる.

$ modinfo mymodule.ko
name:   mymodule
$ sudo vi /etc/modules-load.d/modules.conf
#modules.conf
# /etc/modules: kernel modules to load at boot time.                        
#                                                                           
# This file contains the names of kernel modules that should be loaded      
# at boot time, one per line. Lines beginning with "#" are ignored.         
                                                                             
mymodule

これでブート時に自動でカーネルモジュールがロードされるようになる.ロードされたモジュール一覧を得るにはlsmodを使えば良い.

起動時に自動実行するコマンドの設定

dtbcfgの場合,/configに自動でマウントしてから使う必要があったので,マウントも自動化してしまう.rcスクリプトを使う./etc/rc.localに実行したいコマンドを追加する.ただし元々書かれているexit 0よりも前に追加すること.またコマンドの実行はroot権限で行われるみたいなので注意.