GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cuál es la diferencia entre insmod y modprobe?

Durante el desarrollo, generalmente usa insmod para cargar un módulo y se le debe dar la ruta del módulo para cargar:

$ insmod filename [module-options]

Es una forma de carga de módulos de bajo nivel, que forma la base de otros métodos de carga de módulos, y es la que usaremos en este libro. Por otro lado, está modprobe, utilizado principalmente por administradores de sistemas o en un sistema de producción. modprobe es un comando inteligente que analiza el archivo modules.dep para cargar primero las dependencias, antes de cargar el módulo dado. Maneja automáticamente las dependencias de los módulos, como lo hace un administrador de paquetes:

$ modprobe module-name
insmod modprobe
Carga el módulo dado como 'insmod /path/to/module.ko' Carga el módulo solo en /lib/modules/$(uname -r). ‘modprobe /home/test/hello.ko’ no funcionará
Las dependencias, si las hay, no se cargan modprobe calcula dependencias, carga las dependencias y luego el módulo principal

¿Cómo modprobe calcula las dependencias?

Modprobe depende de la herramienta depmod para calcular las dependencias. depmod calcula las dependencias de todos los módulos presentes en la carpeta /lib/modules/$(uname -r) y coloca la información de dependencia en el archivo /lib/modules/$(uname -r)/modules.dep

P.ej. kernel/drivers/net/wireless/admtek/adm8211.ko:kernel/net/mac80211/mac80211.ko kernel/net/wireless/cfg80211.ko kernel/drivers/misc/eeprom/eeprom_93cx6.ko

En este caso, se carga primero eeprom_93cx6.ko, cfg80211.ko y luego adm8211.ko

Los módulos se cargan de derecha a izquierda y se eliminan de izquierda a derecha. Entonces, mientras se elimina adm8211.ko, luego se elimina cfg80211.ko y finalmente eeprom_93cx6.ko. Podemos volver a cargar el archivo modules.dep ejecutando el comando "depmod -a"

Resumen

insmod es un comando de administración del sistema para cargar el nombre de archivo del módulo en el núcleo. Más simple pero menos flexible que el comando modprobe. Los mensajes de error de insmod pueden ser vagos, porque el kernel realiza operaciones de módulo internamente y, por lo tanto, envía información de error al registro del kernel en lugar de la salida estándar; ver dmesg.

El comando modprobe utiliza la información en los archivos module.* para ubicar un módulo por nombre en lugar de la ruta completa. modprobe tiene muchas otras características que se describen en el manual.

Los administradores de dispositivos también utilizan la información de dependencia del módulo, en particular udev. Cuando se detecta nuevo hardware, por ejemplo, un nuevo dispositivo USB, se alerta al demonio udevd y se pasa al proveedor, y se leen los ID de productos del hardware. udevd escanea los archivos de dependencia del módulo en busca de un módulo que haya registrado esos ID. Si se encuentra uno, se carga usando modprobe.


Linux
  1. ¿La diferencia entre [[ $a ==Z* ]] y [ $a ==Z* ]?

  2. ¿Cuál es la diferencia entre Redhat y centOS?

  3. ¿Cuál es la diferencia entre module_init e init_module en un módulo del kernel de Linux?

  4. ¿Cuál es la diferencia entre fsck y e2fsck?

  5. ¿Cuál es la diferencia entre adduser y useradd?

¿Cuál es la diferencia entre Linux y Unix?

¿Cuál es la diferencia entre Shell de inicio de sesión y sin inicio de sesión?

¿Cuál es la diferencia entre el comando apt y apt-get?

¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?

¿Cuál es la diferencia entre curl y Wget?

¿Cuál es la diferencia entre ls y l?