Armadilloフォーラム

Kernel/Userland のバージョン取得について

shasegawa

2015年3月12日 21時01分

長谷川です。お世話なっております。

Flashに書込まれいるカーネル・ユーザーランドのビルド・バージョンを取得する方法を検討しています。
(Armark Distのバージョンではなく、誰が、いつ、どんなコンフィグレーションでビルドしたものかを管理するためのバージョンです。)

例えば、menuconfigでカーネル・ユーザーランドのイメージを作成する時にバージョンファイルを追加するなどすれば取得できると思うのですが、何か標準的な方法があれば教えていただけないでしょうか?

よろしくお願いします。

コメント

at_takashi.sasayama

2015年3月16日 15時01分

笹山です。

> Flashに書込まれいるカーネル・ユーザーランドのビルド・バージョンを取得する方法を検討しています。
> (Armark Distのバージョンではなく、誰が、いつ、どんなコンフィグレーションでビルドしたものかを管理するためのバージョンです。)
>
> 例えば、menuconfigでカーネル・ユーザーランドのイメージを作成する時にバージョンファイルを追加するなどすれば取得できると思うのですが、何か標準的な方法があれば教えていただけないでしょうか?

参考までに、Linuxに標準で備わっている機能で、
バージョン管理に使用できそうなものを以下に挙げます。

■ カーネルビルドバージョンの指定

uname -v コマンドで表示できるバージョン番号は、ビルド時に指定することができます。

例:バージョン番号 を 10 とする場合

make KBUILD_BUILD_VERSION=10

uname -v の結果

armadillo # uname -v
#10 PREEMPT Mon Mar 16 13:53:19 JST 2015

■ 誰が、どのPCで、いつ ビルドしたか?

カーネルイメージには 誰が、どのPCで、いつビルドしたかが標準で含まれます。
この情報は Armadillo では /proc/version で確認できます。

atde3 でビルドした場合は、以下の様に atmark@atde3 となります。

armadillo # cat /proc/version
Linux version 2.6.26-at20 (2.6.26) (atmark@atde3) (gcc version 4.3.2 (Debian 4.3.2-1.1) ) #1 PREEMPT Wed Sep 17 17:02:07 JST 2014

atmark は whoami コマンド
atde3 は hostname コマンド
日付の箇所は dateコマンドの結果です。

■ どのようなカーネルコンフィギュレーションでビルドしたか?

カーネルビルド時のコンフィグレーション ( .config ) は、
カーネルイメージの中に標準で含まれます。

Armadillo起動中に確認する方法

armadillo# zcat /proc/config.gz

カーネルイメージから抽出して確認する方法

ATDE $ cd linux-2.6.x
ATDE $ ./scripts/extract-ikconfig ~/atmark-dist/images/linux.bin.gz

※ ATDE5 で linux-2.6.26-at の extract-ikconfig を実行するとエラーとなり動作しませんので、
以下の変更を行ってください。

linux-2.6.26-at/scripts/extract-ikconfig

1 #!/bin/bash   ※ #!/bin/sh から #!/bin/bash に変更します。
2 # extracts .config info from a [b]zImage file
 :

長谷川です。お世話なっております。

丁寧な回答、ありがとうございました。
参考にさせて頂きます。

以上、よろしくお願いします。