¿Cómo encuentro los parámetros de arranque utilizados por el núcleo en ejecución?


Respuestas:


72

Puede ejecutar cat /proc/cmdline.

Ejemplo:

[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

1
Intenta tr ' ' '\n' < /proc/cmdlineobtener saltos de línea entre los parámetros.
mwfearnley

10

Una forma alternativa es verificar la salida de dmesg(línea 5 aquí):

$ 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

Pero tenga en cuenta que esto podría no funcionar si se han registrado muchas cosas (por ejemplo, si la máquina ha estado funcionando durante mucho tiempo) porque las líneas de inicio iniciales pueden haberse eliminado del ringbuffer.


1

En realidad, el parámetro se encuentra entre __setup_starty __setup_enden el núcleo. En el siguiente código, p->stres el nombre del parámetro

El siguiente código del kernel se puede encontrar en 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;
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.