以前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権限で行われるみたいなので注意.