web-dev-qa-db-ja.com

Linuxカーネルバージョンサフィックス+ CONFIG_LOCALVERSION

システムの起動時に、現在ブートローダーメニューからLinux 4.0.0-rc6yyおよび4.0.0-rc6yy.oldが表示されています。彼らがどこから来たのか私にはわかりません。 「yy」は恣意的ではないかと思いますが、誰かが「.old」サフィックスを説明できますか?

また、誰かがCONFIG_LOCALVERSIONとCONFIG_LOCALVERSION_AUTOが.configから何であるかを説明できますか?私はそれらを調べましたが、それらの使用についてはまだ不明です。どうもありがとう。

8
Zephyr

カーネルをインストールするとき、責任のあるスクリプトはkernel imageinitramfs/bootディレクトリにコピーしています。同じ名前の以前のカーネルイメージがすでに存在する場合は、その名前に.oldを追加することによって名前が変更されます。

CONFIG_LOCALVERSION

カーネルバージョンの最後に追加の文字列を追加します。たとえば、unameと入力すると表示されます。ここで設定した文字列は、オブジェクトとソースツリーでlocalversion *に一致するファイル名のファイルのコンテンツの後に追加されます。合計文字列は最大64文字です。

つまり、必要に応じて、カスタマイズしたカーネルに特別なバージョン番号または名前を付けることができます。 「-MyNewKernel」と入力すると、カーネルはLinux 4.0.0-MyNewKernelのようになります。

CONFIG_LOCALVERSION_AUTO

これは、現在のツリーリビジョンの最上位に属するgitタグを探すことにより、現在のツリーがリリースツリーかどうかを自動的に判断しようとします。
-gxxxxxxxxという形式の文字列が、一致するlocalversionの後に追加されたlocalversionに追加されます1 ファイル、およびCONFIG_LOCALVERSIONで設定された値の後。

1 (ここで使用される実際の文字列は、コマンドを実行して生成される最初の8文字です。

$ git rev-parse --verify HEAD

これは、スクリプト「scripts/setlocalversion」内で行われます。)

つまり、有効になっている場合、setlocalversion(または.scmversion)によって報告された一意のSCM(ソース管理)タグが存在する場合、カーネルバージョンに追加されます。たとえば、gitツリーが見つかった場合、リビジョン番号が存在する場合はそれが追加されます。結果は次のようになります:Linux 4.0.0-MyNewKernel-ga2cfc42。詳細情報については、ソースツリーのscipts/setlocalversionで確認できます。

8
taliezin