私は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
それで、コードを変更せずに、バージョン行の最後に「+」を追加する必要のないシステムを構築することが可能ですか?
バージョン文字列の最後にあるプラス記号は、カーネルが変更されたソースから構築されたことを示すインジケーターです(つまり、コミットされていない変更があった)。これは、scripts/setlocalversion
のコメントでも示されています。
ダーティな作業ディレクトリがあるにもかかわらず「+」が追加されないようにするには、make
の実行時にLOCALVERSIONを明示的に設定するだけです。
make LOCALVERSION=
ビルドする前に、カーネル構成(CONFIG_LOCALVERSION_AUTO
)の構成オプション.config
をn
に変更する必要がある場合もあります。
sed -i "s|CONFIG_LOCALVERSION_AUTO=.*|CONFIG_LOCALVERSION_AUTO=n|" .config
スクリプト_scripts/setlocalversion
_がカーネルローカルバージョンの最後に_+
_を追加しないようにするには、カーネルソースのルートに空の_.scmversion
_ファイルを作成します。
_touch .scmversion
_
これにより、ローカル署名をカーネル名に追加したい場合に備えて、LOCALVERSIONをカーネル構成ファイルに残しておくことができます。
スクリプト/ setlocalversionを操作することが私にとって唯一の方法のようです。 scm_version()
で強制的に戻る:
scm_version()
{
local short
short=false
**return**
Yoctoとimx socを使用している場合は、この行をlocal.confに追加します
SCMVERSION_pn-linux-imx = ""
Imx-4.9.88-2.0.0_gaリリースでテスト済み