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 ..........É[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
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
Top Related