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

40
Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero en Cibernética y Sistemas Computacionales

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

Page 1: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 2: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

AGENDA

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

– UNIX

– FAT

• Desarrollo• Conclusiones

Page 3: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 4: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 5: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 6: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

FAT32

• Incompatible con DOS y Windows NT

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

Page 7: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Problemática

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

• Falta de documentación en ambas plataformas

Page 8: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Conceptos

Page 9: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 10: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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)

Page 11: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Sistemas de archivos en Unix

Page 12: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Estructuras principales

• Superbloque

• Lista de bloques libres

• Nodos-i

• Directorios

• Archivos

Page 13: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 14: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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.

Page 15: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 16: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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)

Page 17: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 18: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Archivos

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

• Tienen propietarios y permisos

Page 19: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Sistemas de archivos FAT

Page 20: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 21: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 22: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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 ..........É[email protected] ..........æ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

Page 23: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 24: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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.

Page 25: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 26: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Desarrollo

Sistema de Archivos Virtual en Linux

(VFS)

Page 27: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 28: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 29: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 30: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 31: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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:

Page 32: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 33: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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)

Page 34: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Nodos-i en FAT

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

Número de sector Posición

Nodo-i

Page 35: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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.

Page 36: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 37: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Conclusiones

Page 38: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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.

Page 39: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

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

Page 40: Implantación del sistema de archivos FAT-32 en el núcleo de Linux Tesis presentada por: Luis Carlos Castro Skertchly Para obtener el Título de: Ingeniero.

Preguntas