Parte de la gran potencia que tiene Linux viene dada por la forma de tratar dispositivos como si fueran ficheros. Haciendo uso de estas características, veremos cómo duplicar discos o convertir ficheros en particiones.

1- Copiar disquetes completos

A veces es necesario realizar la duplicación de un disquete, o incluso puede ser útil guardar la copia en el disco duro para posteriores ocasiones. Linux dispone de un comando para poder realizar este tipo de operaciones, dd, cuyo principal cometido es similar al comando cp (copy). Las principales ventajas que tiene sobre éste, es la posibilidad de limitar el tamaño copiado, o tomar como origen cualquier fichero, dispositivo o directamente la entrada estándar.

De esta manera, los pasos a realizar para crear un duplicado de un disquete, en el caso de tener una sola disquetera, son tres: pasar una imagen del disquete al disco duro, copiar esa imagen en un nuevo disquete, y borrar esa imagen del disco duro.

Los comandos a teclear son: 1: dd if=/dev/fd0 of=disco.img (cambiar el disquete) 2: dd if=disco.img of=/dev/fd0 3: rm disco.img. Una vez realizado esto, se tiene un duplicado del disquete.

Los parámetros que se han empleado con el comando han sido los dos que determinan los ficheros a emplear como entrada y como salida. El parámetro if=<fichero>, proveniente de input file, determina el fichero a emplear como entrada (hay que recordar que en Linux cualquier dispositivo es accedido también como un fichero). El otro parámetro empleado, of=<fichero> (output file), determina el fichero de salida. En caso de no usar estos parámetros, son empleadas las entradas y salidas estándares.

Un aspecto bastante interesante es la posibilidad de limitar el tamaño de los datos copiados. Para utilizar este límite, hay dos parámetros que han de ser empleados en conjunción: bs=<bloque>, que va a definir el tamaño en bytes de cada bloque a copiar (512 por defecto), y count=<cantidad>, que marcará el máximo de bloques a copiar (por defecto, todos los del fichero a copiar). El tamaño en bytes procesado va a quedar definido por el producto de ambas cantidades.

2- Utilización de ficheros como discos

Como es bien sabido, los dispositivos en Linux son tratados como ficheros, de manera que podría pensarse que un fichero cualquiera puede tratarse como un dispositivo. En el caso de los de entrada/salida, como los discos, es posible emular una unidad con un fichero, gracias a la posibilidad de configurarlo como loop o bucle, y de esta manera convertirlo en un dispositivo.

Se puede tomar como ejemplo el fichero creado en el truco anterior, disco.img, antes de borrarlo. Este fichero es un volcado completo de un disquete. Por lo tanto, es utilizable como dispositivo en bucle. Para acceder a esta imagen como si de un disco se tratara, en primer lugar hay que hacer que un dispositivo de bucle apunte a ese fichero. Hay ocho dispositivos, denominados /dev/loop0 a /dev/loop7. Para enlazar uno de estos dispositivos al fichero, por ejemplo loop0, la orden a escribir, como administrador o root, es losetup /dev/loop0 disco.img.

Una vez creado el enlace, se crea un directorio donde montarlo, con mkdir disco, o bien se emplea uno ya existente. El siguiente paso es montar el dispositivo en el directorio. Como siempre en estos casos, la orden es mount /dev/loop0 disco. Una vez realizado todo esto, se tiene en el directorio disco el árbol completo que había en el disquete.

Una utilización típica que se realiza de este sistema es para comprobar la correcta creación de un CD-ROM antes de grabarlo. Dado que hay que compilarlo y crear una imagen, para posteriormente grabarlo, creando un dispositivo de bucle con esta imagen, se puede verificar la correcta creación de la imagen, antes de proceder a grabarlo.

Para restaurar el sistema al estado previo a la creación de este dispositivo, primero hay que desmontar el dispositivo, con umount disco, y después borrar el enlace del dispositivo de bucle, con losetup -d /dev/loop0. Es aconsejable realizar este procedimiento de restauración antes de apagar el sistema, pues en otro caso podría dar errores al desmontar los dispositivos automáticamente.

3- Creación de discos virtuales en fichero

Generalmente, el sistema Linux está compartiendo el espacio en disco duro con otros sistemas operativos, como Windows. En un momento dado, puede darse el caso de que se llenen las particiones de Linux, mientras que en las particiones de Windows hay espacio de sobra. En tal caso, se puede grabar la información en ese espacio, pero con el inconveniente de estar empleando un tipo de sistema de ficheros que no soporta todas las características de Linux, como permisos de usuario y tipos de fichero.

Empleando los comandos vistos anteriormente, se puede crear en uno de estos discos de Windows un fichero del tamaño deseado, y a continuación tratarlo como una nueva partición, dándole formato y haciendo uso de él.

Todo este proceso debe realizarse como administrador. El primer paso es la creación del fichero. En primer lugar, hay que ir al directorio donde se va a crear el fichero. Por ejemplo, con cd /mnt/win_c. Una vez en el directorio, se crea el fichero que va a albergar la partición, con el comando dd. En este caso, va a tener un tamaño de 200 MB. Como origen de los datos, lo mejor es emplear un comando que genere texto en gran cantidad. Un ejemplo de comando a utilizar es: yes | dd of=disco.img bs=1024 count=200000. Una vez finalizado, se habrá creado un fichero de 200 MB llamado disco.img, conteniendo el carácter “y”. A continuación, se enlaza con uno de los dispositivos de bloque, con losetup /dev/loop1 disco.img.

Antes de poder montarlo, hay que dar un formato a este “disco”. El comando que genera un sistema de ficheros extended filesystem 2 en un dispositivo es mkfs.ext2 <dispositivo>. Es un comando a emplear con mucho cuidado, pues es similar al FORMAT de MSDOS/Windows, y sin posibilidad de recuperación. Dado que el dispositivo ya está creado, el comando es mkfs.ext2 /dev/loop1.

El siguiente paso es ya montar el nuevo disco en un directorio. Si el directorio que se va a emplear no existe, se crea con md disco. El montaje es mount /dev/loop1 disco. A partir de este momento, cualquier usuario podría tener acceso a este nuevo disco.

Antes de apagar el sistema, como se dijo antes, conviene desmontar y deshacer el enlace. Posteriormente, se puede montar de nuevo este fichero disco.img como unidad, y mantendrá todos los contenidos incorporados en anteriores sesiones.