Instalación y configuración de Computadores y Periféricos
Escuela Técnica de Ingeniería Informática de Gijón
3º Ingeniería Técnica en Informática de Sistemas

Comparativa de formas de acceder a distintos sitemas de archivos de Windows desde Linux y viceversa

Autores: Delio Tolivia Cadrecha, Ignacio González Ruiz

Fecha: 21 de mayo de 2004

Ver o hacer comentarios sobre este trabajo
Índice de todos los trabajos

Índice

Objetivos

El principal objetivo de este trabajo es el estudio de los problemas que nos podemos encontrar a la hora de acceder a distintos sistemas de archivos desde diferentes sistemas operativos. En nuestro caso vamos a estudiar el acceso a archivos en los sistemas FAT32 y NTFS de Windows desde Linux, asi como Ext2, Ext3 y ReiserFs de Linux desde Windows.

Índice

Teoría básica

El sistema de ficheros es la forma en la que el sistema operativo organiza los archivos y ficheros en el disco duro. Es un sistema que gestiona cómo se organizan los archivos, dándoles un sentido y una estructura. Sin él, no podríamos comunicarnos con el disco duro de la manera a la que estamos acostumbrados, accediendo a ficheros en vez de a trozos de datos sueltos, que es lo que el disco duro almacena en realidad.

Para que el sistema operativo pueda acceder a cada uno de los ficheros contenidos más rápidamente, todos los discos contienen una lista de los archivos almacenados en el mismo llamada directorio. En esta lista se incluye una sublista con información relativa a los todos los paquetes de datos del disco duro que unidos forman un fichero. Estos paquetes de datos se llaman clusters, y la sublista, es la llamada FAT (File Allocation Table, Tabla de asignación de ficheros) que da nombre al sistema de ficheros.

El directorio contiene la información relativa al nombre del fichero, el tamaño, la fecha de creación... y, lo más importante, el primer cluster del disco donde hay datos del fichero, para a partir de ahí, acudir a la FAT, que le dice cuál es el cluster que sigue al ya leído y así sucesivamente hasta encontrar todos los clusters ocupados por el archivo, todos los que lo forman, y recuperarlo por completo. El final de fichero viene indicado por un carácter especial que universalmente se representa por EOF (End of file).

La FAT y el directorio en sí ocupan espacio físico en el disco duro, pero siempre se localizan "al principio" del disco, en el primer sector de la pista más externa, antes que cualquier fichero que almacene el usuario.

La diferencia entre FAT16 y FAT32 viene por el tamaño de esta lista. Con 32 bits puede enlazar más clusters que con 16, y así se permiten tamaños de disco mayores. Una FAT de 16 bits permite 2^16= 64 Kilobytes de combinaciones posibles, o sea, posibles referencias a clusters. Si cada cluster tenía un tamaño de 4 kilobytes, esto nos da 64 kilobytes x 4 kilobytes= 256 Megas de tamaño máximo. Una FAT de 32 bits permite, haciendo los mismos cálculos de antes, soportar discos duros de hasta 2 Terabytes, 2048 Gigas.

Este sistema aporta sustanciosas mejoras de seguridad con respecto al sistema FAT.Por ejemplo NTFS implementa un sistema real de permisos, cosa que con FAT era imposible.

El control de la información se guarda en un conjunto de ficheros especiales que se crean a la vez que la partición NTFS y se llaman ficheros de metadatos. Uno de esos metadatos, el MTF (Master File Table), es donde se almacena toda la información sobre cada fichero y directorio en una partición NTFS. Básicamente es una base de datos que contiene los atributos de cada archivo. Se podría considerar como el homólogo de la FAT pero mucho más completo. Lo que más llama la atención cuando se crea una partición o volumen formateado con NTFS es que el sistema reserva algo más del 12% de espacio disponible bajo la carpeta System Volume Information a la que no se pude tener acceso (y que se encuentra con los atributos de oculto y sistema).

Con NTFS el tamaño máximo de una partición, en teoría, puede ser de 2^66->18 Terabyte->18000 Gigabytes

El sistema de ficheros en sistemas Unix o Linux es completamente distinto y en cierta medida, más "delicado". También se divide en clusters múltiplos de 512 bytes. El boot record o bloque de arranque es también el bloque 0 de la pista 0 de la superficie 0 de un disco. El superbloque se encuentra físicamente a continuación del bloque de arranque y contiene la información crítica sobre el sistema de ficheros. Luego viene la característica diferenciadora, los i-nodos.

