it-swarm.com.de

Fügen Sie der Linux-Kernel-Version kein "+" hinzu

Ich baue Linux-Kernel, wenn mein Kernel unter git liegt, dann ist Kernel-Version jedes Mal:

Image Name:   Linux-2.6.39+

Wenn ich git nicht benutze, ist alles OK ohne ein Plus am Ende.

Ich weiß, dass dies mit Skripten/setlocalversion-Skript geschieht:

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

So ist es ohne Codeänderungen möglich, ein System aufzubauen, das kein "+" am Ende der Versionszeile hinzufügen muss?

28
Yuri

Das Pluszeichen am Ende Ihrer Versionszeichenfolge ist ein Indikator dafür, dass der Kernel aus geänderten Quellen erstellt wurde (dh es wurden nicht festgeschriebene Änderungen vorgenommen). Dies wird auch durch die Kommentare in scripts/setlocalversion angezeigt.

Um zu vermeiden, dass das '+' trotz eines fehlerhaften Arbeitsverzeichnisses angehängt wird, setzen Sie einfach LOCALVERSION, wenn Sie make ausführen:

make LOCALVERSION=

Möglicherweise müssen Sie auch die Konfigurationsoption CONFIG_LOCALVERSION_AUTO in n in Ihrer Kernel-Konfiguration (.config) ändern, bevor Sie Folgendes erstellen:

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

Um zu verhindern, dass das Skript scripts/setlocalversion den + an das Ende der lokalen Kernelversion anhängt, erstellen Sie eine leere .scmversion-Datei im Stammverzeichnis der Kernelquellen.

touch .scmversion

auf diese Weise können Sie LOCALVERSION in der Kernelkonfigurationsdatei belassen, falls Sie eine lokale Signatur an den Kernelnamen anhängen möchten.

18
HappyCactus

Das Manipulieren von Skripten/Setlocalversion scheint für mich der einzige Weg zu sein. Rückgabe in scm_version() erzwingen:

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

Fügen Sie diese Zeile zu Ihrer local.conf hinzu, wenn Sie yocto und imx soc verwenden

SCMVERSION_pn-linux-imx = ""

Getestet auf der Veröffentlichung imx-4.9.88-2.0.0_ga

0
Keelung