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

53

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

Par exemple, si je spécifie noexec = off sur la ligne de commande grub? Puis-je voir ce genre d'informations après le démarrage du système?

nvm
la source
connexes: unix.stackexchange.com/questions/48601/…
Ciro Santilli a annoncé le

Réponses:

72

Tu peux courir cat /proc/cmdline.

Exemple:

[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
htorque
la source
1
Essayez tr ' ' '\n' < /proc/cmdlined’obtenir des sauts de ligne entre les paramètres.
Mwfearnley
10

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

Cependant, notez que cela peut ne pas fonctionner si de nombreux éléments ont été enregistrés (par exemple, si la machine fonctionne depuis longtemps), car les lignes de démarrage initiales ont peut-être été déplacées du tampon de sonnerie.

Joeytwiddle
la source
1

En réalité, le paramètre est situé entre __setup_startet __setup_enddans le noyau. Dans le code suivant, le p->strest le nom du paramètre.

Le code de noyau suivant est disponible sur 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;
}
byhankswang
la source