Файловые системы и способы организации данных на блочных устройствах

Номинальный вклад этой работы в оценку — 20 единиц.

Ext2 и более поздние версии

  1. (2 ед.) Сформируйте в файле образ файловой системы используя программы пакета E2fsprogs. Включите в образ две директории (помимо корневой) и три файла, не являющихся директориями. Удостоверьтесь в целостности образа.

    Пример: создание образа ФС и наполнение его файлами.
    $ mktemp -- e2.XXXXXXXX 
    e2.sewomyir
    $ truncate -s13M -- e2.sewomyir 
    $ /sbin/mke2fs -- e2.sewomyir 
    
    $ /sbin/debugfs -- e2.sewomyir 
    debugfs:  mkdir teid 
    debugfs:  cd teid 
    debugfs:  mkdir owkac 
    debugfs:  mknod  null  c 1 3 
    debugfs:  mknod  lohif p 
    debugfs:  symlink ocof /dev/zero 
    debugfs:  ls 
    
     12  (12) .    2  (12) ..    13  (16) owkac   
     14  (12) null    15  (16) lohif    16  (956) ocof   
    debugfs:  quit 
    $ 
    
    Пример: проверка целостности.
    $ /sbin/e2fsck -fpv -- e2.sewomyir 
    Pass 1: Checking inodes, blocks, and sizes
    Pass 2: Checking directory structure
    Pass 3: Checking directory connectivity
    Pass 4: Checking reference counts
    Pass 5: Checking group summary information
    
              16 inodes used (0.48%, out of 3328)
               0 non-contiguous files (0.0%)
               0 non-contiguous directories (0.0%)
                 # of inodes with ind/dind/tind blocks: 0/0/0
             543 blocks used (4.08%, out of 13312)
               0 bad blocks
               0 large files
    
               0 regular files
               4 directories
               1 character device file
               0 block device files
               1 fifo
               0 links
               1 symbolic link (1 fast symbolic link)
               0 sockets
    ------------
               7 files
    $ 

FFS

  1. (2 ед.) Сформируйте в файле образ файловой системы используя программу makefs. Включите в образ не менее десяти файлов, включая две директории (помимо корневой) и два обычных файла. Удостоверьтесь в целостности образа.

ECMA 107 (FAT)

  1. (1 ед.) Сформируйте в файле образ файловой системы. Удостоверьтесь в целостности образа.

    Пример: создание образа.
    $ mktemp -- fat.XXXXXXXX 
    fat.doderaks
    $ truncate -s15M -- fat.doderaks 
    $ mformat -i fat.doderaks  
    $ 
    Пример: проверка целостности.
    $ /sbin/dosfsck -fv -- fat.doderaks 
    Boot sector contents:
    System ID "MTOO4023"
    Media byte 0xf0 (5.25" or 3.5" HD floppy)
           512 bytes per logical sector
           512 bytes per cluster
             1 reserved sector
    First FAT starts at byte 512 (sector 1)
             2 FATs, 16 bit entries
         60416 bytes per FAT (= 118 sectors)
    Root directory starts at byte 121344 (sector 237)
           512 root directory entries
    Data area starts at byte 137728 (sector 269)
         29971 data clusters (15345152 bytes)
    63 sectors/track, 16 heads
             0 hidden sectors
         30240 sectors total
    Reclaiming unconnected clusters.
    fat.doderaks: 0 files, 0/29971 clusters
    $ 
  2. (1 ед.) Сформируйте конфигурационый файл для программ пакета GNU Mtools. Удостоверьтесь в работоспособности.

    Пример конфигурационого файла ~/.mtoolsrc.
    drive p: file="/home/private/jrh/fat.doderaks"
      mtools_skip_check=1
    drive q: file="/home/private/jrh/mbr.roawyavo"
      partition=1
    
  3. (1 ед.) Создайте на образе не менее двух директорий и скопируйте на него же не менее трех обычных файлов. Удостоверьтесь в целостности и читаемости.

    Пример: наполнение образа файлами.
    $ mmd -- p:/DCIM{,/100NUPEA} 
    $ mcopy -- moab chesdea.txt ajnu p:/ 
    $ 
    
    Пример: проверка читаемости директорий.
    $ mdir -w -- p:/{,DCIM/{,/100NUPEA}} 
     Volume in drive : has no label
     Volume Serial Number is 2D0F-B7DA
    Directory for p:/
    
    [DCIM]          moab            chesdea.txt     ajnu           
            4 files                  19 bytes
    
    Directory for p:/DCIM
    
    [.]             [..]            [100NUPEA]     
            3 files                   0 bytes
    
    Directory for p:/DCIM/100NUPEA
    
    [.]             [..]           
            2 files                   0 bytes
    
    Total files listed:
            9 files                  19 bytes
                             15 343 104 bytes free
    
    $ 
    

