Hay dos maneras de construir los módulos del núcleo de Linux: 1. como parte del binario ejecutable del kernel (imagen comprimida), es decir, con CONFIG_*=y
en el momento de la construcción, o 2. como objeto separado del núcleo ( .ko
) que pueden ser cargados y descargados con algunas condiciones, es decir, construidos con CONFIG_*=m
opciones.
En el segundo caso, el .ko
Los archivos se colocan en alguna ubicación estándar, normalmente /lib/modules/
en Linux y su equivalente en Android /system/lib/modules/
o /vendor/lib/modules/
. Estas rutas están codificadas en los binarios que las cargan, por ejemplo insmod
, modprobe
.
En los lanzamientos anteriores a la publicación de la revista Pie ( 1 ) Por defecto, el núcleo de Android se construye sin la opción CONFIG_MODULES=y
por lo que no hay módulos del núcleo construidos como .ko
que pueden cargarse o descargarse con insmod
, modprobe
o rmmod
como es el caso de las distros Linux estándar. Tampoco se exponen a través de /proc/modules
de donde lsmod
lee información. Sin embargo, cada componente del núcleo que puede construirse como módulo tiene una entrada en /sys/module
.
Ahora los módulos que se compilan y cargan como .ko
tiene su correspondiente /sys/module/<module>/initstate
archivo, otros no tienen. De esta manera se puede confirmar si hay módulos cargados:
~$ ls /sys/module/*/initstate
0 votos
En teoría podrían estar en un ramdisk de inicio. También es posible construir módulos pero no empaquetarlos (en cuyo caso no serían utilizables, pero cosas más extrañas han sucedido). Si hay una objetivo debería incluirlo en su pregunta, es decir, ¿está tratando de encontrar un módulo que cree que está disponible, pero que no se ha cargado?