Linux Kernel Version String に付く “-dirty”

Facebooktwittergoogle_plustumblrmail

Linux カーネルの Makefile では、カーネルバージョン文字列が $(KERNELVERSION) で参照できるようになっている。走っている Linux システムの中からは “uname -r” コマンドを実行する、または “cat /proc/version” を実行すれば分かる。

$ uname -r
3.2.0-54-generic-pae
$ cat /proc/version
Linux version 3.2.0-54-generic-pae (buildd@batsu) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) ) #82-Ubuntu SMP Tue Sep 10 20:29:22 UTC 2013

自分で Linux カーネルを調整して作ったイメージでは、カーネルバージョン文字列の後ろに “-dirty” が付いたりするのは何故なんだろうと思った。ちょっと Google 先生にあたったら、 Linux カーネルのバージョン文字列を作る際に関連する config 項目が出てきた。

CONFIG_LOCALVERSION
基本的なバージョン番号の後ろに、自分で独自の文字列を付加したい時に設定する。例えば元々のカーネルバージョン文字列が “3.2.0” の時、 CONFIG_LOCALVERSION=”-kokubu” としておくと、最終的なカーネルバージョン文字列は “3.2.0-kokubu” となる。
CONFIG_LOCALVERSION_AUTO
カーネルの make 中に ${LK}/scripts/setlocalversion スクリプトを走らせて、カーネルバージョン文字列のサフィクスを生成する。

実際に ${LK}/scripts/setlocalversion を見てみると、 SCM 管理用のディレクトリがあったら (.git とか .hg とか) 、それがきちんと commit 済みなのかどうかを調べて、もし commit されてなかったら末尾に “-dirty” を付加している。賢い。

References:

Facebooktwittergoogle_plustumblrmail
Yusuke Dada K.
Yusuke Dada K.
台湾の現地企業で主に組み込みソフトウエアの研究開発をしている日本人です。我人是個日本人,負責軟體的研究開發。在臺灣的科技公司工作。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です