Subrutina de montaje o montaje
Finalidad
Hace que un sistema de archivo esté disponible para su utilización.
Biblioteca
Biblioteca C estándarlibc.a)
Sintaxis
Descripción
La subrutina vmount monta un sistema de archivos, con lo que el archivo queda disponible para su uso. La subrutina vmount crea lo que se conoce como un sistema de archivos virtual. Después de montar un sistema de archivos, las referencias al nombre de vía de acceso que se va a montar sobre el directorio raíz en el sistema de archivos montado.
Un directorio sólo se puede montar sobre un directorio, y un archivo sólo se puede montar sobre un archivo. (El archivo o directorio puede ser un enlace simbólico.)
Por lo tanto, la subrutina vmount puede proporcionar los siguientes tipos de montajes:
- Un archivo local a través de un archivo local o remoto
- Un directorio local a través de un directorio local o remoto
- Un archivo remoto a través de un archivo local o remoto
- Un directorio remoto a través de un directorio local o remoto.
Se puede emitir un montaje en un directorio o un archivo si el proceso de llamada tiene autorización de usuario root o está en el grupo de sistemas y tiene acceso de escritura al punto de montaje.
Para montar un dispositivo de bloque, un archivo remoto o un directorio remoto, el proceso de llamada también debe tener autorización de usuario root.
La subrutina mount sólo permite montajes de un dispositivo de bloque sobre un directorio local con el tipo de sistema de ficheros por defecto. La subrutina mount busca en el archivo /etc/filesystems para encontrar una estrofa correspondiente para el sistema de archivos deseado.
Si el directorio en el que intenta montar el sistema tiene el bit sticky establecido en, debe ser propietario de ese directorio o ser el usuario root para que el montaje tenga éxito. Esta restricción sólo se aplica a los montajes de directorio sobre directorio.
Parámetros
- Dispositivo
- Nombre de vía de acceso que identifica el dispositivo de bloque (también denominado archivo especial) que contiene el sistema de archivos físico.
- Vía
- Nombre de vía de acceso que identifica el directorio en el que se va a montar el sistema de archivos.
- distintivos
- Valores que definen las características del objeto que se va a montar. Actualmente estos valores están definidos en el archivo /usr/include/sys/vmount.h:
- MNT_READONLY
- Indica que el objeto que se va a montar es de sólo lectura y que no se permite el acceso de escritura. Si no se especifica este valor, se permite la escritura de acuerdo con la accesibilidad del archivo individual.
- MNT_NOSUID
- Indica que los programas setuid y setgid referenciados a través del montaje no deben ser ejecutables. Si no se especifica este valor, los programas setuid y setgid referenciados a través del montaje pueden ser ejecutables.
- MTN_NODEV
- Indica que las aperturas de archivos especiales de dispositivo referenciados a través del montaje no deben tener éxito. Si no se especifica este valor, es posible que se abran los archivos especiales de dispositivo a los que se hace referencia a través del montaje.
- VMount
- Un puntero a una estructura vmount de longitud variable. Esta estructura se define en el archivo sys/vmount.h.
Los siguientes campos del parámetro VMount deben ser inicializados antes de la llamada a la subrutina vmount:
- vmt_revision
- El código de revisión en vigor cuando se compiló el programa que creó este sistema de archivos virtual. Es el valor VMT_REVISION.
- vmt_length
- La longitud total de la estructura con todos sus datos. Debe ser un múltiplo del tamaño de la palabra (4 bytes) y corresponder con el parámetro Tamaño .
- vmt_flags
- Contiene las características generales de montaje. Se puede especificar el valor siguiente:
- MNT_READONLY
- Se va a crear un sistema de archivos virtual de sólo lectura.
- vmt_gfstype
- El tipo del sistema de archivos genérico subyacente a VMT_OBJECT. Los valores para este campo se definen en el archivo sys/vmount.h e incluyen:
- MNT_JFS
- Indica el sistema de archivos nativo.
- MNT_NFS
- Indica un cliente del sistema de archivos de red.
- MNT_CDROM
- Indica un sistema de archivos de CD-ROM.
- vmt_data
- Una matriz de estructuras que describen datos de longitud variable asociados con la estructura vmount. La estructura consta de los siguientes campos:
- vmt_off
- El desplazamiento de los datos desde el principio de la estructura vmount.
- vmt_size
- El tamaño, en bytes, de los datos.
La matriz consta de los campos siguientes:
- vmt_data[VMT_OBJECT]
- Especifica el nombre del dispositivo, directorio o archivo que se va a montar.
- vmt_data[VMT_STUB]
- Especifica el nombre del dispositivo, directorio o archivo que se va a montar.
- vmt_data[VMT_HOST]
- Especifica el nombre corto (binario) del host propietario del objeto montado. No es necesario especificarlo si VMT_OBJECT es local (es decir, tiene el mismovmt_gfstypecomo / (raíz), la raíz de todos los sistemas de archivos).
- vmt_data[VMT_HOSTNAME]
- Especifica el nombre largo (carácter) del host propietario del objeto montado. No es necesario especificarlo si VMT_OBJECT es local.
- vmt_data[VMT_INFO]
- Especifica la información binaria que se debe pasar a la implementación del sistema de archivos genérico que da soporte a VMT_OBJECT. La interpretación de este campo es específica delgfs_type.
- vmt_data[VMT_ARGS]
- Especifica una representación de serie de caracteres de VMT_INFO.
A la vuelta de la subrutina vmount, se inicializan los siguientes campos adicionales del parámetro VMount:
- vmt_fsid
- Especifica el identificador de dos palabras del sistema de archivos; la interpretación de este identificador depende de la opcióngfs_type.
- vmt_vfsnumber
- Especifica el identificador exclusivo del sistema de archivos virtual. Los sistemas de archivos virtuales no sobreviven a la IPL; tampoco este identificador.
- vmt_time
- Especifica la hora a la que se ha creado el sistema de archivos virtual.
- Tamaño
- Especifica el tamaño, en bytes, del área de datos proporcionada.
Valores de retorno
Tras la finalización satisfactoria, se devuelve un valor de 0. En caso contrario, se devuelve un valor de -1 y se establece la variable global errno para indicar el error.
Códigos de error
Las subrutinas mount y vmount fallan y el sistema de ficheros virtual no se crea si se cumple alguna de las siguientes condiciones:
| Elemento | Descripción |
|---|---|
| EACCES | El proceso de llamada no tiene permiso de escritura en el directorio de apéndice (el directorio que se va a montar). |
| EBUSY | VMT_OBJECT especifica un dispositivo que ya está montado o un objeto que está abierto para escritura, o que la tabla de montaje del kernel está llena. |
| EFAULT | El parámetro VMount apunta a una ubicación fuera del espacio de direcciones asignado al proceso. |
| EFBIG | El tamaño del sistema de archivos es demasiado grande. |
| EFORMAT | Se ha detectado una incoherencia interna en el sistema de archivos. |
| EINVAL | El contenido del parámetro VMount es ininteligible (por ejemplo, el parámetrovmt_gfstypees irreconocible, o la implementación del sistema de ficheros no entiende el VMT_INFO proporcionado). |
| ENOSYS | El tipo de sistema de archivos solicitado no se ha configurado. |
| ENOTBLK | El objeto que se va a montar no es un archivo, directorio o dispositivo. |
| ENOTDIR | Los tipos de VMT_OBJECT y VMT_STUB son incompatibles. |
| EPERM | VMT_OBJECT especifica un dispositivo de bloque y el proceso de llamada no tiene autorización de usuario root. |
| EROFS | Se ha intentado montar un sistema de archivos para leer/escribir cuando el sistema de archivos no puede dar soporte a la escritura. |