¿Cómo puedo verificar mi configuración de preferencia de kernel?

11

Quiero verificar si mi kernel de Linux es preventivo o no preventivo. ¿Cómo puedo verificar esto usando un comando, algo como uname -a?

daehee
fuente

Respuestas:

10

El hecho de que un kernel sea preventivo o no depende de lo que desea evitar, como en el kernel de Linux, hay varias cosas que pueden tener la preferencia habilitada / deshabilitada por separado.

Si su kernel tiene CONFIG_IKCONFIGy está CONFIG_IKCONFIG_PROChabilitado, puede encontrar su configuración de preferencia a través de /proc/config.gz(si no tiene esto, algunas distribuciones envían la configuración del kernel /boot):

$ gzip -cd /proc/config.gz | grep PREEMPT
CONFIG_TREE_PREEMPT_RCU=y
CONFIG_PREEMPT_RCU=y
CONFIG_PREEMPT_NOTIFIERS=y
# CONFIG_PREEMPT_NONE is not set
# CONFIG_PREEMPT_VOLUNTARY is not set
CONFIG_PREEMPT=y
CONFIG_PREEMPT_COUNT=y
# CONFIG_DEBUG_PREEMPT is not set
# CONFIG_PREEMPT_TRACER is not set

Si tiene CONFIG_IKCONFIG, pero no CONFIG_IKCONFIG_PROC, aún puede sacarlo de la imagen del núcleo con extract-ikconfig.

Chris Down
fuente
Hice un módulo de kernel en frambuesa que dialogó con un sensor externo para pedir temperatura. para hablar con el sensor, debo configurar la entrada y salida de los pines gpio durante un tiempo específico (en ms). y el módulo funciona bien. también lo son los módulos del kernel que no son reemplazados por otros procesos por el planificador, ya que si se adelanta, el tiempo será incorrecto y el resultado obtenido del sensor será incorrecto.
mikmik
2

Un kernel preferente (escritorio de baja latencia) ha sido PREEMPTetiquetado en su nombre de versión ( uname -a). Esto también aparece en /proc/versiony en la cadena de "versión mágica" utilizada para decidir si los módulos pueden / no pueden cargarse en un núcleo dado, por ejemplo

mymodule: version magic '3.4.35 mod_unload ARMv7 p2v8 ' 
              should be '3.4.35 preempt mod_unload ARMv7 p2v8 '

No existe tal etiquetado para CONFIG_PREEMPT_VOLUNTARY, afaik.

PypeBros
fuente