web-dev-qa-db-fra.com

Ne pas ajouter "+" à la version du noyau Linux

Je construis le noyau Linux, si mon noyau est sous git, la version du noyau est à chaque fois:

Image Name:   Linux-2.6.39+

Si je n'utilise pas git, tout va bien, sans aucun avantage à la fin.

Je sais que cela se fait par scripts/setlocalversion script:

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

Donc, il est possible sans modifications de code, par exemple, de construire le système sans avoir besoin d’ajouter "+" à la fin de la ligne de version?

28
Yuri

Le signe plus à la fin de la chaîne de votre version indique qu’il s’agit d’un noyau construit à partir de sources modifiées (c’est-à-dire que des modifications non validées ont été apportées). Ceci est également indiqué par les commentaires dans scripts/setlocalversion.

Pour éviter que le '+' soit ajouté malgré un répertoire de travail sale, définissez simplement LOCALVERSION lorsque vous exécutez make:

make LOCALVERSION=

Vous devrez peut-être également modifier l’option de configuration CONFIG_LOCALVERSION_AUTO en n dans la configuration de votre noyau (.config) avant de générer:

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

Pour empêcher le script scripts/setlocalversion d’ajouter le + à la fin de la version locale du noyau, créez un fichier .scmversion vide à la racine des sources du noyau.

touch .scmversion

de cette manière, vous pourrez laisser LOCALVERSION tel quel dans le fichier de configuration du noyau, au cas où vous souhaiteriez ajouter une signature locale au nom du noyau.

18
HappyCactus

Manipuler des scripts/setlocalversion semble être le seul moyen pour moi. Retour forcé dans scm_version():

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

Ajoutez cette ligne à votre fichier local.conf si vous utilisez yocto et imx soc

SCMVERSION_pn-linux-imx = ""

Testé sur la version imx-4.9.88-2.0.0_ga

0
Keelung