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

53

¿Hay alguna manera de averiguar con qué parámetros arrancó el kernel?

Por ejemplo, si especifico noexec = off en la línea de comando de grub? ¿Puedo ver este tipo de información después de que el sistema haya terminado de iniciarse?

nvm
fuente
relacionado: unix.stackexchange.com/questions/48601/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

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
htorque
fuente
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.

joeytwiddle
fuente
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;
}
byhankswang
fuente