42

私のカーネルがgitの下にある場合、私はLinuxカーネルを構築しています。カーネルのバージョンは毎回次のとおりです。

Image Name:   Linux-2.6.39+

git を使用していない場合は、最後にプラスがなくても問題ありません。

これは scripts/setlocalversion スクリプトによって行われることを知っています:

if test "$CONFIG_LOCALVERSION_AUTO" = "y"; then
    # full scm version string
    res="$res$(scm_version)"
else
    # append a plus sign if the repository is not in a clean
    # annotated or signed tagged state (as git describe only
    # looks at signed or annotated tags - git tag -a/-s) and
    # LOCALVERSION= is not specified
    if test "${LOCALVERSION+set}" != "set"; then
        scm=$(scm_version --short)
            res="$res${scm:++}"
        fi
fi

それで、バージョン行の最後に「+」を追加する必要がないシステムを構築するために、コードを変更せずに可能ですか?

4

4 に答える 4

38

バージョン文字列の末尾にあるプラス記号は、カーネルが変更されたソースからビルドされたこと (つまり、コミットされていない変更があったこと) を示しています。これは、 のコメントにも示されていますscripts/setlocalversion

作業ディレクトリが汚れているにもかかわらず「+」が追加されるのを避けるには、実行時に LOCALVERSION を明示的に設定するだけですmake

make LOCALVERSION=

ビルドする前に、カーネル構成 ( ) で構成オプションCONFIG_LOCALVERSION_AUTOをに変更する必要がある場合もあります。n.config

sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" .config
于 2014-01-12T18:37:54.540 に答える
27

スクリプトがカーネル ローカル バージョンの最後にscripts/setlocalversionを追加しないようにするには、カーネル ソースのルートに+空のファイルを作成します。.scmversion

touch .scmversion

このようにして、カーネル名にローカル署名を追加したい場合に備えて、カーネル構成ファイルに LOCALVERSION をそのまま残すことができます。

于 2015-09-21T16:17:20.663 に答える