Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis...

Post on 11-Apr-2015

114 views 3 download

Transcript of Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis...

Implantación del sistema de archivos FAT-32 en el núcleo de

Linux

Tesis presentada por:

Luis Carlos Castro SkertchlyPara obtener el Título de:

Ingeniero en Cibernética y Sistemas Computacionales

AGENDA

• Objetivos• Introducción• Problemática• Sistema de Archivos

– UNIX

– FAT

• Desarrollo• Conclusiones

Objetivos

• Permitir el acceso a GNU/Linux a la información generada por Windows

• Tener una información más completa de FAT32

• Generar un esquema que facilite la creación de sistemas de archivos sobre Linux

GNU/Linux

• Sistema operativo abierto y libre– Libre (Free) Gratis

• Código fuente disponible GNU/GPL

• Posicionándose fuertemente en la Industria

• Apoyo y desarrollo de software por parte de la industria computacional: Sun, SAP, HP, IBM, Oracle, Informix, Sybase

FAT

• Sistema de archivos utilizado en los sistemas operativos de Microsoft (MS-DOS, Windows)

• FAT: File Allocation Table• Su nombre lo debe a la estructura que

utiliza para asignar espacio en el medio• Ha evolucionado desde su aparición con el

MS-DOS 1.0

FAT32

• Incompatible con DOS y Windows NT

• Soportado en Windows 95 OSR2, 98, ME y Windows 2000

Problemática

• Convivencia de GNU/Linux y Windows en la misma computadora

• Falta de documentación en ambas plataformas

Conceptos

Sistemas de Archivos

• Mecanismo de abstracción

• Forma de organizar información en un medio para tener acceso a ella posteriormente

• Normalmente es específico de cada sistema operativo

• Excepciones: ISO-9660

Sistemas de archivos

• Administran la asignación del espacio en el medio (disco, CD)

• Utilizan una unidad de asignación:– Sector (FAT-16)– Clúster (BIGDOS)– Bloque (UFS)

Sistemas de archivos en Unix

Estructuras principales

• Superbloque

• Lista de bloques libres

• Nodos-i

• Directorios

• Archivos

Superbloque

• Punto de entrada

• Datos generales del sistema de archivos– Número mágico (indica si está soportado)– Tipo de sistema– Estado (“clean” / “no clean”)– Tamaño– Apuntadores a la lista de bloques libres

Lista de bloques libres

• Lista ligada de los bloques que no están en uso.

• Conforme se utilizan se sacan de esta lista.

• Normalmente se usan los mismos bloques libres para almacenar la lista.

Nodo-i• Todas las características (excepto el nombre) de

un archivo ó directorio están definidas en la estructura llamada nodo-i

• Contiene la lista de bloques usados por el archivo• Se hace referencia a un nodo-i por su número

Directorios

• La asociación entre nodo-i y nombre de archivo se hace en los directorios:

nodo-i Nombre

5324 bin

5325 etc

5432 usr

6873 vmlinuz

6873 vmlinuz-2.1.0

Ligas (nombres con el mismo nodo-i)

Archivos

• Son una secuencia de bytes agrupadas bajo un nombre.

• Hay tres tipos:– Archivos regulares– Archivos especiales (no ocupan espacio)

• Bloques,Carácter, Pipe, Socket

– Directorios

Archivos

• En el nombre no existe el concepto de extensión

• Tienen propietarios y permisos

Sistemas de archivos FAT

Sistemas de archivos FAT

• DOS 1.0: FAT tradicional de 12 bits– Máximo de 212 sectores direccionables– (4,096 sectores)(512 bytes/sector) = 2 MB– Nombres de 8+3 caracteres

• DOS 2.0: FAT tradicional de 16 bits– Máximo de 216 sectores direccionables– (65,536 sectores)(512 bytes/sector) = 32 MB– Nombres de 8+3 caracteres

Sistemas de archivos FAT

• DOS 4 introduce BIGDOS– Unidad de asignación de tamaño variable

(cluster) en potencias de 2 hasta 32,768 bytes– Máximo 65,536 clusters– (65,536 clusters)(32,768 bytes/cluster) = 2 GB

• Windows 95 introduce VFAT– Soporte a nombres largos– Fecha de creación y último acceso