Los i-nodos contienen la descripción de los bloques de disco que forman los ficheros y otro tipo de información, como el propietario del fichero, permisos de acceso... etc. Están numerados y cada uno de ellos ocupa 64 bytes. Cada nodo contiene información sobre un único fichero, y un fichero se identifica independientemente de su nombre, por el número de su nodo. Un fichero en Linux puede tener varios nombres y aparecer en distintos directorios, pero si apunta al mismo nodo, son, físicamente, el mismo fichero.

El sistema de ficheros en Linux y Unix es mucho más delicado que el NTFS, y reiniciar un ordenador sin cerrar el sistema operativo adecuadamente puede hacer que peligre la integridad de todo el sistema.

Ext3 ya es un sistema transaccional, asegurándonos la consistencia de los datos grabados en el disco. Ext3 es compatible con Ext2, en realidad es Ext2 con un fichero adicional de registro. Ext3 es una capa adicional sobre Ext2 que mantiene un fichero de registro (por defecto en el directorio /jfs).

Las particiones Ext3 no tienen una estructura de ficheros diferentes a los de Ext2, por lo que no sólo se puede pasar de Ext2 a Ext3, sino que lo opuesto también funciona.

ReiserFS está basado en B+Trees para organizar los objetos del sistema de ficheros. Dichos objetos son estructuras que mantienen información de ficheros: permisos, tiempos de creación, modificación y acceso, datos de ficheros, etc. En otras palabras; información tradicionalmente mantenida en los i-nodos, directorios y bloques de datos. ReiserFS llama a esos objetos:

1.-stat data items

2.-directory items

3.-direct/indirect items

ResiserFS nos proporciona una integridad de los metadatos de los ficheros, así que en caso de un reinicio no esperado pueden quedar corruptos algunos datos.

Como podemos ver cada uno de los sistemas de fichero presenta una estructura particular en lo que respecta a su funcionamiento. Debido a esto normalmente el acceso a los mismos está restringido al sistema operativo que los utiliza. En realidad podemos mostrar una tabla:

Ext2

W/R

Ext3

W/R

ReiserFS

W/R

FAT32

W/R

NTFS

W/R

Linux

SÍ/SÍ

SÍ/SÍ

SÍ/SÍ

SÍ/SÍ

NO/NO

Windows (XP, 2000)

NO/NO

NO/NO

NO/NO

SÍ/SÍ

SÍ/SÍ

Como podemos ver el mayor problema que nos encontramos es el acceso desde Windows a los sistemas de archivos de Linux. Y el acceso a NTFS desde Linux.

Índice

Configuración de partida

Para las pruebas necesarias utilizaremos un Pentium II a 397 MHz, con dos sistemas operativos instalados, XP sobre una partición NTFS y Mandrake 9.2 sobre una ReiserFS. Para las pruebas utilizaremos una partición que cambiaremos de sistema de archivo para probar los distintos tipos de acceso.

Índice

Desarrollo

Acceso a ext2/ext3 desde Windows

Utilizar un controlador como ext2fsd que se integra en el sistema permitiendo ver la partición de Linux como una unidad más en Windows.

Las instrucciones para instalar el controlador son:

Descargar la última versión de ext2fsd (actualmente la 0.20), extraer, ejecutar el archivo setup.bat e instalar el archivo .INF. Una vez instalado habrá que montar la partición ejecutando la instrucción net start ext2fsd y después el archivo mount.exe con los siguientes parámetros:

- Número de disco duro (0 para el primero)

- Número de la partición (1 para la primera)

- Letra de la unidad (H: por ejemplo)

Para no tener que repetir esto cada vez que queramos leer algo de la partición de Linux podremos copiar el archivo mount.exe a Windows\Sysyem32 y crear un archivo .BAT en el mismo directorio que contenga lo siguiente:

net start ext2fsd

mount 0 2 h:

Si creamos un acceso directo a este archivo .BAT al ejecutarlo la partición quedará montada y si lo creamos en la carpeta Inicio del menú de inicio se ejecutara al arrancar Windows permitiendo tener siempre acceso a la partición.

De esta forma tendremos una unidad mas en Windows como podemos ver en la imagen:

Otro controlador es EXT2IFS. La instalación es sencilla pues proporciona un instalador.

Usar un explorador de archivos como Explore2FS. La instalación será simple descomprimiendo los archivos en un mismo directorio. En este caso se nos permitirá la lectura y escritura sobre Ext2 y la lectura sobre Ext3. El funcionamiento de este explorador es el típico de Windows:

Para poder grabar en estas particiones hay que activar la casilla "Enable write support". Esta se encuentra en el menú View/Options en la pestaña Debug. Una vez hecho esto se cierra el programa y se arranca de nuevo. De todas formas el autor comenta en su web que no es recomendable utilizar esta opción, siendo mejor limitarse a la lectura.

Índice

Acceso a ReiserFS desde Windows

