Wie finde ich die vom laufenden Kernel verwendeten Boot-Parameter?


Antworten:


70

Du kannst rennen cat /proc/cmdline.

Beispiel:

[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

Versuchen Sie tr ' ' '\n' < /proc/cmdline, Zeilenumbrüche zwischen den Parametern zu erhalten.
Mwfearnley

10

Eine alternative Möglichkeit besteht darin, die Ausgabe von dmesg(Zeile 5 hier) zu überprüfen :

$ 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

Beachten Sie jedoch, dass dies möglicherweise nicht funktioniert, wenn viele Dinge protokolliert wurden (z. B. wenn der Computer lange gelaufen ist), da möglicherweise die ersten Startzeilen aus dem Ringpuffer entfernt wurden.


1

Tatsächlich befindet sich der Parameter zwischen __setup_startund __setup_endim Kernel. Im folgenden Code ist der p->strder Parametername

Der folgende Kernel-Code befindet sich unter 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;
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.