Estructura de un disco FAT

BootSector

FAT DatosBoot

Sector

OEM ID: MSWIN4.1Sectores por clusterMedia descriptorSectores por FATTotal de sectoresEtiquetaNúmero de serieCódigo de arranque

Direct.Raiz

IO SYS ...........2.....á..MSDOS SYS ...........2..+..ò..COMMAND COM ...........2..Q.⌡...EMERGENCIA (..........ÖV.▲......NDD EXE ..........ômG.ë.....DE EXE ..........ÉmG.@.8W..DISKTOOLEXE ..........æmG.......FORMAT COM ...........2..Ä.πZ..FDISK EXE ...........2..Ñ.fs..PARTINFODAT ...........V.▲......

Direct.Raiz

Ú├☺RSh `•3█ïL♥ÃE◙ ëM◘ïD♂=Ç v▼Q©ÇÄÓ© pÄÞ♫•┤ÇRèD☻*d☻â· u♣ZZÚd☺ï╩Þç A;Ðu◄dz u♦┤ÇÙ◘☻D☻*d☻ÙÕYRïÐ╣◙ SPRQ©☺ èD↓═‼3└èD↓═‼3└Hu²YZX[Iu¦♫▼¥╝ ¼◙└t○┤♫╗• ═►Ù‗Ù■♪◙Disk I/O error♪◙[Zè╚2Ý┴ß○♥┘t♥Úo î└♣ ►Ä└┤ÇÚc SÞ= s!ï┌ÐÛ£♥┌dï↨Ør♠üÔ ☼Ù♥┴Û♦ü·°☼r↔║  Ùë▬¥♀3Ýf☼ÀÝf☼Àõî▲╝§Þ5↑fh fØï▄Ïw☻3└ÄÞÄ└j0☼í·☼☺▬¿§☼☺▲░§¥║↔ÃD☻h ¥Â↔

Datos

0000 00060000 00000005 FFFF

2 3 4 5 6 7

F8FF FFFF

Reservado

FAT

VFAT: Atributos adicionalesDesp.

00H

08H

0BH

0CH

0DH

0EH

10H

12H

14H

16H

18H

1AH

1CH

Descripción

Nombre

Extensión

Atributo

Reservado

Reservado

Reservado

Reservado

Reservado

Reservado

Hora

Fecha

Clúster inicial

Tamaño

Tamaño

8

3

1

1

1

2

2

2

2

2

2

2

4

Formato

ASCII

ASCII

Codificado en bits

Sin uso, en ceros

Sin uso, en ceros

Sin uso, en ceros

Sin uso, en ceros

Sin uso, en ceros

Sin uso, en ceros

Sin uso, en ceros

Palabra codificada

Palabra

Entero

Desp.

00H

08H

0BH

0CH

0DH

0EH

10H

12H

14H

16H

18H

1AH

1CH

Descripción

Nombre

Extensión

Atributo

Mayúsculas./Minúsculas

Hora de creación (ms)

Hora de creación

Fecha de creación

Fecha del último acceso

Reservado

Hora de modificación

Fecha de modificación

Clúster inicial

Tamaño

Tamaño

8

3

1

1

1

2

2

2

2

2

2

2

4

Formato

ASCII

ASCII

Codificado en bits

(Windows NT)

Byte

Palabra codificada

Palabra codificada

Palabra codificada

Palabra codificada

Sin uso, en ceros

Palabra codificada

Palabra

Entero

Ejemplo de nombre largo

• Uso de las estructuras existentes para guardar el nombre largo

• Se oculta mediante los atributos V,H,R,S

• Compatible con versiones anteriores de FAT

ESTADO~1 Atrib. Res. Hora Fecha Clust Tamaño

0x42 E s t a d 0x0F Res. o s F i n Clust

XLS

suma a n

0x01 c i e r o 0x0F Res. s . x l s Clustsuma

0 creacion acc.

FAT-32

• Aparece con Windows 95 OSR2

• Características:– 32 bits para numerar los clusters (24 bits reales)– Directorio raíz en cadena de clusters ordinaria– El número de cluster mide 4 bytes (32 bits)– Límite teórico de 512 GB:

GB 512cluster2clusterbytes

768,32 24

Desarrollo

Sistema de Archivos Virtual en Linux

(VFS)

Virtual Filesystem (VFS)

• Interfaz entre el sistema de archivos real y el kernel, que oculta los detalles de implementación de un sistema de archivos

• Se establece que el sistema de archivos trabaja por medio de nodos-i

Virtual Filesystem (VFS) Proceso de

Usuario

Interfaz de llamadas al sistema

VFS

minix fat ext ext2

Buffer cache

Controladores de dispositivo

Controlador de disco

Núcleo de Linux

Hardware

Modelo de diseño

• Objetos del sistema de archivos:– Superbloque

• Mantiene datos globales del sistema de archivos• Encargado de leer y escribir los nodos-i

– Nodo-i• Crear y borra las entradas en los directorios• Sólo Se trunca a ceros cuando es archivo

– Archivos• Abrir, cerrar, posicionarse, leer, escribir

Modelo VFS vs. FAT

VFS• Trabaja con bloques• Presupone la existencia

de nodos-i• Contempla propietarios y

permisos

FAT• Trabaja con clusters• Carece del concepto del

nodo-i• No soporta propietarios

ni permisos

Posición relativa y absoluta

11 12 13 14 15 16 17 18

1 2 3 4 50

Clúster = 4 sectores = 2048 bytes Sector = 512 bytes

0 4 8 12 16 2044 48 52 5636 40 60 64 Sector absoluto

Sector relativo

Clúster absoluto

Clúster relativo

Area sin usar

11 12 13 14 15 16 17 18 19

12 13 15 16 17 FF

• Asignación en FAT (archivo fragmentado):

• Asignación física en disco:

Clusters vs. bloques

• Dada la posición de lect./escr. se obtiene el cluster:

• Conversión de clusters a sectores:cluster = fat32_get_cluster(inode, file_cluster);

sector = (cluster – 2) * sectores por cluster + primer sector de datos + offset;

zecluster_simodESECTOR_SIZ

f_posoffset

zecluster_sif_pos

erfile_clust

Nodos-i en FAT

• El nodo-i identifica a cada archivo de manera individual e inequívoca

• En FAT un archivo está representado por su nombre

• Asociar el nombre a un número:– Coordenadas donde está almacenado ese nombre– Registros de 32 bits 16 posiciones posibles– 16 = 24

– Sólo se necesitan 4 bits para definirla (un dígito hexa)

Nodos-i en FAT

i_ino = (sector << 4) | ((pos & (SECTOR_SIZE – 1))) >> 4

Número de sector Posición

Nodo-i

Directorios “.” y “..”

• El directorio “.” es una alias al directorio de trabajo, por lo tanto tiene el mismo número de nodo-i.

• El directorio “..” es un alias al directorio padre del directorio de trabajo.

Directorio “.” y “..”

if (name[0] == '.' && len == 1)

ino = inode->i_ino;

Nombre Nodo-i

IO.SYS

MSDOS.SYS

AUTOEXEC.BAT

CONFIG.SYS

WINDOWS

TEMP

HOME

2000

2002

2004

2006

2008

2010

2012

Nombre Nodo-i

.

..

SYSTEM

INF

MEDIA

FONTS

NOTEPAD.EXE

2008

1

5004

5006

5008

5010

5012

Nombre Nodo-i

.

..

COMMCTRL.DLL

MSTCP.DLL

NETAPI.DLL

MINI.CAB

SYSEDIT.EXE

5004

2008

6004

6006

6008

6010

6012

(Directorio raíz)

WINDOWS

SYSTEM

Conclusiones

Conclusiones

• Es posible desarrollar sistemas de archivos no propios de Linux.

• Acceder a la información de sistemas de archivos de terceros.

• Uso de técnicas de ingeniería inversa.• Implementación independiente de FAT32.• FAT-32 con características diseño mas elegante que

sus antecesores.• Facilitar nuevos proyectos gracias a la

documentación generada.

Trabajo a futuro

• Usar “shortcuts” de Windows como ligas

• Herramientas de respaldo en modo “a prueba de fallos” de Windows 9x

• Editor de disco para FAT-32

• Montar sistemas de archivos Linux desde Windows

Preguntas