Utilizar rfstool unas herramientas en línea de comandos. Una vez copiadas lo primero que realizaremos será:

c:\> rfstool autodetect

Esto nos detectará nuestras particiones ReiserFS y nos dará su información. Después con ésta información seleccionamos una con:

c:\> set REISERFS_PARTITION=1.0

Esto selecciona la partición 1.0 (disco.partición).

Ahora podremos listar el contenido de "/" con:

c:\> rfstool

O de cualquier directorio, por ejemplo "/etc" con:

c:\> rfstool /etc

A la hora de copiar ficheros utilizaremos:

c:\> rfstool cp <nombre del fichero ReiserFS> <fichero destino>, por ejemplo:

c:\> rfstool cp /etc/lilo.conf lilo.txt

Para copiar directorios recursivamente se puede utilizar la opción -r.

Utilizar un interfaz gráfico de las herramientas anteriores, lo cual es mucho más simple a la hora de usarlo. Por ejemplo RFsViewer, se instalará y tendremos un explorardor típico de Windows para nuestras particiones ReiserFS.

No hemos conseguido ninguna forma de tener acceso total a ReiserFS, pues estas opciones solo nos dejan efectuar lectura de los ficheros y no escritura.

Índice

Acceso a NTFS desde Linux

La primera opción sería utilizar un driver que nos leyese directamente desde NTFS de forma transparente en Linux,como Linux-NTFS, aquí tenemos un parche que aplicaremos sobre el código fuente del kernel de Linux recompilándolo a continuación de la forma habitual. También tenemos en la misma página una serie de herramientas para utilizar sobre NTFS.

Esta solución a pesar de ser la más transparente también es la más trabajosa y complicada de hacer debido a la recompilación del kernel.

También podemos instalar drivers de pago como el de Paragon NTFS for Linux que nos producirían un efecto similar de acceso transparente.

Otra opción es la instalación de un rpm llamado captive que nos instala los drivers y nos da un acceso transparente a NTFS. Una vez instalado ejecutaremos:

captive-install-acquire

Esto es para comprobar la versión de los drivers de Microsoft para NTFS que tenemos. Después montaremos la partición NTFS:

mkdir /mnt/dosc

mount -t captive-ntfs /dev/hda1 /mnt/dosc

Índice

Enlaces

Enlace con más información sobre NTFS:

http://www.qvctc.commnet.edu/classes/csc277/ntfs.html

Enlace a la página de ReiserFS:

http://www.namesys.com/

Enlace con información sobre Ext2:

http://e2fsprogs.sourceforge.net/ext2intro.html

Enlace con la descripción de Ext3:

http://olstrans.sourceforge.net/release/OLS2000-ext3/OLS2000-ext3.html

Enlace con documento de Microsoft sobre FAT:

http://home.teleport.com/~brainy/fatgen102.pdf

Índice

Conclusiones

La principal conclusión es que buscando ligeramente por la red se puede obtener acceso a cualquier sistema de archivos de una forma más o menos fácil. Para Windows suele haber entornos graficos tipo explorador que son fáciles de instalar y de utilizar. Mientras que en Linux nos encontramos con problemas como la recompilación del kernel que es para usuarios más avanzados. La tabla de accesos nos quedaría:

Ext2

W/R

Ext3

W/R

ReiserFS

W/R

FAT32

W/R

NTFS

W/R

Linux

SÍ/SÍ

SÍ/SÍ

SÍ/SÍ

SÍ/SÍ

SÍ/SÍ

Windows (XP, 2000)

SÍ/SÍ

SÍ/SÍ

SÍ/NO

SÍ/SÍ

SÍ/SÍ

Como podemos ver, hemos conseguido el acceso de lectura y escritura para casi todos los sistemas de archivos, salvo la escritura sobre ReiserFS desde Windows.

Otros problemas dignos de mención son los derivados del uso de NTFS, derivados de que es un formato propietario del que Microsoft no ha liberado la información. Esto lleva a que se haya conseguido el acceso de forma casi total, muchas veces mediante el uso de ingeniería inversa por parte de compañías que cobran por sus drivers. De todas formas en casi todos los casos recomiendan prescindir de la grabación en particiones con NTFS debido al peligro de estropear toda la partición en el proceso. Así que lo más recomendable en este caso es limitarse a la lectura. Lo mismo ocurre como ya hemos comentado con el uso de Explore2fs, en el cual se recomienda limitarse a la lectura.

Como conclusión general podemos decir que lo mejor en todos los casos es limitarse a leer de cualquier tipo de partición que no sea la que está utilizando nuestro sistema operativo, evitando grabar en ella desde otro sistema.

Índice

Licencia

Creative Commons License
Este trabajo utiliza una Licencia Creative Commons.