57 votes

Comment trouver les paramètres de démarrage utilisés par le noyau en cours d'exécution ?

Y a-t-il un moyen de savoir avec quels paramètres le noyau a démarré ?

Par exemple si je spécifie noexec=off à la ligne de commande Grub ? Puis-je voir ce genre d'informations après que le système ait fini de démarrer ?

81voto

Maciek Gryka Points 1807

Vous pouvez exécuter cat /proc/cmdline .

[01:31] ~ $ cat /proc/cmdline
BOOT_IMAGE=/boot/vmlinuz-2.6.38-7-generic root=UUID=025c4231-b7bb-48bf-93e9-d20c5b5ce123 ro crashkernel=384M-2G:64M,2G-:128M quiet splash bootchart=disable acpi_enforce_resources=lax vga=792 vt.handoff=7

11voto

joeytwiddle Points 1759

Une autre méthode consiste à vérifier la sortie de dmesg (ligne 5 ici) :

$ dmesg | grep "Command line"
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-3.19.0-33-generic root=UUID=81dba11f-f76e-4ed4-8120-e6da6328b1ee ro

Mais notez que cela peut ne pas fonctionner si beaucoup de choses ont été enregistrées (par exemple si la machine tourne depuis longtemps) car les lignes de démarrage initiales peuvent avoir été poussées hors du ringbuffer.

1voto

byhankswang Points 11

En fait, le paramètre est situé entre __setup_start y __setup_end dans le noyau. Dans le code suivant, le p->str est le nom du paramètre

Le code suivant du noyau a été trouvé dans linux-3.4.5/init/main.c:388

/* Check for early params. */
static int __init do_early_param(char *param, char *val)
{
    const struct obs_kernel_param *p;
    for (p = __setup_start; p < __setup_end; p++) {
        if ((p->early && parameq(param, p->str)) ||
            (strcmp(param, "console") == 0 &&
             strcmp(p->str, "earlycon") == 0)
        ) {
            if (p->setup_func(val) != 0)
                printk(KERN_WARNING
                       "Malformed early option '%s'\n", param);
        }
    }

    /* We accept everything at this stage. */
    return 0;
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X