mandato strload
Finalidad
Carga y configura Portable Streams Environment (PSE).
Sintaxis
carga de cadena [ -u | -q ] [ F Archivo ] [ -d Lista ] [ -m Lista ]
Descripción
El mandato strload permite al administrador del sistema cargar y descargar controladores y módulos y consultar el estado de carga de PSE y sus dependientes.
De forma predeterminada, el mandato strload carga PSE de acuerdo con el archivo /etc/pse.conf . El distintivo -f permite al administrador utilizar un archivo de configuración alternativo. Los distintivos -d y -m se utilizan para especificar controladores y módulos que no están presentes en los archivos de configuración (por ejemplo, cuando se están desarrollando nuevos controladores). El distintivo -q informa sobre el estado de carga del sistema (existencia de kernel) de los controladores y módulos referenciados.
Archivo de configuración
El archivo de configuración es una base de datos de línea ASCII sin formato. Los comentarios se introducen mediante un signo de almohadilla (#) y continúan hasta el final de la línea. Las líneas en blanco se ignoran. El formulario para cada registro es:
attributes filename [argument [node [minor ...] ] ]Los campos están separados por espacios, tabuladores o ambos. A-(guión) se puede especificar como el valor de campo, lo que indica que se va a utilizar el valor predeterminado. Los campos se definen de la forma siguiente:
| Elemento | Descripción |
|---|---|
| attributes | Describe la extensión a cargar. Los valores aceptables son:
|
| Elemento | Descripción |
|---|---|
| filename | Especifica el archivo de objeto que contiene la extensión. Si el mandato se emite con una "/" (barra inclinada) en el nombre de archivo del controlador o módulo que se va a cargar, descargar o consultar, el mandato strload utiliza el valor del campo de nombre de archivo de forma explícita. Si no hay "/" en la entrada de nombre de archivo, el mandato strload busca primero una copia del controlador o módulo en el directorio actual. Si el controlador o módulo no está en el directorio actual, strload busca el controlador o módulo en el directorio /usr/lib/drivers/pse . |
Nota: Se recomienda que el mandato strload se emita desde el directorio raíz (/). El mandato strload para cargar, descargar y consultar siempre debe emitirse desde el mismo directorio.
El cargador de extensiones de kernel REQUIERE que los nombres de vía de acceso utilizados sean idénticos en la carga, descarga y consultas. Esto, junto con la forma en que strloaddetermina el nombre de archivo, podría causar problemas. Cada byte en el nombre de vía de acceso utilizado por el mandato strload debe coincidir EXACTAMENTE con cada byte posicionalmente correspondiente en el nombre de vía de acceso utilizado por el cargador de extensiones de kernel porque el kernel realiza una strcmp () en el nombre de archivo cuando busca coincidencias. Si el mandato strload se emite desde un directorio diferente para descargar el módulo o controlador, se produce uno de los sucesos siguientes:
- Si el mandato strload no encuentra una copia del controlador o módulo en el nuevo directorio actual, strload intenta descargar el controlador o módulo en el directorio /usr/lib/drivers/pse . Sin embargo, este nombre de vía de acceso puede no ser el mismo que el nombre de vía de acceso que el cargador ha anotado para ese controlador o módulo. Si el nombre de vía de acceso no es el mismo, el mandato strload falla.
- Si el mandato strload encuentra otra copia del módulo o controlador en el nuevo directorio actual, los nombres de vía de acceso son los mismos y el cargador descarga correctamente el controlador o módulo que se ha cargado. Por lo tanto, el mandato strload se ejecuta correctamente, pero es posible que los resultados no sean los deseados por el usuario.
Por ejemplo:
El siguiente escenario (NO recomendado) hace que se descargue "spx", también conocido como "A". Este no es probablemente el efecto deseado.
mkdir /tmp/foo /tmp/bar
cp /usr/lib/drivers/pse/spx /tmp/foo/A
cp /bin/ls /tmp/bar/A
cd /tmp/foo
strload -d A # The loader knows the path and filename as
# "A" because "A" is found in the current
# directory
cd /tmp/bar
strload -q -d A # Reports "yes" because there is "A" in the
# current directory. Note that the file "A"
# in /tmp/bar is NOT the same file "A" in
# /tmp/foo, but the loader does not care
# because it identifies the file by
# pathname.
strload -u -d A # Unloads spx (also known as "A")!A continuación se muestra un escenario de error:
mkdir /tmp/foo2 /tmp/bar2
cp /usr/lib/drivers/pse/spx /tmp/foo2/A
cd /tmp/foo2
strload -d A # The loader knows the path and filename as
# "A"because "A" is found in the current
# directory.
cd /tmp/bar2
strload -q -d A # Answers "no". There is no filename
# in /tmp/bar2 that matches "A", so strload
# prepends pathname "/usr/lib/drivers/pse" to
# "A". "/usr/lib/drivers/pse/A" is not found,
# so strload answers "no".
strload -u -d A # Fails - "A" does not exist.A continuación se muestra un escenario de error:
cd /usr/lib/drivers/pse
strload -d spx # The loader knows the path and filename as
# "spx" because "spx" is found in the
# current directory.
cd /
strload -q -d spx # Answers "no". There is no filename in /
# that matches "spx", so strload prepends
# the pathname "/usr/lib/drivers/pse" to
# "spx". "/usr/lib/drivers/pse/spx" is found
# since it exists, so strload gives
# "/usr/lib/drivers/pse/spx" to the loader.
# The strcmp() fails since
# "/usr/lib/drivers/pse/spx" and "spx" do
# not match exactly.
strload -u -d spx # Fails - "spx" does not exist.
| Elemento | Descripción |
|---|---|
| argument | No tiene ningún significado para el mandato strload . Este campo es opcional. Se pasa a la extensión cuando se llama a su rutina de configuración. Su interpretación es específica de esa prórroga. El argumento predeterminado es el valor delfilename. |
| node | Especifica el nombre del nodo que se va a crear. Este campo es opcional. Sólo se aplica a los controladores y se utiliza como nombre de nodo creado cuando se carga el controlador. De forma predeterminada, el nodo creado es /dev/filename. |
| minor | Especifica los nodos adicionales no clonados que se deben crear para este controlador. Este campo es opcional. Los nombres de nodo se crean añadiendo el número menor al nombre de nodo de controlador clonado. No se pueden dar más de cinco números menores (de 0 a 4), y se crea un nodo para cada uno. |
Los distintivos -d y -m hacen que el archivo de configuración se ignore, a menos que se denomine explícitamente en la línea de mandatos, como se indica a continuación:
strload -f /tmp/my.conf -d newdriverNota: Los distintivos -d y -m no alteran temporalmente el archivo de configuración. Es decir, si el controlador dgb se carga utilizando el archivo de configuración, el distintivo -d intentará volver a cargarlo pero fallará. El archivo de configuración se procesa antes de los distintivos -d y -m .
La variable Lista para los distintivos -d y -m es una lista separada por comas de nombres de archivo, cada uno de los cuales contiene un único controlador o módulo PSE. El proceso de configuración continúa como si se encontrara una línea de uno de los formularios siguientes en el archivo de configuración:
d filename m filenameDistintivos
| Elemento | Descripción |
|---|---|
| -d Lista | Lista los controladores de dispositivo PSE para cargar o descargar. La variable Lista especifica una lista separada por comas de nombres de objeto de controlador. |
| -f Archivo | Configura PSE de acuerdo con la información de configuración contenida en el archivo indicado por la variable Archivo . El archivo de configuración predeterminado es /etc/pse.conf. |
| -m Lista | Lista los módulos PSE para cargar o descargar. La variable Lista especifica una lista separada por comas de nombres de objeto de módulo. |
| -q | Informa del estado de carga de las extensiones. |
| -u | Descarga extensiones. |
Seguridad
Ejemplos
- Si se especifica el mandato siguiente, se carga PSE (si todavía no se ha cargado), eldgbyssbcontroladores del directorio /usr/lib/drivers/pse/ yaootmódulo del directorio actual, pero no utiliza el archivo de configuración:
root# strload -d dgb,ssb -m ./aoot - Para descargar elaootsólo módulo, especifique:
root# strload -u -m ./aoot - Si se especifica el mandato siguiente, se pregunta si elspxexiste el controlador:
y produce la salida siguiente si no es así:root# strload -q -d spxspx : no - A continuación se muestra un archivo de configuración de ejemplo:
La línea 1 carga eldgbextensión de controlador como un dispositivo clonado denominado/dev/dgb. El argumento pasado aldgbla rutina de configuración esdgb.#example configuration file d dgb #line 1 d mux - - 0 #line 2 ds foo #line 3 d+ xtiso tcp /dev/xti/tcp #line 4 d+ xtiso udp /dev/xti/udp #line 5 m aoot #line 6La línea 2 carga elmuxextensión de controlador como un dispositivo clonado denominado/dev/muxy también crea un nombre de dispositivo estándar/dev/mux0con un número menor de 0 (cero). (No se pueden crear más de cinco nombres de dispositivo con números menores de 0 a 4.)
La línea 3 carga elfooextensión de controlador como un dispositivo estándar (no clonado) denominado/dev/foo. El número menor es 0.
Las líneas 4 y 5 cargan elxtisoy configúrelo dos veces: una vez comotcpy una vez comoudp. Los nodos clon creados son/dev/xti/tcpy/dev/xti/udp. La rutina de configuración dextisose llama dos veces: una vez con el argumentotcpy una vez conudp.
La línea 6 carga elaootextensión de módulo. No se crea ningún nodo y se pasa el valor a la rutina de configuraciónaoot.
- Para cargar el controlador dlpi de secuencias, especifique:
strload -f /etc/dlpi.conf
Archivos
| Elemento | Descripción |
|---|---|
| /usr/lib/drivers/pse/* | Contiene extensiones de kernel PSE. |
| /etc/pse.conf | Archivo de configuración PSE predeterminado. |
| / usr / sbin / strload | Contiene el mandato strload . |