En los sistemas operativos tipo Unix , un dispositivo de bucle , vnd (disco vnode) o lofi (interfaz de archivo de bucle) es un pseudodispositivo que hace que un archivo de computadora sea accesible como un dispositivo de bloque .
Antes de su uso, un dispositivo de bucle debe estar conectado a un archivo existente en el sistema de archivos . La asociación proporciona al usuario una interfaz de programación de aplicaciones ( API ) que permite utilizar el archivo en lugar de un archivo especial de bloques (cf. sistema de archivos del dispositivo ). Por lo tanto, si el archivo contiene un sistema de archivos completo, el archivo puede montarse como si fuera un dispositivo de disco.
Los archivos de este tipo se utilizan a menudo para imágenes ISO de CD e imágenes de disquete . Al montar un archivo que contiene un sistema de archivos mediante un montaje en bucle de este tipo , se puede acceder a los archivos dentro de ese sistema de archivos. Aparecen en el directorio del punto de montaje .
Un dispositivo de bucle puede permitir algún tipo de elaboración de datos durante esta redirección. Por ejemplo, el dispositivo puede ser la versión no cifrada de un archivo cifrado. En tal caso, el archivo asociado con un dispositivo de bucle puede ser otro pseudodispositivo. Esto es especialmente útil cuando este dispositivo contiene un sistema de archivos cifrado. Si se admite, el dispositivo de bucle es en este caso la versión descifrada del archivo cifrado original y, por lo tanto, se puede montar como si fuera un sistema de archivos normal.
Después de montar un archivo que contiene un sistema de archivos, se puede acceder a los archivos de ese sistema a través de la interfaz de sistema de archivos habitual del sistema operativo, sin necesidad de ninguna funcionalidad especial, como leer y escribir en imágenes ISO, en las aplicaciones.
El montaje en bucle tiene varios usos. Es un método conveniente para administrar y editar imágenes de sistemas de archivos sin conexión, que luego se utilizan para el funcionamiento normal del sistema. Esto incluye imágenes de CD o DVD o sistemas de instalación. Se puede utilizar para instalar un sistema operativo en un sistema de archivos sin volver a particionar un disco. También proporciona una segregación permanente de datos, por ejemplo, al simular medios extraíbles en un disco duro más rápido y conveniente o al encapsular un sistema de archivos cifrado.
Varios sistemas operativos tipo Unix proporcionan la funcionalidad del dispositivo de bucle utilizando diferentes nombres.
En Linux, los nombres de los dispositivos se codifican en las entradas de la tabla de símbolos de sus controladores de dispositivo correspondientes. El dispositivo se denomina dispositivo "loop" y los nodos de dispositivo suelen denominarse /dev/loop0 , /dev/loop1 , etc. Se pueden crear con makedev para el directorio de dispositivos estáticos, de forma dinámica mediante las funciones del sistema de archivos del dispositivo ( udev ) o directamente con mknod . La interfaz de usuario de gestión para el dispositivo loop es losetup , que forma parte del paquete util-linux .
A veces, el dispositivo de bucle se denomina erróneamente dispositivo de bucle invertido , pero este término se reserva para un dispositivo de red en sistemas operativos. El concepto de dispositivo de bucle es distinto.
En sistemas derivados de BSD, como NetBSD y OpenBSD , el dispositivo de bucle se denomina "dispositivo de nodo virtual" o "vnd", y generalmente se ubica en /dev/vnd0 , /dev/rvnd0 o /dev/svnd0 , etc., en el sistema de archivos. El programa vnconfig se utiliza para la configuración.
FreeBSD siguió las mismas convenciones que otros sistemas BSD hasta la versión 5, en la que el dispositivo de bucle se incorporó al controlador de disco de memoria ("md"). La configuración ahora se realiza mediante la utilidad mdconfig . [1]
En Solaris / OpenSolaris , el dispositivo de bucle se denomina "interfaz de archivo de bucle" o lofi, [2] y se encuentra en /dev/lofi/1 , etc. SunOS tiene el programa de configuración lofiadm . lofi admite compresión de solo lectura y cifrado de lectura y escritura. También está disponible un controlador de terceros fbk ( File emulates Blockdevice ), para SunOS/Solaris desde el verano de 1988. [3]
UnixWare incluye un controlador de dispositivo cargable dinámicamente, married (7), y la utilidad married (1M). [4] El controlador married permite que un archivo normal sea tratado como un dispositivo. Se puede acceder al archivo normal a través de un dispositivo de bloques, /dev/marry/regfile , o como un dispositivo de caracteres, /dev/marry/rregfile . El comando married también permite cifrar y descifrar el archivo normal.
MacOS implementa un mecanismo de montaje de imágenes nativo como parte de su abstracción de dispositivos de disco de acceso aleatorio. El comando hdiutil attached -imagekey diskimage-class=CRawDiskImage -nomount <filename> hace que un dispositivo de bloque aparezca en /dev como un dispositivo de disco normal y subdispositivos para particiones reconocidas. Las lecturas y escrituras desde esos dispositivos se envían a un proceso auxiliar en modo usuario, que lee los datos del archivo o los escribe en él. En la interfaz de usuario, se activa automáticamente al abrir la imagen de disco. MacOS puede manejar imágenes de disco (.dmg o .iso), CD-ROM o DVD en varios formatos.
El montaje en bucle no estaba disponible en los sistemas operativos Microsoft Windows hasta Windows 7 , donde esta funcionalidad se implementó de forma nativa y está disponible a través de la utilidad diskpart . [5] [6] Sin embargo, la función se agrega a menudo mediante aplicaciones de terceros como Daemon Tools y Alcohol 120% . También se pueden utilizar herramientas disponibles gratuitamente de VMware (Disk Mount Utility) y LTR Data (ImDisk) para lograr una funcionalidad similar. En Windows XP y Vista también es posible utilizar la función de disco duro virtual agregando algún componente de Microsoft Virtual Server 2005 R2. [7]
En A2 , antes AOS y después Bluebottle, se crea un disco virtual basado en archivos con VirtualDisks.Create . Se puede instalar un sistema de archivos en un "disco" de este tipo con VirtualDisks.Install .
Para montar un archivo que contiene una imagen de disco en un directorio se requieren dos pasos:
Estas dos operaciones se pueden realizar utilizando dos comandos separados o mediante indicadores especiales para el comando mount. La primera operación se puede realizar mediante programas como losetup [8] en Linux o lofiadm [9] en SunOS. A modo de ejemplo, si example.img
es un archivo normal que contiene un sistema de archivos y /home/you/dir
es el directorio de un usuario de Linux, el superusuario (root) puede montar el archivo en el directorio ejecutando los dos comandos siguientes:
ejemplo losetup /dev/loop0.imgmontar /dev/loop0 /home/tu/dir
El segundo comando monta el dispositivo en el directorio /home/you/dir
. El efecto general de ejecutar estos dos comandos es que el contenido del archivo se utiliza como un sistema de archivos con raíz en el punto de montaje.
Para identificar un dispositivo de bucle disponible para su uso en los comandos anteriores, el superusuario (root) puede usar:
perdersetup-f
La utilidad de montaje generalmente es capaz de gestionar todo el procedimiento:
mount -o loop ejemplo.img /home/tu/dir
Luego el dispositivo se puede desmontar con el siguiente comando:
desmontar /home/tu/dir# o, después de encontrar el número de bucle asociado, por ejemplo, mount | grep "/home/you/dir"# o losetup -a | grep ejemplo.imgdesmontar /dev/loop<N>
En una interfaz de programación de aplicaciones ( API ) de nivel inferior, la asociación y disociación de un archivo con un dispositivo de bucle se realiza con la llamada al sistema ioctl en un dispositivo de bucle.