Образ Android


  Образ       Файлы       GPT     Разделы     RAW  

    super.fex       boot-resource.fex     boot_package.fex     boot0_sdcard.fex     cardscript.fex     cardtool.fex     split_xxxx.fex     fes1.fex  

Файл super.fex

Этот файл в imagewty-образе прошивки Android хранится в sparse (разреженном) формате. В версии V1.1 его размер файла super.fex равен 852623532 байт (примерно 850 Мб).

Однако при записи на карту он преобразуется в raw (необработанный) формат, в котором восстанавливается его полный размер, который составляет 1610612736 байт (примерно 1.5 Гб). Таким образом, файл в образе сжат примерно в 2 раза.

Для конвертации файла на ПК (в т.ч. под Windows) можно воспользоваться утилитой simg2img

simg2img.exe -i super.fex -o super.img

При записи образа на карту с помощью утилиты PhoenixCard выполняется преобразование sparse -> raw "на лету" (т.е. без сохранения raw-файла). В интерфейсе утилиты это преобразование отображается "приостановкой" весёлого движения прогресс-бара (при достижении значения примерно 24%) на достаточно заметное время (до десятков секунд), после чего в окне появляется сообщение о успешной записи super.

В случае записи раздела super непосредственно на устройстве в режиме fastboot (командой fastboot flash super ) также используется файл super.fex в sparse-формате (без предварительного преобразования). При этом сокращается время и объем передаваемых данных за счет пропуска пустых chunks (кусков), помеченных в файле как CHUNK_TYPE_DONT_CARE.

Принцип создания sparse-файла показан на рисунке:


Дыры (Holes - разреженные (sparse) нулевые байты, которые не занимают пространства на физическом диске

Области с реальными данными, которые занимают пространства на физическом диске


Размер логического файла

Размер физического файла

Утилита superunpacker.exe извлекает из RAW-файла super.img три файла содержимого системных разделов:

  • system.ext4
  • vendor.ext4
  • product.ext4

    Лог распаковки выглядит так:



    Usage:
    superunpack superimage
    or to extract as a RW:
    superunpack superimage 1
    Or drag and drop superimage to superunpack

    Для продолжения нажмите любую клавишу . . .

    C:\SUPER>superunpack super.raw

    LpMetadataGeometry magic = 0x616c4467
    LpMetadataGeometry struct size = 0x34
    LpMetadataGeometry sha256 =
    4E31CF64275442F40E25C
    772A18D1FCCD8B1291232
    E593F65E522FC7AC07DF03
    LpMetadataGeometry metadata_max_size = 0x10000
    LpMetadataGeometry metadata_slot_count = 0x2
    LpMetadataGeometry logical_block_size = 0x1000

    LpMetadataHeader magic = 0x414c5030
    LpMetadataHeader major_version = 10
    LpMetadataHeader minor_version = 0
    LpMetadataHeader header_size = 0x80
    LpMetadataHeader header sha256 =
    5A7E4276B3889F695
    B2AF81406A3D2CCC40
    59FEA2B6174BCD568
    8F18C58A4224
    LpMetadataHeader tables_size = 0x184
    LpMetadataHeader tables sha256 =
    3189D5DA05528215C
    D157BEFDFCFF871092
    AB62AF9047E020953
    57489FC12BE5
    LpMetadataHeader partitions offset = 0x0
    LpMetadataHeader partitions num_entries = 0x3
    LpMetadataHeader partitions entry_size = 0x34
    LpMetadataHeader extents offset = 0x9c
    LpMetadataHeader extents num_entries = 0x3
    LpMetadataHeader extents entry_size = 0x18
    LpMetadataHeader groups offset = 0xe4
    LpMetadataHeader groups num_entries = 0x2
    LpMetadataHeader groups entry_size = 0x30
    LpMetadataHeader block_devices offset = 0x144
    LpMetadataHeader block_devices num_entries = 0x1
    LpMetadataHeader block_devices entry_size = 0x40

    Partitions = 3 used, 0 not used, total 3

    partition_1_name = system
    attributes = 0x1
    first_extent_index = 0x0
    num_extents = 0x1
    group_index = 0x1
    partition_group = sb
    extent num_sectors = 0x12ae48
    (0x255c9000 bytes total)
    extent target_type = 0x0
    extent target_data = 0x800
    (dumping offset = 0x100000)
    extent target_source = 0x0
    Filetype EXT4. EXT4 size = 0x24c46000
    Dumping system.ext4 ...
    .........
    .........
    partition_2_name = vendor
    attributes = 0x1
    first_extent_index = 0x1
    num_extents = 0x1
    group_index = 0x1
    partition_group = sb
    extent num_sectors = 0x393d8
    (0x727b000 bytes total)
    extent target_type = 0x0
    extent target_data = 0x12b800
    (dumping offset = 0x25700000)
    extent target_source = 0x0
    Filetype EXT4. EXT4 size = 0x7099000
    Dumping vendor.ext4 ...
    ......
    partition_3_name = product
    attributes = 0x1
    first_extent_index = 0x2
    num_extents = 0x1
    group_index = 0x1
    partition_group = sb
    extent num_sectors = 0x36018
    (0x6c03000 bytes total)
    extent target_type = 0x0
    extent target_data = 0x165000
    (dumping offset = 0x2ca00000)
    extent target_source = 0x0
    Filetype EXT4. EXT4 size = 0x6a39000
    Dumping product.ext4 ...
    Для продолжения нажмите любую клавишу . . .

    Ссылки для загрузки утилит распаковки файла SUPER (исполняемые файлы EXE в zip-архиве):

  • simg2img
  • superunpacker