Sistemas Operativo - ITIS Junio 2010 Sistemas Operativos Parte Práctica Problema 1 Un disco duro de la empresa para la que trabaja, ha dejado de arrancar el sistema operativo debido a un fallo en el mismo. Utilizando un disco de arranque Linux se consiguió obtener un volcado de la MBR de dicho disco en el archivo mbr.txt utilizando la orden dd if=/dev/hda count=1 bs=512 | hexdump -C >mbr.txt. El contenido de dicho archivo se muestra a continuación. 00000000 00000010 00000020 00000030 00000040 00000050 00000060 00000070 00000080 00000090 000000 a0 000000 b0 000000 c0 000000 d0 000000 e0 000000 f0 00000100 00000110 00000120 00000130 00000140 00000150 00000160 00000170 00000180 00000190 000001 a0 000001 b0 000001 c0 000001 d0 000001 e0 000001 f0 00000200 eb bf 38 83 ff 75 00 e8 52 83 66 5c 0c 73 44 ca c0 88 3b 08 b8 00 7c 06 52 69 bb 00 01 c1 ff ff 48 1b 6e c6 00 02 20 34 72 e1 8b 08 b4 0a ff c1 e8 54 44 d1 01 01 be be 55 73 01 00 00 ff ff ff 90 06 00 10 00 b2 fb 01 49 01 1e c7 42 f6 00 e2 02 0a 08 8a 02 8e 85 94 42 6b 00 00 07 0c 83 05 d0 50 7c 49 20 80 a0 f6 81 74 44 44 cd c2 66 02 66 66 7d 6c cd db 7d 7d 20 00 b4 00 fe fe fe fe bc 57 09 74 01 ea 40 c2 fb 37 7c 06 13 80 31 88 89 31 3c 0c 13 31 e8 e8 00 52 0e 00 ff ff ff ff 00 b9 75 19 00 59 7c 80 55 66 c7 00 72 0f c0 e8 04 d2 8a 5a 72 f6 40 30 47 65 cd 00 ff ff ff ff 7c e5 13 38 00 7c 3c 74 aa 8b 04 70 05 84 88 88 66 66 54 8a 2a 31 00 00 65 61 10 00 3f 59 70 56 fb 01 83 2c 00 00 ff 54 75 4c 10 66 bb ea f0 f4 a1 f7 0d 74 8c ff eb be 6f 64 ac 00 00 1f 61 ad 50 f3 c5 74 00 00 74 b4 43 10 00 31 00 00 40 40 44 74 c0 0b c3 fc 0e 99 6d 00 3c d9 00 80 23 ee 07 a4 10 f6 02 31 02 41 a0 be c7 c0 70 e9 66 89 7c 04 e2 bb 8e f3 be 7d 00 20 00 0a 00 07 0b 0d 50 cb e2 a0 fa c0 88 bb 41 05 44 89 eb 8d 89 44 66 88 06 00 06 a5 8a e8 48 45 75 da 1a 17 e6 6b 1f bd f4 b5 90 8e c2 aa 7c 7c 02 44 7d 00 44 08 31 54 8a 70 48 1f 7d 2a 61 72 f4 0a 1f 42 4b 8a fc be cd 07 90 d8 52 55 84 c6 01 04 b4 be 04 31 d2 0b 4c 8e 7c 61 e8 00 72 72 c3 00 80 a3 cb 0a be 07 18 b4 f6 8e be cd c0 44 00 66 08 05 31 c0 66 89 0a c3 60 ff 38 eb 64 6f 00 00 07 03 02 00 1b b1 8b 03 c2 d0 7f 13 75 ff 66 89 cd 7c d2 88 f7 44 fe 31 1e 26 00 fe 20 72 00 80 00 00 00 55 7c 04 f5 02 80 bc 7d 5a 05 01 89 44 13 c6 88 d0 34 0c c1 db b9 42 eb 47 44 00 00 01 00 fe fe aa |. H ....|. P . P ....|| |... PW ...........| |8 n .|. u ..........| |... It .8 , t .......| |... ............| | u .... Y |..1......| |. .. @ | <. t ... R ..}| |.4.... tT . A .. U .. Z | | RrI .. U . uC . A |.. u .| |... t7f . L ...|. D ..| | f .. D |..... D ... f .| |\.. D .. pf1 .. D . f . D | |.. B .. r ... p .}....| | s .. . .. .. . .. . .. |. | | D .. f1 ... @f . D .1..| |........ @ . D .1...| |... f .. f . D | f1 . f .4| |. T . f1 . f . t .. T .. D .| |; D .} <. T ..... L ...| |... l . Z . t ... p ..1.| |..... r *.... H | ‘..| |....1.1..... a .& B | ||..}. @ .....}.8..| | .. .} . 0. . .} . *. .. G | | RUB . Geom . Hard D | | isk . Read . Error .| |........ <. u .....| | . . . . . . . . . . .. . . . . | | . . . . . . ? . . . .. . . . . | |...... Y .... B ....| |...... pa #.. K ....| |...... V ... k ... U .| Consultando documentación en Internet se sabe que que el formato de la MBR es el mostrado a continuación. Posición +000h +1BEh +1CEh +1DEh +1EEh +1FEh Contenido Codigo de arranque Primera entrada en la tabla de particiones Segunda entrada en la tabla de particiones Tercera entrada en la tabla de particiones Cuarta entrada en la tabla de particiones Número mágico Tamaño (en decimal) 446 bytes 16 bytes 16 bytes 16 bytes 16 bytes 2 bytes En donde el formato de cada entrada en la tabla de particiones viene dado a continuación. 11 Sistemas Operativo - ITIS Posición +00h +01h +04h +05h +08h +0Ch Junio 2010 Contenido Estado de la partición. Inicio de la partición en formato CHS. Tipo de partición. Fin de la partición en formato CHS. Distancia del primer sector. Número de sectores en la partición. Tamaño (en decimal) 1 byte 3 bytes 1 byte 3 bytes 4 bytes 4 bytes El estado de la partición indica si una partición determinada es o no activa. Todos los bits permanecen a 0, salvo el octavo, que vale 0 si es una partición inactiva, o 1 si es partición activa. El tipo de partición es un código predefinido de un byte cuyos posibles valores se muestran en el listado siguiente. Por otra parte, tanto la distancia del primer sector como el número de sectores en la partición están expresados en formato little endian (los bits más significativos ocupan posiciones de memoria más altas). 0 1 2 3 4 5 6 7 8 9 a b c e f 10 11 12 14 16 17 18 1b 1c 1e Vacı́a FAT12 XENIX root XENIX usr FAT16 <32M Extendida FAT16 HPFS/NTFS AIX AIX bootable OS/2 Boot Manag W95 FAT32 W95 FAT32 (LBA) W95 FAT16 (LBA) W95 Ext’d (LBA) OPUS FAT12 oculta Compaq diagnost FAT16 oculta <3 FAT16 oculta HPFS/NTFS ocult SmartSleep de A Hidden W95 FAT3 Hidden W95 FAT3 Hidden W95 FAT1 24 39 3c 40 41 42 4d 4e 4f 50 51 52 53 54 55 56 5c 61 63 64 65 70 75 80 NEC DOS Plan 9 PartitionMagic Venix 80286 PPC PReP Boot SFS QNX4.x QNX4.x segunda QNX4.x tercera OnTrack DM OnTrack DM6 Aux CP/M OnTrack DM6 Aux OnTrackDM6 EZ-Drive Golden Bow Priam Edisk SpeedStor GNU HURD o SysV Novell Netware Novell Netware DiskSecure Mult PC/IX Old Minix 81 82 83 84 85 86 87 88 8e 93 94 9f a0 a5 a6 a7 a8 a9 ab af b7 b8 bb be Minix / old Lin Linux swap / So Linux Unidad C: ocult Linux extendida Conjunto de vol Conjunto de vol Linux plaintext Linux LVM Amoeba Amoeba BBT BSD/OS Hibernación de FreeBSD OpenBSD NeXTSTEP UFS de Darwin NetBSD arranque de Dar HFS / HFS+ BSDI fs BSDI swap Boot Wizard hid arranque de Sol bf c1 c4 c6 c7 da db de df e1 e3 e4 eb ee ef f0 f1 f4 f2 fb fc fd fe ff Solaris DRDOS/sec (FATDRDOS/sec (FATDRDOS/sec (FATSyrinx Datos sin SF CP/M / CTOS / . Utilidad Dell BootIt DOS access DOS R/O SpeedStor BeOS fs GPT EFI (FAT-12/16/ inicio Linux/PA SpeedStor SpeedStor DOS secondary VMware VMFS VMware VMKCORE Linux raid auto LANstep BBT Se sabe además que el formato CHS (cylinder, head, sector) indica una posición en disco a través de la terna <cabecera, sector, cilindro>, ocupando un byte la cabecera y dos bytes el sector y cilindro. Partiendo de la información disponible, conteste a las siguientes preguntas. 1. Como parte del proceso de recuperación del disco se necesita obtener la información básica sobre sus particiones. Obtenga, de manera razonada, los siguientes datos. Número de particiones definidas. Tamaño de las particiones en sectores. Tipo de partición (primaria, extendida o lógica). Sistema de archivos que contiene cada partición. (1 punto) 12 Sistemas Operativo - ITIS Junio 2010 RESPUESTA: Se interpreta directamente el volcado de la MBR siguiendo el formato especificado en el enunaciado. Partición 1: • • • • Tipo de partición: Primaria Sistema de archivos: NTFS (código 07h) Tamaño de la partición: 1A 1F 80 07 → 07 80 1F 1A = 125.837.082 sectores. Tamaño de la partición en bytes: 125.837.082 sectores * 512 bytes/sector = 64.428.585.984 bytes = 60 GB. Partición 2: • • • • Tipo de partición: Primaria Sistema de archivos: FAT 32 (código 0Ch) Tamaño de la partición: 17 42 A3 03 → 03 A3 42 17 = 61.030.935 sectores. Tamaño de la partición en bytes: 61.030.935 sectores * 512 bytes/sector = 31.247.838.720 bytes = 29 GB Partición 3: • • • • Tipo de partición: Primaria Sistema de archivos: EXT (código 83h) Tamaño de la partición: E6 4B CB 02 → 02 CB 4B E6 = 46.877.670 sectores. Tamaño de la partición en bytes: 46.877.670 sectores * 512 bytes/sector = 24001367040 bytes = 22 GB Partición 4: • Tipo de partición: Extendida (código 05h) • Sistema de archivos: No puede saberse, serı́a necesario un volcado del primer sector de esta partición. • Tamaño de la partición: 6B 8A 0A 00 → 00 0A 8A 6B = 690795 sectores. • Tamaño de la partición en bytes = 690795 sectores * 512 bytes/sector = 353687040 bytes = 337 MB La visualización del particionado con la herramienta fdisk es como sigue: Dispositivo Inicio Comienzo Fin Bloques Id Sistema /dev/sda1 * 1 7833 62918541 7 HPFS/NTFS /dev/sda2 7834 11632 30515467+ c W95 FAT32 (LBA) /dev/sda3 11633 14550 23438835 83 Linux /dev/sda4 14551 14593 345397+ 5 Extendida /dev/sda5 14551 14593 345366 82 Linux swap / Solaris 2. La primera partición del disco duro anterior se formatea con un sistema de archivos similar a Linux en el que el tamaño de bloque es de 1024 bytes y los punteros ocupan 32 bits. Partiendo del disco recién formateado, con el directorio de trabajo en su directorio raı́z, se realizan las siguientes operaciones. cat " Hola " > archivo1 . txt ln -s archivo1 . txt archivo2 . txt ln archivo1 . txt archivo3 . txt mkdir directorio mv archivo1 . txt directorio rm archivo3 . txt Complete la tabla adjunta indicando el contenido de los bloques de datos del disco después de realizar dichas operaciones. (1 punto) RESPUESTA: 13 Bloque Contenido 2 2 directorio 5 archivo2.txt 4 . .. 1 2 Hola P. indirecto Nodo ı́ndice Tipo Enlaces Tamaño P. directos 3 REG 1 4 2 4 SYM 1 12 3 5 DIR 2 1024 4 6 . 5 .. 2 archivo1.txt 3 4 5 Cuadro 4: Bloques de datos. 3 archivo1.txt 6 Cuadro 3: Tabla de nodos ı́ndice. 2 DIR 3 1024 1 7 7 8 8 9 9 10 10 Ejercicio de Sistemas Operativos. Ingenierı́a Técnica en Informática de Sistemas. Junio 2010 Solución ejercicio 1 11 12 13 14 15