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?
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
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.
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**
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