Comando depmod en Linux con ejemplos

El comando depmod ( Módulos de dependencia ) se usa para generar una lista de descripción de dependencia de los módulos del kernel y sus archivos de mapas asociados. Esto analiza los módulos del núcleo en el directorio /lib/modules/kernel-release y crea un archivo de dependencia similar a un «Makefile» llamado módulos.depbasado en los símbolos presentes en el conjunto de módulos. Estos módulos generalmente se toman de los directorios especificados en el archivo de configuración o mencionados en la línea de comando. Luego, cuando la pila de módulos se agrega y elimina automáticamente con modprobe, no hay módulos sin los otros módulos relacionados que requieren. Simultáneamente, crea un mapa asociado que correlaciona los identificadores de hardware y los módulos correspondientes que los manejan para el uso de la infraestructura hotplug. Este mapeo asociado específicamente se usa para buscar y encontrar el módulo correcto cuando una unidad de hardware lo solicita. 

El kernel de Linux se basa en depmod y modprobe para enviar los datos sin procesar de sus módulos, en el orden correcto para cargarlos. Las utilidades de comando depmod y modprobe facilitan un kernel modular de Linux manejable para todos los usuarios finales, ingenieros de mantenimiento de distribución, administradores de redes y sistemas. 

Sintaxis: 

depmod [ -a ] [ -b basedir ] [ -e ] [ -F System.map ] [ -n ] [ -v ] [ version ] [ -A ]
       [-n] [-v] [-A] [-P prefix] [-w] [version]

depmod [-e] [-E Module.symvers] [-F System.map] [-m] [-n] [-v] [-P prefix]
       [-w] [version] [filename...]
*** QuickLaTeX cannot compile formula:
 

*** Error message:
Error: Nothing to show, formula is empty

Linux kernel modules would provide unique services called “symbols” for other modules to make use of its utilities. This could be done by using one of the EXPORT_SYMBOL variants in the code. Eventually when a second module uses this symbol, then the second module solely depends on the attributes and functions of the first module. These modular dependencies tend to look complex. 
The main objective of the depmod command is to creates a list of module dependencies by revoking each module under /lib/modules/kernel-release and finds what export symbols are used to quantify its needs. By default, this list is written to modules.dep, and also made available in binary hashed version named modules.dep.bin, in the same specific directory. 

 

  • El comando depmod también crea una lista de símbolos proporcionados por los módulos en el archivo llamado modules.symbols .
  • El comando depmod crea una lista de símbolos en módulos por su versión hash binaria, modules.symbols.bin .
  • depmod guardará la salida de un archivo denominado modules.devname si los módulos proporcionan nombres de dispositivos únicos (devname) que deben completarse en /dev al arrancar mediante una utilidad específica como udev.

