Домашнее задание на неделю 49

Задания на изучение способов организации данных на физических носителях — таблиц разделов (GPT, MBR) и файловых систем (Ecma 119, она же ИСО/МЭК 9660:1988; Ecma 107 FAT, она же ИСО/МЭК 9293:1994.) Контрольный срок сдачи —

В заданиях ниже, данные на физическом носителе представлены в виде (слева направо) шестнадцатеричного смещения, 16 октетов (шестнадцатеричных чисел), и интерпретации этих же октетов в виде 16 печатных символов ASCII (где возможно.)

Строки дампа, состоящие из единственного символа *, означают повтор (возможно — многократный) предшествующей строки до следующего смещения. Аналогично, строка 0* означает заполнение нулевыми октетами. Если не указано обратного, интерпретация этих условных обозначений, а равно и самих «скрытых» так данных, не является отдельным вариантом задания.

  1. Физический носитель (например — твердотельный накопитель, ТТН) содержит следующие данные. Обратившись к статьям Википедии Master boot record, GUID Partition Table, и тексту стандарта Ecma 107, опишите назначение ряда смежных строк (не менее двух — т. е. 32 октетов) шестнадцатеричного дампа. Желательно, чтобы ряд строк соответствовал одной—двум сущностям (записям в таблице разделов или директории, etc.) соответствующего формата данных.

    0*
    001c0   02 00 ee 82 02 00 01 00 00 00 ff 1f 00 00 00 82 ................
    001d0   03 00 07 27 3e 08 00 20 00 00 df df 01 00 00 00 ...'>.. ........
    0*
    001f0   00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa ..............U.
    00200   45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 EFI PART....\...
    00210   09 41 4a e2 00 00 00 00 01 00 00 00 00 00 00 00 .AJ.............
    00220   ff ff 01 00 00 00 00 00 22 00 00 00 00 00 00 00 ........".......
    00230   de ff 01 00 00 00 00 00 b6 e1 8c db 26 e3 47 4f ............&.GO
    00240   aa 98 2d dc 56 e2 d3 66 02 00 00 00 00 00 00 00 ..-.V..f........
    00250   80 00 00 00 80 00 00 00 1a 72 02 be 00 00 00 00 .........r......
    0*
    00400   a2 a0 d0 eb e5 b9 33 44 87 c0 68 b6 b7 26 99 c7 ......3D..h..&..
    00410   c4 a8 0a 15 35 0a fa 4f ae 3d 6a cf 38 d5 4b a8 ....5..O.=j.8.K.
    00420   00 20 00 00 00 00 00 00 de ff 01 00 00 00 00 00 . ..............
    0*
    400000  eb 3c 90 4d 54 4f 4f 34 30 32 33 00 02 02 01 00 .<.MTOO4023.....
    400010  01 00 02 00 00 f0 00 01 3f 00 10 00 00 00 00 00 ........?.......
    400020  e0 ff 01 00 00 00 29 48 bc 91 18 43 41 45 53 41 ......)H...CAESA
    400030  52 20 20 20 20 20 46 41 54 31 36 20 20 20 fa 31 R     FAT16   .1
    400040  c0 8e d8 8e c0 fc b9 00 01 be 00 7c bf 00 80 f3 ...........|....
    400050  a5 ea 56 00 00 08 b8 01 02 bb 00 7c ba 80 00 b9 ..V........|....
    400060  01 00 cd 13 72 05 ea 00 7c 00 00 cd 19 00 00 00 ....r...|.......
    0*
    4001b0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 00 ................
    4001c0  01 00 06 0f 3f 81 00 00 00 00 e0 ff 01 00 00 00 ....?...........
    0*
    4001f0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 aa ..............U.
    400200  f0 ff ff ff ff ff ff ff 00 00 00 00 00 00 00 00 ................
    0*
    420200  43 41 45 53 41 52 20 20 20 20 20 08 00 00 43 16 CAESAR     ...C.
    420210  86 4f 86 4f 00 00 43 16 86 4f 00 00 00 00 00 00 .O.O..C..O......
    420220  44 43 49 4d 20 20 20 20 20 20 20 10 00 00 3c 17 DCIM       ...<.
    420230  86 4f 86 4f 00 00 3c 17 86 4f 02 00 00 00 00 00 .O.O..<..O......
    0*
    424200  2e 20 20 20 20 20 20 20 20 20 20 10 00 00 3c 17 .          ...<.
    424210  86 4f 86 4f 00 00 3c 17 86 4f 02 00 00 00 00 00 .O.O..<..O......
    424220  2e 2e 20 20 20 20 20 20 20 20 20 10 00 00 3c 17 ..         ...<.
    424230  86 4f 86 4f 00 00 3c 17 86 4f 00 00 00 00 00 00 .O.O..<..O......
    424240  31 30 30 5f 31 32 30 36 20 20 20 10 00 00 3c 17 100_1206   ...<.
    424250  86 4f 86 4f 00 00 3c 17 86 4f 03 00 00 00 00 00 .O.O..<..O......
    0*
    424600  2e 20 20 20 20 20 20 20 20 20 20 10 00 00 3c 17 .          ...<.
    424610  86 4f 86 4f 00 00 3c 17 86 4f 03 00 00 00 00 00 .O.O..<..O......
    424620  2e 2e 20 20 20 20 20 20 20 20 20 10 00 00 3c 17 ..         ...<.
    424630  86 4f 86 4f 00 00 3c 17 86 4f 02 00 00 00 00 00 .O.O..<..O......
    424640  49 4d 47 50 30 36 35 34 44 4e 47 20 00 00 75 17 IMGP0654DNG ..u.
    424650  86 4f 86 4f 00 00 75 17 86 4f 00 00 00 00 00 00 .O.O..u..O......
    0*
    3ffbe00 a2 a0 d0 eb e5 b9 33 44 87 c0 68 b6 b7 26 99 c7 ......3D..h..&..
    3ffbe10 c4 a8 0a 15 35 0a fa 4f ae 3d 6a cf 38 d5 4b a8 ....5..O.=j.8.K.
    3ffbe20 00 20 00 00 00 00 00 00 de ff 01 00 00 00 00 00 . ..............
    0*
    3fffe00 45 46 49 20 50 41 52 54 00 00 01 00 5c 00 00 00 EFI PART....\...
    3fffe10 cc 8d 46 6c 00 00 00 00 ff ff 01 00 00 00 00 00 ..Fl............
    3fffe20 01 00 00 00 00 00 00 00 22 00 00 00 00 00 00 00 ........".......
    3fffe30 de ff 01 00 00 00 00 00 b6 e1 8c db 26 e3 47 4f ............&.GO
    3fffe40 aa 98 2d dc 56 e2 d3 66 df ff 01 00 00 00 00 00 ..-.V..f........
    3fffe50 80 00 00 00 80 00 00 00 1a 72 02 be 00 00 00 00 .........r......
    0*
    
  2. Стандартом IEEE Std 1003.1-2017 (POSIX.1-2017) определена функция stat, позволяющая получить такую информацию о файле, как размер, режим доступа, идентификатор пользователя-владельца, etc. С другой стороны, в случае файловой системы Ext2, библиотека Libext2fs предлагает функцию ext2fs_read_inode (и семейство функций ext2fs_namei для поиска номера inode по имени файла) — позволяющую получить доступ к, в сущности, той же информации (cf., например, определение структуры stat в sys/stat.h POSIX.1-2017 и описание структуры ext2_inode в ext2fs/ext2_fs.h.)

    Перечислите отличия между использованием функции stat POSIX.1-2017 и функции ext2fs_read_inode библиотеки Libext2fs. В каких случаях разработчик может предпочесть ту или иную функцию?

    Для примера, ниже приведен вывод, для одного и того же файла, команды stat пакета GNU Coreutils и одноименной команды инструмента debugfs пакета e2fsprogs, являющиеся команднострочными интерфейсами для вышеуказанных двух функций.

    $ stat -- bsdgames_2.17-28_amd64.deb 
      File: bsdgames_2.17-28_amd64.deb
      Size: 962404          Blocks: 1880       IO Block: 4096   regular file
    Device: 50fd07h/5307655d        Inode: 80028       Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Access: 2019-11-16 03:40:07.566586095 +0000
    Modify: 2018-04-28 14:25:34.000000000 +0000
    Change: 2019-11-16 02:56:21.006325859 +0000
     Birth: -
    $ debugfs -- /dev/vgnaijo/lvcokea 
    debugfs:  stat <80028> 
    Inode: 80028   Type: regular    Mode:  0644   Flags: 0x80000
    Generation: 927611923    Version: 0x00000000:00000001
    User:     0   Group:     0   Project:     0   Size: 962404
    File ACL: 0
    Links: 1   Blockcount: 1880
    Fragment:  Address: 0    Number: 0    Size: 0
     ctime: 0x5dcf6555:0182198c -- Sat Nov 16 02:56:21 2019
     atime: 0x5dcf6f97:8715abbc -- Sat Nov 16 03:40:07 2019
     mtime: 0x5ae4845e:00000000 -- Sat Apr 28 14:25:34 2018
    crtime: 0x5dcf6553:dbe21cf8 -- Sat Nov 16 02:56:19 2019
    Size of extra inode fields: 32
    Inode checksum: 0x63fece6e
    EXTENTS:
    (0-234):44032-44266
    debugfs:  quit 
    $