Таблицы разделов; GPT, MBR

  1. (1 ед.) Сформируйте в файле образ блочного устройства с таблицей разделов GPT и двумя разделами. Удостоверьтесь в читаемости.

    Пример: создание образа блочного устройства с таблицей разделов программой sgdisk.
    $ mktemp -- gpt.XXXXXXXX 
    gpt.noaccyij
    $ truncate -s32M -- gpt.noaccyij 
    $ /sbin/sgdisk -g -n1:1M:14M -N2 -- gpt.noaccyij 
    $ /sbin/sgdisk -p -- gpt.noaccyij 
    Disk gpt.noaccyij: 65536 sectors, 32.0 MiB
    Sector size (logical): 512 bytes
    Disk identifier (GUID): 11B12B96-327E-479F-ABA9-E79771EA9744
    Partition table holds up to 128 entries
    Main partition table begins at sector 2 and ends at sector 33
    First usable sector is 34, last usable sector is 65502
    Partitions will be aligned on 2048-sector boundaries
    Total free space is 4061 sectors (2.0 MiB)
    
    Number  Start (sector)    End (sector)  Size       Code  Name
       1            2048           28672   13.0 MiB    8300  
       2           30720           65502   17.0 MiB    8300  
    $ 
    
  2. (1 ед.) Сформируйте в файле образ блочного устройства с таблицей разделов MBR и одним разделом.

    Пример: создание образа блочного устройства с таблицей разделов программой sfdisk.
    $ mktemp -- mbr.XXXXXXXX 
    mbr.roawyavo
    $ truncate -s16M -- mbr.roawyavo
    $ /sbin/sfdisk -- mbr.roawyavo 
    >>> label: dos 
    >>> unit: sectors 
    >>> start=2048, size=30720, type=c, bootable 
    Device        Boot Start   End Sectors Size Id Type
    mbr.roawyavo1 *     2048 32767   30720  15M  c W95 FAT32 (LBA)
    mbr.roawyavo2 write 
    $ /sbin/sfdisk -d -- mbr.roawyavo 
    label: dos
    label-id: 0x3421f68b
    device: mbr.roawyavo
    unit: sectors
    
    mbr.roawyavo1 : start= 2048, size= 30720, type=c, bootable
    
    $ 
    
  3. (1 ед.) Разместите в разделе образа какую-либо файловую систему. Скорректируйте, при необходимости, код типа ФС в таблице разделов. Удостоверьтесь в читаемости.

    Пример: помещение образа ФС на образ блочного устройства программой dd.
    $ dd bs=4k count=3328 seek=256 \
          conv=notrunc,sparse of=gpt.noaccyij \
          < e2.sewomyir 
    
    

Sleuthkit

  1. (1 ед.) Воспользуйтесь программой fls для получения списка файлов образа ФС.

    Пример: использование fls.
    $ fls -apr -- e2.sewomyir 
    d/d 11:	lost+found
    d/d 12:	teid
    d/d 13:	teid/owkac
    c/c 14:	teid/null
    p/p 15:	teid/lohif
    l/l 16:	teid/ocof
    V/V 3329:	$OrphanFiles
    $ 
    
  2. (1 ед.) Воспользуйтесь программой icat для извлечения содержимого обычного файла образа ФС.

    Пример: использование icat.
    $ icat -- e2.sewomyir 31 | LC_ALL=C less -F 
    
  3. (2 ед.) Воспользуйтесь программой icat для извлечения содержимого файла, отличного от обычного, из образа ФС. Объясните вывод.

  4. (2 ед.) Воспользуйтесь программой istat для получения информации о каких-либо двух файлах различных типов, находящихся на образе ФС. Объясните вывод.

    Пример: использование istat.
    $ istat -- e2.sewomyir 16 
    inode: 16
    Allocated
    Group: 0
    Generation Id: 0
    symbolic link to: /dev/zero
    uid / gid: 0 / 0
    mode: lrwxrwxrwx
    size: 9
    num of links: 1
    
    Inode Times:
    Accessed:	2020-02-07 16:57:33 (UTC)
    File Modified:	2020-02-07 16:57:33 (UTC)
    Inode Modified:	2020-02-07 16:57:33 (UTC)
    
    Direct Blocks:
    0 
    $ 
    

Архивные файловые системы

  1. (1 ед.) Сфорируйте в файле образ файловой системы ИСО 9660:1988 (Ecma 119; .iso.) Включите в образ не менее десяти файлов, включая две директории (помимо корневой) и два обычных файла. Удостоверьтесь в читаемости.

  2. (1 ед.) Сфорируйте в файле образ файловой системы Squashfs. Включите в образ не менее десяти файлов, включая две директории (помимо корневой) и два обычных файла. Удостоверьтесь в читаемости.

Работа на низком уровне

  1. (1 ед.) Получите копию образа какой-либо ФС в шестнадцатеричном виде (например, используя xxd -a.) Опишите основные области образа.

  2. (1 ед.) Внесите осмысленные изменения в «шестнадцатеричную копию» образа и воссоздайте образ из этой копии (например, используя xxd -r.) Удостоверьтесь в работоспособности результата.

Оформление отчета

  1. (1 ед.) Оформите отчет в виде документа HTML.

    Обратите внимание на то, что документ должен не только корректно воспроизводится соответствующим программным обеспечением, но и успешно проходить формальную проверку с использованием http://html5.validator.nu/ и (или) иных подобных средств. Элементы и атрибуты HTML должны быть использованы семантически-обоснованно — сообразно смыслу, которым их наделяет текущая практика и актуальные спецификации.

  2. (1 ед.) Передайте файл (файлы) отчета в виде образа файловой системы ИСО/МЭК 9293:1994 (Ecma 107; FAT; возможно — с какой-либо таблицей разделов) или ИСО 9660:1988 (Ecma 119; .iso.)