Section: MTOOLS (1)
Updated: 14 Marzo 1997
Index Return to Main
Contents
mtools - utilidades para acceder a discos DOS en UNIX
Mtools es una colección de herramientas de dominio público que permite a sistemas Unix manipular ficheros de MS-DOS: leer, escribir y mover ficheros en un sistema de ficheros MS-DOS (típicamente un disco flexible). Hasta donde es razonable, cada programa intenta emular la orden equivalente de MS-DOS. Sin embargo, las restricciones innecesarias y otras rarezas de DOS no se emulan. Por ejemplo, es posible mover subdirectorios de un subdirectorio a otro.
Mtools es suficiente para dar acceso a sistemas de ficheros MS-DOS. Por ejemplo, órdenes como mdir a: funcionan en el disquete a: sin ningún montaje preliminar ni otro procedimiento de inicio (suponiendo que el Infinity/etc/mtools.confIntegral funciona en su máquina). Con MTOOLS, uno puede cambiar disquetes también sin tener que desmontar y montarlos.
MTOOLS puede encontrarse por lo menos en los sitios siguientes
(y sus espejos):
ftp://prep.ai.mit.edu/pub/gnu/mtools-3.8.tar.gz ftp://linux.wauug.org/pub/knaff/mtools/mtools-3.8.tar.gz ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/mtools-3.8.tar.gz
Antes de informar de un fallo, asegúrese de que no ha sido ya
corregido en los parches Alfa que pueden encontrarse en:
http://www.poboxes.com/Alain.Knaff/mtools ftp://linux.wauug.org/pub/knaff/mtools
Nota: Es altamente probable que la 1ª dirección de Internet haya dejado de existir tras Noviembre de 1997. La dirección wauug es permanente.
Estos parches se denominan mtools-version-ddmm.taz, donde version significa la versión base, dd es el día y mm es el mes. Debido a falta de espacio, yo usualmente sólo dejo el parche más reciente.
Hay una lista de correo de MTOOLS en mtools@linux.wauug.org. Por favor, envíe todos los informes de fallos a esta lista. Puede suscribirse mandando un mensaje con la sola frase `subscribe mtools@linux.wauug.org' en el cuerpo del mensaje a majordomo@linux.wauug.org. Los anuncios de nuevas versiones de mtools también se mandarán a la lista, además de a los grupos de noticias de anuncios sobre Linux. La lista de correo se archiva en http://linux.wauug.org/hypermail/mtools/latest .
Los caminos de fichero en MS-DOS se componen de una letra de dispositivo seguida por dos puntos, un subdirectorio y un nombre de fichero. Sólo la última parte es obligatoria, las primeras son opcionales. Los nombres de fichero sin la letra de dispositivo, para MTOOLS se refieren a ficheros de Unix. Los nombres de directorio pueden emplear como separador '/' o '\'. El uso del separador '\' o comodines requiere que los nombres se entrecomillen para protegerlos del shell. Sin embargo, los comodines en nombres de fichero de Unix no deben encerrarse entre comillas porque queremos que el shell los expanda.
Las rutinas de "concordancia de patrones" de expresiones regulares siguen las reglas al estilo Unix. Por ejemplo, `*' concuerda con todos los ficheros de MS-DOS en lugar de `*.*'. Los bits de atributo de archivo, oculto, lectura exclusiva y sistema, no se tienen en cuenta durante la concordancia de patrones.
Todas las opciones emplean el signo - (menos) como su primer carácter, no / como en MS-DOS.
La mayoría de las órdenes de MTOOLS permiten como parámetros varios nombres de fichero, lo que no sigue los convenios de MS-DOS, pero es más amigable.
La mayoría de órdenes de MTOOLS permiten opciones que les instruyen sobre cómo manejar las coincidencias de nombres de ficheros. Vea la sección sobre coincidencias de nombres de ficheros para más detalles. Todas las órdenes aceptan la opción -V que muestra el número de versión, y la mayoría acepta la opción -v, que cambia al modo prolijo. En modo prolijo, estas órdenes muestran el nombre del fichero de MS-DOS sobre el que actúan, a menos que se diga otra cosa. Vea la sección Órdenes, para una descripción de las opciones específicas de cada orden.
El significado de las letras de dispositivo depende de las arquitecturas objetivo, o destino. Sin embargo, en la mayoría de ellas, la unidad A es la primera unidad de disquete, la unidad B es la segunda unidad de disquete (si la hay), la unidad J es una unidad Jaz, si la hay, y la unidad Z es una unidad Zip (si la hay). En aquellos sistemas donde el nombre del dispositivo derive del ID. SCSI, se supone que la unidad Jaz está en el objetivo SCSI 4, y la Zip en el 5 (éstos son los valores predeterminados de fábrica). En Linux, ambas unidades se suponen en la segunda unidad del bus SCSI (/dev/sdb). Todo esto puede cambiarse mediante un fichero de configuración (vea la sección Configuración).
La orden mcd (InfinitymcdIntegral) se emplea para establecer el dispositivo y el directorio de trabajo actuales (relativos al sistema de ficheros MS-DOS), de otro modo se supone que el valor predeterminado es A:/. Sin embargo, al contrario de en MS-DOS, sólo hay un directorio de trabajo para todas las unidades, y no una por cada unidad.
Esta versión de MTOOLS admite nombres de ficheros largos al estilo de VFAT. Si un nombre de fichero Unix es demasiado largo como para caber en un nombre corto de DOS, se guarda como un nombre largo de VFAT, y se genera un nombre corto acompañante. Este nombre corto es lo que se ve cuando se examina el disco con una versión de DOS anterior a la 7.0 (esto es, anterior a Windows95). La tabla siguiente muestra algunos ejemplos de nombres cortos:
Nombre largo nombre MS-DOS Razón del cambio ------------ ------------- ---------------------- estoesuntest ESTOES~1 nombre demasiado largo alain.knaff ALAIN~1.KNA extensión muy larga prn.txt PRN~1.TXT PRN es un dispositivo .abc ABC~1 no hay ningún nombre frio+calor FRIO_CA~1 carácter ilegal
Como se ve, las siguientes transformaciones ocurren al hacer derivar un nombre corto:
El nombre de fichero inicial al estilo de Unix (corto o largo) se llama también el nombre primario, y el nombre corto derivado de él se llama también el nombre secundario.
Ejemplo:
mcopy /etc/motd a:Nombremuylargo
Mtools crea una entrada VFAT para Nombremuylargo y usa NOMBREMU
como un nombre corto. Nombremuylargo es el nombre primario, y
NOMBREMU es el secundario.
mcopy /etc/motd a:motd
Motd encaja en los límites de nombres de fichero DOS. Mtools no necesita hacer derivar otro nombre. Motd es el nombre primario, y no hay nombre secundario.
En resumen: el nombre primario es el nombre largo, si existe, o el nombre corto si no hay nombre largo.
Aunque VFAT es mucho más flexible que FAT, aún hay nombres que no son aceptables, incluso en VFAT. Aún quedan algunos caracteres ilegales (\"*\\<>/?:|), y los nombres de dispositivo todavía están reservados.
Nombre Unix Nombre largo Razón del cambio ----------- ------------ ------------------------------- prn prn-1 PRN es un nombre de dispositivo ab:c ab_c-1 carácter ilegal
Como puede ver, si un nombre largo es ilegal ocurren las siguientes transformaciones:
Cuando se escribe un fichero en disco, su nombre largo (nombre primario) o corto puede colisionar con el de un fichero o directorio ya existente. Esto puede suceder para todas las órdenes que creen nuevas entradas de directorio, como mcopy, mmd, mren, mmove, mwrite y mread. Cuando ocurre una coincidencia de nombres, MTOOLS le pregunta qué debe hacer. Ofrece algunas elecciones:
Para escoger una de estas acciones, teclee su primera letra cuando se le pregunte. Si emplea una letra minúscula, la acción sólo se aplica a este fichero solo; si usa una letra mayúscula, la acción se aplica a todos los ficheros, y no se le preguntará más.
También puede escoger las acciones (para todos los ficheros) en la línea de órdenes, cuando llame a MTOOLS:
De forma predeterminada, se le pregunta al usuario en el caso de coincidencias en el nombre primario, y se auto-renombra el nombre secundario.
Si ocurre una coincidencia de nombre en un directorio Unix, MTOOLS sólo pregunta si sobreescribir el fichero o saltárselo.
El sistema de ficheros VFAT es capaz de recordar la caja tipográfica (i.e., si las letras son minúsculas o mayúsculas) de los nombres de ficheros. Sin embargo, no se permite que los nombres de ficheros que se diferencian sólo en la caja tipográfica coexistan en el mismo directorio. Por ejemplo, si Ud. almacena un fichero llamado NombreFicheroLargo en un sistema de ficheros VFAT, mdir muestra este fichero como NombreFicheroLargo y no como Nombreficherolargo. Sin embargo, si Ud. luego intenta añadir NombreFicherolargo al mismo directorio, no puede, porque no se mira la caja tipográfica para las comprobaciones de coincidencia de nombres.
El sistema de ficheros VFAT permite almacenar la caja tipográfica de un nombre de fichero en el byte de atributo, si todas las letras del nombre de fichero tienen la misma caja, y si todas las letras de la extensión tienen la misma caja también. MTOOLS usa esta información cuando muestra los ficheros, y también para generar el nombre de fichero Unix cuando copia con mcopy a un directorio Unix. Esto puede llevar a resultados inesperados cuando se aplica a ficheros escritos con una versión anterior a 7.0 de DOS: de hecho, los nombres de ficheros al viejo estilo DOS transforman todas las letras a mayúsculas. Esto es diferente del comportamiento de la versión antigua de MTOOLS que lo que hacía era generar nombres de ficheros Unix con todas las letras en minúsculas.
MTOOLS admite una variedad de formatos que permiten almacenar más datos en discos que lo usual. Debido a las diferentes capacidades de los sistemas operativos, estos formatos no se aceptan en todos los ss.oo. MTOOLS reconoce estos formatos de forma transparente donde se acepten.
Para formatear estos discos, se necesita usar una herramienta
específica del sistema operativo. Para Linux, se pueden encontrar
herramientas adecuadas para disquetes en el paquete
fdutils en los sitios siguientes, aparte quizás de en su
distribución favorita, como Debian o similar:
ftp://linux.wauug.org/pub/knaff/fdutils/. ftp://sunsite.unc.edu/pub/Linux/utils/disk-management/fdutils-*
Vea las páginas del Manual incluidas en ese paquete para más detalles. Use superformat para todos los formatos salvo XDF; y para éste, emplee xdfcopy.
El método más antiguo de meter más datos en un disco es emplear más sectores y más pistas. Aunque el formato estándar usa 80 pistas y 18 sectores (en un disco de alta densidad de 3½''), es posible usar hasta 83 pistas (en la mayoría de las unidades de disquete) y hasta 21 sectores. Este método permite almacenar hasta 1743 kB en un disco de alta densidad de 3½''. Sin embargo, los discos de 21 sectores son el doble de lentos que los estándares de 18 sectores, porque éstos están empaquetados tan juntos que se necesita intercalarlos. Este problema no ocurre en los formatos de 20 sectores.
Estos formatos se aceptan en numerosas utilidades shareware de DOS como fdformat y vgacopy. En su infinita soberbia, Bill Gate$ creyó que él inventó esto, y lo llamó Infinitydiscos DMFIntegral, o Infinitydiscos formateados de WindowsIntegral. Pero en realidad, ¡ya existía desde hacía años! MTOOLS admitía estos formatos en Linux, en SunOS y en el DELL Unix PC.
Al usar sectores más grandes es posible ir más allá de la capacidad que se puede obtener con los sectores estándar de 512 bytes. Esto es así a causa de la cabecera del sector. La cabecera del sector tiene el mismo tamaño, sin importar cuántos bytes de datos haya en el sector. Así, nos ahorramos algo de espacio usando menos, pero más grandes, sectores. Por ejemplo, 1 sector de 4 kB sólo toma espacio para la cabecera una vez, mientras que 8 sectores de 512 bytes tienen también 8 cabeceras, para la misma cantidad de datos útiles.
Este método permite almacenar hasta 1992 kB en un disco de alta densidad de 3½''.
MTOOLS admite estos formatos sólo en Linux.
El formato 2m fue inventado originalmente por Ciriaco García de Celis. También emplea sectores más grandes de lo usual para hacer caber más datos en el disco. Sin embargo, usa el formato estándar (18 sectores de 512 bytes cada uno) en el primer cilindro, para hacer estos discos más fáciles de manejar en DOS. De hecho este método permite tener un sector de arranque de tamaño estándar, que contiene una descripción de cómo debería leerse el resto del disco.
Sin embargo, lo malo de esto es que el primer cilindro puede contener menos datos que los otros. Desafortunadamente, DOS sólo puede manejar discos donde cada pista contenga la misma cantidad de datos. Así que 2m oculta el hecho de que la primera pista contenga menos datos mediante el empleo de una FAT sombreada. (Usualmente, DOS almacena la FAT en dos copias idénticas, por seguridad adicional. XDF almacena sólo una copia, y le dice a DOS que almacena dos. Así se ahorra los mismo que tomaría de espacio la segunda copia.) Esto también significa que Ud. nunca use un disco 2m para almacenar nada más que un sistema de ficheros DOS.
MTOOLS admite estos formatos sólo en Linux.
XDF es un formato de alta capacidad usada por OS/2. Puede contener 1840 kB por disco. Esto es menor que los mejores formatos 2m, pero su ventaja principal es que es rápido: 600 ms por pista. Esto es más rápido que el formato de 21 sectores, y casi tan rápido como el formato estándar de 18 sectores. Para acceder a estos discos, asegúrese de que MTOOLS ha sido compilado con soporte de XDF, y de que se defina la variable use_xdf para la unidad en el fichero de configuración. Vea la sección Compilación de MTOOLS y Infinityvariables misceláneasIntegral, para los detalles sobre cómo hacer esto. El acceso rápido XDF sólo está disponible para núcleos Linux más recientes que el 1.1.34.
MTOOLS admite este formato sólo en Linux.
Cuidado / Atención distribuidores: Si MTOOLS se compila en un núcleo Linux más reciente que 1.3.34, no funcionará en un núcleo más antiguo. Sin embargo, si ha sido compilado en un núcleo más antiguo, aún se ejecutará en un núcleo más nuevo, aunque el acceso XDF será más lento. Se recomienda que los autores de una distribución sólo incluyan los binarios de MTOOLS compilados en núcleos más viejos de 1.3.34 hasta que salga el 2.0, que ya ha salido. Cuando haya salido, como es el caso ya, se pueden (y deben) distribuir los binarios de MTOOLS compilados en núcleos más nuevos. Los binarios de MTOOLS compilados en núcleos anteriores al 1.3.34 no se ejecutarán en un núcleo 2.1 ó posterior.
Todas las órdenes de MTOOLS devuelven 0 en caso de éxito, 1 en caso de fallo total, ó 2 en caso de fallo parcial. Todas las órdenes de MTOOLS realizan unas pocas comprobaciones saludables antes de seguir, para asegurarse de que el disco es desde luego un disco de MS-DOS (no por ejemplo un disco ext2 o minix). Estas comprobaciones pueden rechazar discos parcialmente corruptos, que de todas formas podrían aún ser legibles. Para evitar estas comprobaciones, defina la variable de entorno MTOOLS_SKIP_CHECK o la variable correspondiente del fichero de configuración (vea la sección variables globales).
Un efecto colateral desafortunado al no adivinar el dispositivo correcto (cuando se admiten múltiples capacidades de discos) es un mensaje de error ocasional del controlador de dispositivo. Éstos pueden ser pasados por alto con seguridad.
El código de comprobación de la FAT se atraganta en discos de 1,72 MB mformat-eados con MTOOLS anterior a la versión 2.0.7. Defina la variable de entorno MTOOLS_FAT_COMPATIBILITY (o la variable correspondiente del fichero de configuración, Infinityvariables globalesIntegral) para que no se realice la comprobación de la FAT.
Esta sección explica la sintaxis de los ficheros de configuración para MTOOLS. Los ficheros de configuración se llaman Infinity/etc/mtools.confIntegral y Infinity~/.mtoolsrcIntegral. Si la variable de entorno MTOOLSRC está definida, su contenido se usa como el nombre de fichero para un tercer fichero de configuración. Estos ficheros de configuración describen los siguientes elementos:
Infinity/etc/mtools.confIntegral es el fichero de configuración global para todo el sistema, y Infinity~/.mtoolsrcIntegral es el fichero de configuración privado del usuario.
En algunos sistemas, el fichero de configuración se llama Infinity/etc/defaults/mtools.confIntegral o /usr/local/etc/mtools.conf en su lugar.
Los ficheros de configuración están construidos a base de secciones. Cada sección empieza con una palabra reservada que la identifica, seguida por dos puntos. Luego vienen asignaciones de variables y opciones. Las asignaciones de variables toman la siguiente forma: nombre=valor
Opciones son palabras reservadas solitarias sin que las siga un signo igual ni un valor. Una sección acaba o al final del fichero o donde empiece la siguiente.
Las líneas que comiencen con un signo sostenido (#) son comentarios. Los caracteres nueva-línea son equivalentes a espacio en blanco (excepto donde acaben un comentario). El fichero de configuración es insensible a la caja tipográfica, excepto para elementos encerrados entre comillas (como nombres de ficheros).
Para la mayoría de las plataformas, MTOOLS contiene valores predeterminados razonables para unidades físicas de disquete codificados en el programa compilado. De forma que uno usualmente no necesita molestarse tocando el fichero de configuración, si todo lo que uno quiere hacer con MTOOLS es acceder a las disqueteras. Por otra parte, se necesita el fichero de configuración si uno también quiere usar MTOOLS para acceder a las particiones del disco duro y a los ficheros imagen de DOSEmu.
Las opciones globales se pueden poner a 1 ó a 0.
Se reconocen las siguientes opciones globales:
Ejemplo: Insertar la siguiente línea en su fichero de
configuración hace que MTOOLS se pase las comprobaciones
salubres:
MTOOLS_SKIP_CHECK=1
Las variables globales también se pueden definir en el
entorno:
export MTOOLS_SKIP_CHECK=1
Las variables globales de cadena se pueden poner a cualquier valor:
Las opciones y valores específicas de cada unidad pueden describirse en una sección de la unidad correspondiente. Una sección de unidad empieza con drive "letra-unidad" :
Luego vienen pares variable=valor y opciones.
Ésta es una muestra de una descripción de unidad:
drive a: file="/dev/fd0" use_xdf=1
La información de geometría describe las características físicas del disco. Tiene tres propósitos:
Una información de geometría errónea puede conducir a errores muy extraños. Por eso yo recomiendo vivamente que Ud. no use la configuración de geometría a menos que realmente la necesite.
Se dispone de las siguientes variables relacionadas con la geometría:
Ejemplo: la siguiente sección de unidad describe una unidad de 1,44 MB:
drive a: file="/dev/fd0H1440" fat_bits=12 cylinders=80 heads=2 sectors=18
Se dispone de las siguientes descripciones abreviadas de geometría:
Las descripciones de formato abreviado pueden enmendarse. Por ejemplo, 360k sectors=8 describe un disco de 320 kB y es equivalente a: fat_bits=12 cylinders=40 heads=2 sectors=8
Por otra parte, se dispone de las siguientes opciones:
Se dispone de las siguientes variables de unidad de propósito general:
Sólo la variable file es obligatoria. Los otros parámetros pueden dejarse sin poner. En ese caso se emplea un valor predeterminado o auto-detectado.
Es posible suministrar múltiples descripciones para una unidad. En ese caso, las descripciones se prueban en orden hasta que se encuentre una que encaje. Las descripciones pueden fallar por varias razones:
Las definiciones múltiples son útiles cuando se usen
dispositivos físicos que son sólo capaces de admitir una sola
geometría de disco. Ejemplo:
drive a: file="/dev/fd0H1440" 1.44m drive a: file="/dev/fd0H720" 720k
Esto le dice a mtools que use /dev/fd0H1440 para discos 1.44m (de alta densidad) y /dev/fd0H720 para discos 720k (de doble densidad). En Linux, esta característica no se necesita realmente, puesto que el dispositivo /dev/fd0 es capaz de manejar cualquier geometría.
Uno puede también emplear descripciones múltiples de unidad para acceder a ambas unidades físicas a través de una letra de unidad:
drive z: file="/dev/fd0" drive z: file="/dev/fd1"
Con esta descripción, mdir z: accede a la primera unidad física si contiene un disco. Si la primera unidad no contiene un disco, mtools comprueba la segunda unidad.
Cuando se empleen ficheros de configuración múltiples, las descripciones de unidad en los ficheros que se analicen en último lugar tienen preferencia sobre las de la misma unidad en ficheros analizados anteriormente. Para evitar esto, emplee las palabras reservadas drive+ o +drive en vez de drive. La primera añade una descripción al final de la lista (esto es, se probará en último lugar), y la primera la añade al principio de la lista.
Si Ud. vive en los EE.UU., en Europa Occidental o en Australia, puede omitir esta sección.
DOS emplea un mapa de códigos de caracteres distinto de Unix. Los caracteres de 7 bits aún tienen el mismo significado, sólo los caracteres con el octavo bit a uno se ven afectados. Para empeorar las cosas, hay disponibles varias tablas de conversión dependiendo del país donde Ud. esté. La apariencia de los caracteres se define mediante páginas de código. Estas páginas de código no son las mismas para todos los países. Por ejemplo, algunas páginas de código no contienen letras mayúsculas acentuadas. Por otra parte, algunas páginas de código contienen caracteres que no existen en Unix, como ciertos caracteres para dibujar líneas o consonantes acentuadas empleadas en algunos países de Europa Oriental. Esto afecta a dos cosas, relativas a nombres de ficheros:
Mtools considera los nombres de fichero introducidos en la línea de órdenes como que tienen el mapa de Unix, y traduce los caracteres para obtener los nombres cortos. Por omisión, se emplea el código de página 850 con el mapa suizo mayúsculas/minúsculas. Yo escogí esta página de código porque su conjunto de caracteres existentes es el que más se parece al de Unix. Ítem más, esta página de código cubre la mayoría de caracteres en uso en los EE.UU., Australia y Europa Occidental. Sin embargo, es aún posible escoger un mapa diferente. Hay dos métodos: la variable country y tablas explícitas.
La variable COUNTRY se recomienda para gente que también tiene acceso a los ficheros del sistema MS-DOS y documentación. Si Ud. no tiene acceso a éstos, yo le sugeriría que mejor usara las tablas explícitas en vez de esto.
Sintaxis:
COUNTRY="país[,[pág-cod], fichero-país]"
Esto le dice a mtools que emplee una tabla de traducción de Unix a DOS que concuerde con país y una tabla de minúsculas a mayúsculas para país y que emplee el fichero fichero-país para obtener la tabla de minúsculas a mayúsculas. El código del país es muy a menudo el prefijo telefónico del país. Refiérase a la página de ayuda de DOS en "country" para más detalles. Los parámetros pág-cod y el fichero-país son opcionales. Por favor no teclee los corchetes, están ahí sólo para decirle qué parámetros son opcionales. El fichero fichero-país se suministra con MS-DOS, y normalmente se llama InfinityCOUNTRY.SYSIntegral, y se guarda en el directorio InfinityC:\DOSIntegral. En la mayoría de los casos, no lo necesita, puesto que las tablas de traducción más comunes están compiladas en mtools. Así que no se preocupe si Ud. está en una caja (computador) con sólo Unix, que no trae este fichero.
Si no se da pág-cod, se emplea una página de código predeterminada por país. Si no se da el parámetro fichero-país, se emplean valores predeterminados codificados en el programa compilado para la tabla minúsculas a mayúsculas. Esto es útil para sistemas Unix distintos de Linux, que pueden no tener disponible el fichero InfinityCOUNTRY.SYSIntegral a mano.
Las tablas de Unix a DOS no están contenidas en el fichero InfinityCOUNTRY.SYSIntegral, y entonces mtools siempre emplea valores predeterminados codificados en el programa compilado para éstas. De forma que sólo se admite una cantidad limitada de páginas de código. Si su página de código preferida falta, o si Ud. conoce el nombre del fichero de Windows95 que contiene este mapa, por favor, mándeme unas líneas a Alain.Knaff@poboxes.com.
La variable COUNTRY también puede definirse empleando el entorno.
Las tablas de traducción pueden describirse en el mismo fichero de configuración. Se necesitan dos tablas: primero la tabla de DOS a Unix, y luego la de minúsculas a mayúsculas. Una tabla de DOS a Unix empieza con la palabra reservada tounix, seguida por dos puntos y 128 números hexadecimales. Una tabla de minúsculas a mayúsculas comienza con la palabra reservada fucase, seguida por dos puntos y 128 números exadecimales.
Las tablas sólo muestran las traducciones para caracteres cuyos códigos son mayores que 128, porque la traducción de los códigos menores es trivial.
Ejemplo:
tounix: 0xc7 0xfc 0xe9 0xe2 0xe4 0xe0 0xe5 0xe7 0xea 0xeb 0xe8 0xef 0xee 0xec 0xc4 0xc5 0xc9 0xe6 0xc6 0xf4 0xf6 0xf2 0xfb 0xf9 0xff 0xd6 0xdc 0xf8 0xa3 0xd8 0xd7 0x5f 0xe1 0xed 0xf3 0xfa 0xf1 0xd1 0xaa 0xba 0xbf 0xae 0xac 0xbd 0xbc 0xa1 0xab 0xbb 0x5f 0x5f 0x5f 0x5f 0x5f 0xc1 0xc2 0xc0 0xa9 0x5f 0x5f 0x5f 0x5f 0xa2 0xa5 0xac 0x5f 0x5f 0x5f 0x5f 0x5f 0x5f 0xe3 0xc3 0x5f 0x5f 0x5f 0x5f 0x5f 0x5f 0x5f 0xa4 0xf0 0xd0 0xc9 0xcb 0xc8 0x69 0xcd 0xce 0xcf 0x5f 0x5f 0x5f 0x5f 0x7c 0x49 0x5f 0xd3 0xdf 0xd4 0xd2 0xf5 0xd5 0xb5 0xfe 0xde 0xda 0xd9 0xfd 0xdd 0xde 0xaf 0xb4 0xad 0xb1 0x5f 0xbe 0xb6 0xa7 0xf7 0xb8 0xb0 0xa8 0xb7 0xb9 0xb3 0xb2 0x5f 0x5f fucase: 0x80 0x9a 0x90 0xb6 0x8e 0xb7 0x8f 0x80 0xd2 0xd3 0xd4 0xd8 0xd7 0xde 0x8e 0x8f 0x90 0x92 0x92 0xe2 0x99 0xe3 0xea 0xeb 0x59 0x99 0x9a 0x9d 0x9c 0x9d 0x9e 0x9f 0xb5 0xd6 0xe0 0xe9 0xa5 0xa5 0xa6 0xa7 0xa8 0xa9 0xaa 0xab 0xac 0xad 0xae 0xaf 0xb0 0xb1 0xb2 0xb3 0xb4 0xb5 0xb6 0xb7 0xb8 0xb9 0xba 0xbb 0xbc 0xbd 0xbe 0xbf 0xc0 0xc1 0xc2 0xc3 0xc4 0xc5 0xc7 0xc7 0xc8 0xc9 0xca 0xcb 0xcc 0xcd 0xce 0xcf 0xd1 0xd1 0xd2 0xd3 0xd4 0x49 0xd6 0xd7 0xd8 0xd9 0xda 0xdb 0xdc 0xdd 0xde 0xdf 0xe0 0xe1 0xe2 0xe3 0xe5 0xe5 0xe6 0xe8 0xe8 0xe9 0xea 0xeb 0xed 0xed 0xee 0xef 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff
La primera tabla hace corresponder códigos de caracteres DOS a códigos de caracteres Unix. Por ejemplo, el carácter DOS de número 129. Éste es una u con diéresis: 'ü'. Para traducirla a Unix, miramos al carácter número 1 en la primera tabla (1 = 129 - 128). Éste es 0xfc. (Ojo, la numeración comienza en 0.) La segunda tabla hace corresponder letras minúsculas DOS con letras mayúsculas DOS. La misma letra u con diéresis, 'ü' se corresponde con el carácter 0x9a que es una u con diéresis mayúscula, esto es 'Ü', en DOS.
Si un nombre existente MS-DOS contiene caracteres Unicode mayores que 256, éstos se traducen a subrayados o a caracteres que se parezcan visualmente. Por ejemplo, las consonantes acentuadas se traducen a sus correspondientes sin acento. Esta traducción se utiliza para mdir y para los nombres de ficheros Unix generados por mcopy. Linux admite Unicode también, pero desafortunadamente muy pocas aplicaciones lo admiten como para andar preocupándome con esto en mtools. Lo más importante, xterm aún no puede mostrar Unicode. Si hay suficiente demanda, podría incluir soporte para Unicode en los nombres de ficheros Unix también.
Cuidadín: Cuando se borran ficheros con mtools, el subrayado concuerda con todos los caracteres que no puedan representarse en Unix. ¡Tenga cuidadín con mdel!
Los ficheros de configuración se analizan en el orden siguiente:
Las opciones descritas en el último fichero tienen preferencia sobre las descritas en los ficheros anteriores. Las unidades definidas en ficheros anteriores persisten si no se sustituyen o redefinen en los últimos. Por ejemplo, las unidades A y B pueden definirse en Infinity/etc/mtools.confIntegral y las unidades C y D pueden definirse en Infinity~/.mtoolsrcIntegral . Sin embargo, si Infinity~/.mtoolsrcIntegral también describe la unidad A, esta nueva descripción sustituiría a la de la unidad A de Infinity/etc/mtools.confIntegral en vez de añadirla a él. Si Ud. quiere añadir una nueva descripción de una unidad ya descrita en un fichero anterior, necesita emplear la palabra reservada +drive o drive+.
La sintaxis descrita aquí es nueva para la versión mtools-3.0. La sintaxis antigua orientada a la línea aún se admite. Cada línea que comience con una sola letra se considera como una descripción de unidad al estilo antiguo. Las secciones de unidad al viejo y al nuevo estilo pueden mezclarse en el mismo fichero de configuración, para que la actualización sea más fácil. De todas formas el soporte para la vieja sintaxis se eliminará alguna vez, y para desaconsejar su uso, a propósito omito aquí su descripción.
Esta sección describe las órdenes disponibles de mtools, y los parámetros que acepta cada una. Las opciones que son comunes a todas las órdenes de mtools no se describen aquí, vea InfinityargumentosIntegral para su descripción.
Mattrib se emplea para cambiar los atributos de ficheros MS-DOS. Tiene la siguiente sintaxis:
mattrib [-a|+a] [-h|+h] [-r|+r] [-s|+s] ficheromsdos [ ficheromsdos ... ]
Mattrib añade atributos a un ficheros MS-DOS (con el operador `+') o los quita (con el operador `-').
Mattrib admite los siguientes atributos:
La orden mbadblocks se emplea para escudriñar un disquete MS-DOS y marcar sus bloques malos sin usar como malos. Emplea la sintaxis siguiente:
mbadblocks unidad:
Mbadblocks escudriña un disquete MS-DOS buscando bloques malos. Todos los bloques malos sin usar se marcan como tales en la FAT. Esto está pensado para emplearse justo tras mformat. No está pensado para salvar discos malos.
debería (pero aún no lo hace :-( ) también intentar salvar los bloques malos que estén en uso leyéndolos repetidamente, y luego marcarlos como malos.
La orden mcd se emplea para cambiar el directorio de trabajo de mtools en el disco de MS-DOS. Emplea la sintaxis siguiente:
mcd [dirmsdos]
Sin argumentos, mcd informa de la unidad y directorio de trabajo en curso. De otra forma, mcd cambia la unidad en curso y el directorio de trabajo en curso relativos a un sistema de ficheros MS-DOS.
La variable de entorno MCWD puede emplearse para localizar el fichero donde se almacena la información sobre la unidad y directorio de trabajo en curso. El valor predeterminado es Infinity$HOME/.mcwdIntegral. La información en este fichero se pasa por alto si el fichero es más antiguo de 6 horas.
Mcd devuelve 0 en caso de éxito ó 1 en caso de fallo.
Al contrario de las versiones de MS-DOS de CD, mcd puede emplearse para cambiar a otro dispositivo. Puede ser interesante borrar los ficheros viejos Infinity.mcwdIntegral al salir de la cuenta.
La orden mcopy se emplea para copiar ficheros MS-DOS a o desde Unix. Emplea la sintaxis siguiente:
mcopy [-tnvmoOsSrRA] ficherofuente ficherodestinomcopy [-tnvmoOsSrRA] ficherofuente [ ficherofuente... ] directoriodestinomcopy [-tnvm] ficherofuenteMSDOS
Mcopy copia el fichero especificado al fichero nombrado, o copia múltiples ficheros al directorio nombrado. Fuente y destino pueden ser ficheros de MS-DOS o de Unix.
El empleo de una letra designando una unidad en los ficheros MS-DOS, `a:' por ejemplo, determina la dirección de la transferencia. Una falta de designación de unidad implica un fichero Unix cuyo camino empiece en el directorio en curso. Si se especifica una letra de unidad fuente sin nombre de fichero adjunto (p.ej., mcopy a: .), se copian todos los ficheros de esa unidad.
Si sólo se suministra un solo parámetro fuente de MS-DOS (p.ej., "mcopy a:fuu.exe"), se supone un destino que es el directorio en curso (`.').
Un nombre de fichero `-' significa la entrada estándar o la salida estándar, dependiendo de su posición en la línea de órdenes.
Mcopy acepta las opciones siguientes en la línea de órdenes:
Al contrario que en MS-DOS, el operador '+' (añadir) de MS-DOS no
se admite. Sin embargo, Ud. puede emplear mtype para
producir el mismo efecto:
mtype a:fichero1 a:fichero2 a:fichero3 > ficheroUnix mtype a:fichero1 a:fichero2 a:fichero3 | mcopy - a:ficheroMsdos
La orden mdel se emplea para borrar un fichero MS-DOS. Su sintaxis es:
mdel [-v] ficheromsdos [
ficheromsdos ... ]
Mdel borra ficheros en un sistema de ficheros MS-DOS.
Mdel pide verificación antes de borrar un fichero de lectura exclusiva.
La orden mdeltree se emplea para borrar un directorio MS-DOS. Su sintaxis es:
mdeltree [-v] directoriomsdos
[directoriomsdos...]
Mdeltree borra un directorio, y todos los ficheros y subdirectorios que contenga, de un sistema de ficheros MS-DOS. Es un error que el directorio a borrar no exista.
La orden mdir se emplea para mostrar un directorio MS-DOS. Su sintaxis es:
mdir [-w] directoriomsdos
mdir [-f] [-w] [-a] ficheromsdos [ ficheromsdos...]
Mdir muestra los contenidos de un directorio MS-DOS.
Mdir admite las siguientes opciones en la línea de órdenes:
Ocurre un error si un componente del camino no es un directorio.
La orden mformat se emplea para añadir un sistema de ficheros MS-DOS a un disquete formateado a bajo nivel. Su sintaxis es:
mformat [-t cilindros] [-h
cabezas] [-s sectores] [-l
etiqueta_volumen] [-F] [-I
fsVersión] [-S tamañocódigo] [-2
sectores_en_pista_0] [-M
tamaño_sector_software] [-a] [-X]
[-C] [-H sectores_ocultos] [-r
sectores_raíz] [-B sector_arranque]
[-k] unidad:
Mformat añade un sistema de ficheros MS-DOS mínimo (sector de arranque, FAT, y directorio raíz) a un disquete que ya ha sido formateado por un formateo Unix de bajo nivel.
Se admiten las siguientes opciones: (Las opciones S, 2, 1 y M pueden no existir si esta copia de mtools se ha compilado sin la opción USE_2M.)
Para formatear un disquete a una densidad distinta de la predeterminada, Ud. debe suministrar (por lo menos) aquellos parámetros en la línea de órdenes que sean diferentes de los predeterminados.
Mformat devuelve 0 en caso de éxito ó 1 si falla.
No graba información sobre bloques malos en la FAT, emplee mkmanifest para eso.
La orden mkmanifest se emplea para crear un guión del shell (lista de empaquetar) para restaurar nombres de ficheros Unix. Su sintaxis es:
mkmanifest [ ficheros ]
Mkmanifest crea un guión del shell que ayuda en la restauración de nombres de ficheros Unix que resultaron alterados por las restricciones de los nombres de ficheros MS-DOS. Los nombres de ficheros MS-DOS están restringidos a un nombre de 8 caracteres, extensiones de 3 caracteres, letras sólo en mayúsculas, no nombres de dispositivos y no caracteres ilegales.
El programa mkmanifest es compatible con los métodos empleados en pcomm, arc, y mtools para cambiar nombres de ficheros Unix perfectamente buenos de forma que encajen en las restricciones de MS-DOS. Esta orden sólo es útil si el sistema destino que leerá el disquete no puede manejar nombres largos de vfat.
Ud. quiere copiar los siguientes ficheros Unix a un disquete MS-DOS (empleando la orden mcopy).
nombre_muy_largo masia.2.puntos ilegal: bien.c prn.dev Capital
Mcopy convierte los nombres a:
nombre_m masiax2.pun ilegalx bien.c xrn.dev capital
La orden:
mkmanifest nombre_muy_largo masia.2.puntos ilegal: bien.c prn.dev Capital >manifiesto
produciría lo siguiente:
mv nombre_m nombre_muy_largo mv masiax2.pun masia.2.puntos mv ilegalx ilegal: mv xrn.dev prn.dev mv capital Capital
Observe que "bien.c" no requirió ninguna conversión, por lo tanto no apareció en la salida.
Suponga que he copiado estos ficheros desde el disquete a otro sistema Unix, y que ahora quiero los ficheros de vuelta con sus nombres originales. Si el fichero "manifiesto" (la salida capturada antes) se envió junto con esos ficheros, se podría emplear para convertir los nombres de ficheros.
Los nombres cortos generados por mkmanifest siguen el viejo convenio (de mtools-2.0.7) y no el de Windows 95 y mtools-3.0.
La orden minfo muestra los parámetros de un sistema de
ficheros DOS, como el número de sectores, cabezas y cilindros.
También muestra una línea de orden mformat que puede emplearse para
crear un sistema de ficheros DOS similar en otro medio de
almacenamiento masivo. Sin embargo, esto no funciona con medios de
almacenamiento 2m o Xdf, ni con sistemas de ficheros DOS 1.0. La
sintaxis es: minfo unidad:
Minfo admite la siguiente opción:
La orden mlabel añade una etiqueta de volumen a un
disco. Su sintaxis es: mlabel [-vcs]
unidad:[nueva_etiqueta]
Mlabel muestra la etiqueta de volumen actual, si existe. Si no se da nueva_etiqueta, y si tampoco se han dado las opciones c ni s, se le pide al usuario una nueva etiqueta de volumen. Para borrar una etiqueta de volumen existente, pulse simplemente Intro cuando se le pregunte.
Se toma un cuidado razonable para crear una etiqueta de volumen válida en MS-DOS. Si se especifica una etiqueta inválida, mlabel cambia la etiqueta (y muestra la nueva etiqueta si está activo el modo prolijo). Mlabel devuelve 0 en caso de éxito ó 1 en caso de fallo.
Mlabel admite las siguientes opciones:
La orden mmd se emplea para construir un subdirectorio de MS-DOS. Su sintaxis es:
mmd [-voOsSrRA] directoriomsdos [ directoriomsdos... ]
Mmd construye un nuevo directorio en un sistema de ficheros MS-DOS. Ocurre un error si el directorio ya existe.
La orden mmount se emplea para montar un disco de MS-DOS. Sólo está disponible en Linux, puesto que sólo es útil si el núcleo del S.O. permite configurar la geometría del disco. Su sintaxis es:
mmount unidadmsdos [args-de-mount]
Mmount lee el sector de arranque de un disco MS-DOS, configura la geometría de la unidad, y finalmente lo monta pasándole args-de-mount a mount. Si no se dan argumentos para mount, se emplea el nombre del dispositivo. Si el disco está protegido contra escritura, automáticamente se monta como de lectura exclusiva.
La orden mmove se emplea para mover o renombrar un fichero o subdirectorio existente de MS-DOS. Su sintaxis es:
mmove [-voOsSrRA] ficherofuente ficherodestino
mmove [-voOsSrRA] ficherofuente [ ficherofuente... ] directoriodestino
Mmove mueve o renombra un fichero o subdirectorio existente de MS-DOS. Al contrario de la versión de MS-DOS de MOVE, mmove es capaz de mover subdirectorios.
La orden mpartition se emplea para crear sistemas de ficheros MS-DOS como particiones. Está pensado para emplearse en sistemas no Linux, esto es, sistemas donde no están disponibles ni fdisk ni acceso fácil a los dispositivos SCSI. Esta orden sólo funciona en unidades donde se ha definido la variable de partición, partition.
mpartition -p unidad
mpartition -r unidad
mpartition -I unidad
mpartition -a unidad
mpartition -d unidad
mpartition -c [-s sectores]
[-h cabezas] [-t cilindros]
[-v [-T tipo] [-b
comienzo] [-l longitud] [-f]
Mpartition admite las siguientes operaciones:
Si no se da ninguna operación, se muestran las definiciones actuales.
Para las creaciones de particiones, se dispone de las siguientes opciones:
La siguiente opción está disponible para todas las operaciones que modifiquen la tabla de particiones:
La siguiente opción está disponible para todas las operaciones:
La orden mrd se emplea para borrar un subdirectorio de MS-DOS. Su sintaxis es:
mrd [-v] directoriomsdos [
directoriomsdos... ]
Mrd borra un directorio de un sistema de ficheros MS-DOS. Ocurre un error si el directorio no existe o no está vacío.
La orden mren se emplea para renombrar o mover un fichero o subdirectorio existente de MS-DOS. Su sintaxis es:
mren [-voOsSrRA] ficherofuente
ficherodestino
Mren renombra un fichero existente en un sistema de ficheros MS-DOS.
En modo prolijo, Mren muestra el nuevo nombre de fichero si el nombre suministrado es inválido.
Si se emplea la primera sintaxis (sólo un ficherofuente), y si el nombre destino no contiene barras inclinadas ni dos puntos, el fichero (o subdirectorio) se renombra en el mismo directorio, en vez de moverse al directorio actual de mcd como sería el caso con mmove. Al contrario de la versión MS-DOS de REN, mren puede emplearse para renombrar directorios.
La orden mtoolstest se emplea para comprobar los ficheros de configuración de mtools. Para llamarla, simplemente teclee mtoolstest sin ningún argumento. Mtoolstest lee los ficheros de configuración de mtools, e imprime la configuración acumulada de los ficheros de configuración de mtools en stdout (la salida estándar). La salida se puede emplear como un mismo fichero de configuración (aunque puede que Ud. quiera quitar cláusulas redundantes). Ud. puede emplear este programa para convertir ficheros de configuración en el estilo antiguo al nuevo.
La orden mtype se emplea para mostrar los contenidos de un fichero MS-DOS. Su sintaxis es:
mtype [-ts] ficheromsdos [
ficheromsdos... ]
Mtype muestra el fichero MS-DOS especificado en la pantalla, o en la salida estándar.
Además de las opciones normales, Mtype permite las siguientes:
La orden mcd puede emplearse para establecer el dispositivo y el directorio de trabajo actuales (relativos a MS-DOS), si no el valor predeterminado es A:/.
Mtype devuelve 0 en caso de éxito, 1 en caso de fallo total, ó 2 en caso de fallo parcial.
Al contrario de la versión MS-DOS de TYPE, mtype permite varios argumentos.
La orden mzip se emplea para dar órdenes específicas de discos ZIP en Solaris o HP/UX. Su sintaxis es:
mzip [-epqrwx]
Mzip permite las siguientes opciones en la línea de órdenes:
Para eliminar la contraseña, establézcalo a uno de los modos sin contraseña -r o -w: mzip entonces le pedirá la contraseña, y desbloqueará el disco. Si Ud. ha olvidado la contraseña, puede eliminarla formateando el disco a bajo nivel (mediante el programa de configuración de la BIOS de su adaptador SCSI).
El disco ZipTools suministrado con la unidad también está protegido con contraseña. En DOS o en un Mac, esta contraseña se quita automáticamente una vez que el ZipTools se ha instalado. De varios artículos publicados en la USENET, aprendí que la contraseña para el disco de herramientas es APlaceForYourStuff (``Un sitio para sus cosas''). Mzip conoce esta contraseña, y la prueba en primer lugar, antes de pedirle una contraseña. Así que mzip -w z: desbloquea el disco de herramientas. El disco de herramientas está formateado de una forma especial de forma que sea utilizable en un PC y en un McIntosh. En un PC, el sistema de ficheros de Mac aparece como un fichero oculto llamado Infinitypartishn.macIntegral. Ud. puede borrarlo para recuperar los 50 megabytes de espacio que toma el sistema de ficheros Mac.
El guión del shell xcopy se emplea para copiar recursivamente un directorio a otro. Su sintaxis es:
xcopy directoriofuente
directoriodestino
Si el directoriodestino no existe, se crea. Si existe, los ficheros de directoriofuente se copian en él, y no se crea ningún subdirectorio llamado directoriofuente, al revés de con cp -rf.
Esta orden es un poco una colección de cosas que funcionan no se sabe cómo. Una implementación correcta tendría que llevar a reescribir varias partes significativas de mtools, pero desafortunadamente yo no tengo ahora mismo tiempo para eso. Lo peor de esta implementación es que es ineficiente en algunas arquitecturas (varias llamadas sucesivas a mtools, lo que deja inútil el sistema de `caché' de mtools).
Para compilar mtools, primero llame a ./configure antes de make. Además de las opciones normales de autoconfigure, se dispone de dos opciones específicas de la arquitectura.
Este capítulo sólo es interesante para aquéllos que quieran transportar mtools a una arquitectura que aún no esté soportada. Para la mayoría de los sistemas comunes, las unidades predeterminadas ya están definidas. Si quiere añadir unidades predeterminadas para un sistema todavía no soportado, ejecute config.guess, para ver qué identificación emplea autoconf para ese sistema. Esta identificación es de la forma cpu-vendedor-so (por ejemplo, sparc-sun-sunos). Las partes cpu y so se pasan al compilador como opciones del preprocesador. La parte del SO se pasa al compilador de tres formas.
Las tres versiones se pasan, si son diferentes.
Para definir los dispositivos, emplee las entradas para los sistemas que ya están presentes, como plantillas. En general, tienen la forma siguiente:
#if (defined (mi_cpu) && defined(mi_so)) #define predefined_devices /* dispositivos predefinidos */ struct device devices[] = { { "/dev/primera_unidad", 'letra_unidad', descripción_unidad}, ... { "/dev/última_unidad", 'letra_unidad', descripción_unidad} } #define INIT_NOOP #endif
"/dev/primera_unidad" es el nombre del dispositivo o fichero imagen que representa a la unidad. Letra_unidad es una letra de la 'a' a la 'z' que da acceso a la unidad. Descripción_unidad describe el tipo de unidad:
Las entradas pueden describirse en más detalle:
bits_fat,args_open,cilindros,cabezas,sectores,DEF_ARG
o, si Ud. necesita describir un desplazamiento (el sistema de
ficheros no empieza al principio)
bits_fat,args_open,cilindros,cabezas,sectores,desplazamiento,DEF_ARG
La definición de los valores predeterminados en el fichero de dispositivos debería hacerse sólo si estos mismos dispositivos se encuentran en un gran número de computadores anfitriones de este tipo. En ese caso, por favor ¿podría notificarme sus nuevas definiciones para que yo pueda incluirlas en la siguiente distribución? Para ficheros puramente locales, yo recomiendo que Ud. use los ficheros de configuración /etc/mtools.conf y ~/.mtoolsrc.
Sin embargo, los ficheros de dispositivo también permiten suministrar las rutinas de establecimiento de la geometría. Éstas son necesarias si Ud. quiere acceder a discos de alta capacidad.
Deberían suministrarse dos rutinas:
static inline int get_parameters(int fd, struct generic_floppy_struct *floppy)
static inline int set_parameters(int fd, struct generic_floppy_struct *floppy, struct stat *buf)
También deberían darse un cierto número de macros del preprocesador:
Para los formatos de verdadera alta capacidad (XDF, 2m, etc.), no hay aún una interfaz limpia y documentada.
mattrib mbadblocks mcd mcopy mdel mdeltree mdir mformat mkmanifest mlabel mmd mmount mmove mrd mread mren mtoolstest mtype mwrite
This document was created by man2html, using
the manual pages.
Time: 20:28:05 GMT, January 21, 2005