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

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

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

また、.configにCONFIG_LOCALVERSIONとCONFIG_LOCALVERSION_AUTOが何であるかを説明できる人はいますか?探してみましたが、まだ何の用途なのかわかりませんね。とても感謝しています。

答え1

カーネルをインストールすると、担当のスクリプトがディレクトリkernel imageにコピーされます。同じ名前の古いカーネルイメージがすでに存在する場合は、名前に .old を追加して名前を変更します。 initramfs/boot

CONFIG_LOCALVERSION:

カーネルバージョンの末尾に文字列を追加します。たとえば、unameと入力すると、この情報が表示されます。ここで設定した文字列は、ファイル名がlocalversion *と一致するソースツリー内のすべてのファイルの内容とオブジェクトに順次追加されます。合計文字列は最大64文字まで含めることができます。

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

CONFIG_LOCALVERSION_AUTO:

その後、現在のツリーリビジョンの一番上にあるgitタグを見つけて、現在のツリーがリリースツリーであるかどうかを自動的に確認しようとします。一致するlocalversion 1ファイルの後に、CONFIG_LOCALVERSIONに設定された値の後に
追加されたlocalversionに、-gxxxxxxxx形式の文字列が追加されます。

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

$ git rev-parse --verify HEAD

これは "scripts/setlocalversion" スクリプトで行われます。 )

つまり、有効にすると、setlocalversion(または.scmversion)によって報告された唯一のソースコード制御管理(SCM)タグがカーネルバージョン(存在する場合)に追加されます。たとえば、Git ツリーが見つかると、リビジョン番号が追加されます。結果は次のとおりですLinux 4.0.0-MyNewKernel-ga2cfc42。詳細については、ソースツリーscipts / setlocalversionを参照してください。

関連情報