web-dev-qa-db-ja.com

Linuxカーネルバージョンに「+」を追加しない

私はLinuxカーネルをビルドしています。私のカーネルがgitの場合、毎回のカーネルバージョンは次のとおりです。

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

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

34
Yuri

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

ダーティな作業ディレクトリがあるにもかかわらず「+」が追加されないようにするには、makeの実行時にLOCALVERSIONを明示的に設定するだけです。

make LOCALVERSION=

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

sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" .config
27
Jon Gjengset

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

_touch .scmversion
_

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

21
HappyCactus

スクリプト/ setlocalversionを操作することが私にとって唯一の方法のようです。 scm_version()で強制的に戻る:

scm_version()
{
        local short
        short=false
        **return**
0
Sabin

Yoctoとimx socを使用している場合は、この行をlocal.confに追加します

SCMVERSION_pn-linux-imx = ""

Imx-4.9.88-2.0.0_gaリリースでテスト済み

0
Keelung