Opciones: 

  • -a, –all: sondea y examina minuciosamente todos los módulos del kernel. De manera predeterminada, esta opción está habilitada si no se proporciona ningún nombre de archivo en la línea de comandos.
  • -A, –rápido: esta opción escanea y busca para ver si algún módulo es nuevo además de los que se encuentran en el archivo modules.dep antes de realizar cualquier trabajo: si no se encuentra, se cierra sin problemas en lugar de volver a generar los archivos.
  • -bbasedir, –basedir,basedir: si los módulos no están actualmente en el directorio predeterminado /lib/modules/kernel-version, pero en alguna otra área de preparación, podemos especificar unbasedir que aterriza en el nombre del directorio. Este directorio base se elimina del archivo module.dep resultante , por lo que siempre está listo para moverse a la ubicación predeterminada /lib/modules/kernel-version. Un proveedor de distribución que necesite generar previamente los archivos de metadatos en lugar de volver a ejecutar depmod más tarde encontrará esta opción muy útil.
  • -C, –archivo o directorio de configuración: esta opción en particular anula el directorio de configuración predeterminado en /etc/depmod.d/ .
  • -e, –errsyms: Cuando se combina con la opción -F, esto informa sobre cualquier símbolo específico que un módulo necesita en particular y que no son absolutamente proporcionados por otros módulos o el núcleo. De forma predeterminada, se supone que el kernel proporciona cualquier símbolo que no proporcionen los módulos, pero esta presunción puede anularse cuando los controladores de terceros actualizados adicionalmente no están instalados correctamente o se compilaron con errores.
  • -E, –symvers: depmod cuando se combina con la opción -e, informa cualquier versión de símbolo proporcionada por módulos que no coincida con las versiones de símbolo proporcionadas por el kernel en su Module.symvers. Esta opción es mutuamente incompatible con la opción -F.
  • -F, –filesyms System.map: Suministrado con el System.map producido cuando se creó el kernel, esto permite que la opción -e reporte símbolos no resueltos y no identificados. Esta opción es mutuamente incompatible con -E.
  • -h, –help: Esta opción tiende a imprimir el mensaje de ayuda y salir.
  • -n, –show: esta opción muestra el archivo de dependencia en stdout en lugar de en el árbol /lib/modules.
  • -q, –quiet: esta opción indica a depmod que se mantenga en silencio y no se queje de los símbolos que faltan.
  • -r, –root: esta opción ayuda a algunos usuarios que compilan módulos bajo un ID de usuario no root y luego instalan los módulos como root. Este proceso puede dejar los módulos propiedad del ID de usuario que no es raíz, lo que es propenso a los ataques de los intrusos, aunque el directorio de módulos sea propiedad de la raíz. Si el ID de usuario que no es raíz se ve comprometido en una instancia, un intruso puede sobrescribir los módulos existentes que pertenecen a ese ID de usuario que no es raíz y usar esta exposición para iniciar el acceso a la raíz. Normalmente, los modutils rechazarán los intentos de usar un módulo que no sea propiedad de root. Especificar-r anulará el error y permitirá que root cargue módulos que no son propiedad de root. El uso de -r es una exposición de seguridad importante y no se recomienda ya que el módulo es propenso a sufrir ataques.
  • -s, –syslog: esta opción muestra todos los mensajes de error a través del demonio syslog en lugar de stderr.
  • -u, –unresolved-error: el comando depmod no establece un código de retorno cuando hay símbolos sin resolver presentes en el módulo. Algunas distribuciones quieren un código de retorno distinto de cero en modutils, pero ese cambio puede causar problemas a los usuarios que esperan el comportamiento anterior. Si desea un código de retorno distinto de cero en depmod, especifique -u. En las últimas versiones del kernel de Linux, el comando depmod ignorará silenciosamente el indicador -u y siempre dará un código de retorno distinto de cero para los símbolos no resueltos.
  • -n, –dry-run: esta opción envía los módulos.dep resultantes y los diversos archivos de mapas asociados a la salida estándar en lugar de escribirlos en el directorio del módulo.
  • -P: Esta opción hace que algunas arquitecturas prefijen símbolos con un carácter extraño. Esto menciona un carácter de prefijo (por ejemplo, ‘_’) para ignorar.
  • -v, –verbose: la opción de modo detallado en depmod imprimirá en la salida estándar todos los símbolos de los que depende cada módulo y el nombre de archivo del módulo en particular que proporciona ese símbolo.
  • -V, –version: Esta opción tiende a mostrar la versión de depmod y salir.
  • -w: esta opción muestra un mensaje de advertencia sobre dependencias duplicadas, alias, versiones de símbolos, etc.

Ejemplo: La siguiente es una serie de comandos que ayudan a ilustrar una forma habitual de usar el comando depmod en Linux. Cada comando tiene el prefijo sudo, ya que cada uno de ellos requiere los permisos de root adecuados: 

Recuperando el archivo de la ubicación predeterminada: 

 ln -s /path/to/your-kernel-module.ko /lib/modules/`uname -r`
/sbin/depmod -a
 modprobe your-kernel-module

Cargar y descargar un archivo desde una ubicación distinta a la ubicación predeterminada: 

$ ln -s lkm.ko /lib/modules/2.6.32-21-generic/
$  depmod -a
$ modprobe lkm
$  modprobe -r lkm
lkm here refers to located or kept at any part of the memory.

Operaciones explicadas línea por línea:  

$ln -s /path/to/your-kernel-module.ko /lib/modules/`uname -r`

ln se usa para crear un enlace simbólico a nuestro archivo de módulo en el directorio /lib/modules/kernel-release. El comando uname -r, entre comillas invertidas, es ejecutado por el shell y se traduce a la string apropiada que representa nuestra versión de lanzamiento del kernel. 

Nota: $depmod -a es una lista de dependencias actualizada generada por depmod -a para asegurarse de que el módulo que estamos instalando conozca todos los módulos y dependencias existentes. Modprobe utilizará esta lista de dependencias al instalar el módulo en el tercer comando. 
 

Publicación traducida automáticamente

Artículo escrito por MerlynShelley y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *