2013年3月8日金曜日

kernel versionに+(plus) が付くとき

驟雨のカーネル探検隊(只今遭難中w - [linux]git上の開発版カーネルをビルドするとバージョン番号に+が付く件
ちなみに名前が変わってしまうと何が困るかというとinitrdなどでカーネルモジュールを組み込むときなどがハマりポイントかなと。
起動時に「Unresolved symbols in module /lib/modules/〜」みたいのが出たら、実はカーネルの名前が違った!みたいなパターンですね。

ちなみに、カーネルコンフィグ:CONFIG_LOCALVERSION_AUTO
Automatically append version information to the version string
にチェックして無くてもくっついてきます

kernelの
scm_version()@scripts/setlocalversionを見ると
#syntax highter導入しなければいけないのに。。。
ここをコメントアウトすればとりあえず、回避可能ー。もっと良い方法が有りそうですが、調べてません。

# Check for git and a git repo.
if test -d .git && head=`git rev-parse --verify --short HEAD 2>/dev/null`; then

# If we are at a tagged commit (like "v2.6.30-rc6"), we ignore
# it, because this version is defined in the top level Makefile.
if [ -z "`git describe --exact-match 2>/dev/null`" ]; then

# If only the short version is requested, don't bother
# running further git commands
if $short; then
echo "+"
return
fi
# If we are past a tagged commit (like
# "v2.6.30-rc5-302-g72357d5"), we pretty print it.
if atag="`git describe 2>/dev/null`"; then
echo "$atag" | awk -F- '{printf("-%05d-%s", $(NF-1),$(NF))}'

# If we don't have a tag at all we print -g{commitish}.
else
printf '%s%s' -g $head
fi
fi

0 件のコメント:

コメントを投稿