Linux, aparte de tener un sistema de ficheros mejor que muchos otros (por ejemplo, indiscutiblemente superior a FAT/VFAT), también permite, para comodidad de sus usuarios, ``fisgonear'' en discos duros con otros formatos, como el propio FAT/VFAT (el de MS-DOS y Windows, vamos), dentro de poco NTFS (el de Windows NT; ahora está en acceso sólo lectura), muchos otros de UNIX, el de OS/2, el sistema de ficheros de los CD-ROM, etc.
La forma que tienen los UNIX en general de hacer esto es
montando los discos duros foráneos a partir de un
subdirectorio especificado. Por ejemplo, yo tengo en mi disco duro de Linux un
subdirectorio vacío, llamado /dos, donde monto el disco duro
con formato FAT. Una vez montado, todo mi disco duro de MS-DOS ``aparece'' a
partir de ese subdirectorio, o sea, que ``de pronto'', existen los
subdirectorios /dos/dos, /dos/utilidad,
/dos/windows, etc., que originalmente, bajo MS-DOS, son
C:\DOS, C:\UTILIDAD, C:\WINDOWS, ... Por supuesto,
se puede modificar, no sólo leer.
Los dispositivos se representan por ficheros, que por convenio
están en el directorio /dev. La forma de nombrar los
dispositivos varía entre versiones de UNIX, aunque es parecida.
Aquí sólo voy a hablar de las unidades de almacenamiento (discos
duros, IDE y SCSI, CD-ROM; no se cuentan las unidades de disco flexible),
siendo la de Linux como sigue:
hdletrasdletra/dev/hda1.a, b, c, etc. Linux va
identificando dispositivos y los va nombrando, con sucesivas letras. En el
caso de que tengas sólo un disco duro y una unidad de CD, ambas IDE,
seguramente se llamarán /dev/hda y /dev/hdb,
respectivamente. Si no sabes si tus dispositivos son IDE o SCSI, probablemente
son IDE, pero pregunta a alguien antes de hacer nada peligroso.
Estás advertido.
Si consigues cargar Linux (con un disco de arranque, por ejemplo), al cargar el núcleo aparecerá un mensaje del estilo (aparecerán montones, pero fíjate en alguno que sea parecido a este):
hda: QUANTUM BIGFOOT1280A, 1226MB w/87kB Cache, CHS=623/64/63, DMA
hdb: OTI-HERMES, ATAPI CDROM drive
hdc: SAMSUNG WN321620A (2.16 GB), 2060MB w/109kB Cache, CHS=4186/16/63
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
Partition check:
hda: hda1 hda2 hda3
hdc: [PTBL] [523/128/63] hdc1
De ahí puedes sacar la información de que hay dos discos
duros (/dev/hda y /dev/hdc) y una unidad de CD-ROM
(/dev/hdb). Todos IDE, por supuesto, porque los ha llamado
hd, y no sd. Aparte de eso, también puedes sacar
(las tres últimas líneas) que el primer disco duro tiene tres
particiones (que llama hda1, hda2 y hda3) y que el
tercer disco duro tiene una sola partición (hdc1).
Si tienes unidad ZIP, has de saber que, aunque sea la versión de puerto paralelo, se trata como un dispositivo SCSI. También has de saber que, por defecto, la única partición con información que hay es la cuarta, y no la primera. Pero para los asuntos de la unidad ZIP, diríjete a los mini-COMOs ZIP-Install y ZIP-Drive.
mount
Esta orden se utiliza para montar los sistemas de ficheros. El formato de la orden es:
mount -t sistema_ficheros /dev/dispositivo /directorio/de/montaje
Donde sistema_ficheros es el sistema de ficheros que tiene el
disco duro a montar (fat, vfat, ext2, hpfs, etc.), /dev/dispositivo
es el nombre del dispositivo que representa al disco duro, y
/directorio/de/montaje es el directorio donde se va a montar el
disco duro (que tiene que existir).
Por ejemplo, para montar en el directorio /dos mi
partición VFAT, que está en /dev/hda1, tendría
que escribir la siguiente orden (en realidad no tengo porqué, porque
utilizo el /etc/fstab, explicado más abajo):
mount -t vfat /dev/hda1 /dos
/etc/fstab
Este fichero indica algunos valores por defecto, a utilizar cuando no
se dé más información. Es muy útil, dado que
normalmente montamos el mismo dispositivo en el mismo directorio. Así
que, para montar el CD, en el directorio /cdrom, sólo tenemos
que hacer
mount /cdrom
suponiendo que tenemos bien configurado el fichero
/etc/fstab. El mount, al ver que le falta
información, buscará en /etc/fstab una entrada que
tenga como punto de montaje /cdrom. Al ver una entrada parecida a
esta:
/dev/hdb /cdrom iso9660 user,ro,noauto 0 0Algunas cosas sobre esta línea:
iso9660 es el sistema de ficheros con el que se suelen
grabar los CDs. No es FAT ni VFAT (aunque algunos creo que sí se graban
así).user,ro,noauto son las opciones de montaje.
user significa que cualquier usuario lo puede montar. Si no sabes lo
que es el superusuario, o sus diferencias con los normales, es que no
me hiciste caso y no has leído nada sobre UNIX/Linux. Mal hecho.
ro significa read-only (sólo lectura), sólo
para que Linux no mande un aviso porque se da cuenta de que no puede escribir.
noauto dice a Linux que no intente montar este sistema de
ficheros al arrancar. Si no lo hubiera puesto, y no tuviera un CD metido en la
bandeja al arrancar, Linux intentaría durante unos segundos montar el
CD, y, al no poder, daría un mensaje de aviso.0 indica que no se haga un volcado de la
unidad en cuestión (no sé lo que significa, pero tú
déjalo a 0 para el CD-ROM y listo)0 indica que no se haga ningún
tipo de comprobación al sistema de ficheros. Como es de sólo
lectura, es absurdo que se hagan comprobaciones sobre si está bien o
mal, entre otras cosas porque no se podrá arreglar.
Desafortunadamente, el ``formato'' de los ficheros de texto en UNIX,
Mac y DOS es diferente. Aunque todos suelen utilizar el ISO-latin1 o ASCII
para los caracteres ``normales'', los caracteres de salto de línea son
diferentes entre los tres sistemas. En UNIX, se utiliza el LF (line-feed,
salto de línea), que tiene la ventaja de que así se pueden
diferenciar saltos de línea de caracteres INTRO literales. En Mac se
utiliza el CR (carriage return, retorno de carro). En MS-DOS y derivados se
utiliza en CR-LF. Esto provoca que al mirar un texto de MS-DOS en UNIX,
aparezca un caracter extraño (el ^M) al final de cada
línea. Al ver un fichero de texto con formato UNIX en MS-DOS (esto
depende del programa que utilices), verás que el texto es una sola
línea, y que de vez en cuando aparece un caracter ``desconocido'' (en
el Bloc de notas aparece un cuadro negro). Con ficheros de Mac habrán
problemas parecidos.
Pero, afortunadamente, esto es UNIX, y la solución (si conoces
el problema y las herramientas) es múltiple y simple. Yo voy a explicar
la que normalmente utilizo y una más cómoda para los que no
conozcan (ni quieran conocer :-)) el corrector de textos
estándar, el vi (es un programa bastante raro de manejar cuando no
tienes costumbre, pero he escrito un
tutorial). Lo
que yo hago, dado que trabajo con el vi, es lo siguiente:
:%s/^M//
Esto sustituye cada caracter ^M que se encuentre (el
^M se consigue pulsando las teclas Ctrl-V, y luego la tecla INTRO)
por nada, es decir, los borra. En el vim (el programa que en
realidad utilizas si llamas al vi desde Linux) no existen esos problemas,
porque se da cuenta automáticamente y no te molesta con basura.
Aún así, si quieres cambiar entre un formato y otro, puedes
abrir el fichero, y escribir :set textmode (para convertir a texto
MS-DOS) o :set notextmode (para convertir el texto a formato UNIX), y
volver a grabar el fichero con :w. Para salir luego con :q,
como siempre.
La solución ``fácil'': escribe este texto en un fichero,
dale permiso de ejecución (con chmod +x fichero, se supone que
ya sabes hacerlo), y ejecútalo. El resultado saldrá en un
fichero llamado igual que el de entrada, con .unix al final. Es
decir, que si llamas al programa u2d, y escribes en línea de
órdenes:
u2d foo.txt
Tendrás el fichero intacto, y uno llamado
foo.txt.unix, que ocupará algo menos. El programa es el
siguiente (por supuesto, se podría virguerizar, añadirle
conversión en el otro sentido, y más cosas. Lo dejo como
ejercicio para el avezado lector ;-). Si quieres más
información para empezar a programar en el lenguaje del
intérprete de órdenes, mira en el tutorial que he escrito a tal
efecto, en formatos
HTML o
PostScript):
sed 's/^M//' $1 >$1.unix
De nuevo, el ^M se consigue pulsando Ctrl-V y luego INTRO.