¿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?
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.
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. */staticint __init do_early_param(char*param,char*val){conststruct 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. */return0;}
Respuestas:
Puede ejecutar
cat /proc/cmdline
.Ejemplo:
fuente
tr ' ' '\n' < /proc/cmdline
obtener saltos de línea entre los parámetros.Una forma alternativa es verificar la salida de
dmesg
(línea 5 aquí):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.
fuente
En realidad, el parámetro se encuentra entre
__setup_start
y__setup_end
en el núcleo. En el siguiente código,p->str
es el nombre del parámetroEl siguiente código del kernel se puede encontrar en linux-3.4.5 / init / main.c: 388
fuente