Один провал! LZ4 недействителен - PullRequest
1 голос
/ 23 октября 2019

У меня есть ПЗУ, которое я могу успешно прошить на Samsung S10 5G (Qualcomm). Моя цель - проверить, могу ли я изменить файл system.img в ПЗУ, но перед изменением я просто хочу убедиться, что файл AP может быть прошит после распаковки и упаковки system.img. Чтобы проверить это, я попробовал следующее:

Файл AP распакованного пакета:

A) tar мигает:

  1. Извлеченный APфайл с помощью команды tar -xf AP...tar.md5.
  2. Сжатие извлеченных файлов с помощью tar -cvf AP...tar *
  3. Прошивка с помощью Odin3 v3.13.

B) tar.md5 мигание: - Получите tar, выполнив шаги в A), а затем запустите md5sum -t AP...tar >> AP...tar и mv AP...tar AP...tar.md5

Оба Ap...tar и AP...tar.md5 успешно мигали.

Unpack-Pack system.img.ext4.lz4

  1. Извлеченный файл AP с помощью команды tar -xf AP...tar.md5. Извлеченные файлы: " boot.img.lz4 , метаданные , userdata.img.ext4.lz4 , carrier.img.ext4.lz4, persist.img.ext4.lz4 , vbmeta.img.lz4 , dqmdbg.img.ext4.lz4 , recovery.img.lz4 , vendor.img.ext4.lz4 , dtbo.img.lz4 , system.img.ext4.lz4".
  2. Извлеките системный файл с помощью команды unlz4 system.img.ext4.lz4. Это дает мне system.img.ext4 Android разреженное изображение.
  3. Попробовал следующие команды, чтобы сжать system.img.ext4 без каких-либо изменений:
    lz4 system.img.ext4 system.img.ext4.lz4                     - Default Compression
    lz4 -9 system.img.ext4 system.img.ext4.lz4              - High Compression 
    lz4 -l system.img.ext4 system.img.ext4.lz4              - Default Compression in Legacy format
    lz4 -l -9 system.img.ext4 system.img.ext4.lz4           - High Compression in Legacy format
    lz4 -0 -l system.img.ext4 system.img.ext4.lz4           - No Compression in Legacy format
    lz4 -B4 system.img.ext4 system.img.ext4.lz4             - Default Compression with Block size 4
    lz4 -B5 system.img.ext4 system.img.ext4.lz4             - Default Compression with Block size 5
    lz4 -B6 system.img.ext4 system.img.ext4.lz4             - Default Compression with Block size 6
    lz4 --no-frame-crc system.img.ext4 system.img.ext4.lz4   - Default Compression with no crc frame

и создать файл AP, заменивисходный файл system.img.ext4.lz4 со сжатым файлом из приведенной выше команды (по одному за раз) и попытался его прошить, но каждый раз, когда происходит сбой с «Odin FAIL! LZ4 недопустим»

Детали команды LZ4: 1. Работа в Ubuntu 18 2. Использование «64-битного интерфейса командной строки LZ4 r128, автор Янн Коллет (3 апреля 2018 г.)»

Пробовал с «64-битный интерфейс командной строки LZ4 v1.9.2, автор Yann Collet", но получаю тот же результат.

file system.img.ext4.lz4 вывод:

  • Исходный файл: system.img.ext4.lz4: LZ4 compressed data (v1.4+).
  • Моя версия с обоими LZ4 (r128 и v1.9.2):

    1. Для файла, сжатого с помощью legacy flag (-l): system.img.ext4.lz4: LZ4 compressed data (v0.1-v0.9)
    2. Для сжатых файлов без устаревшего флага (- l): system.img.ext4.lz4: LZ4 compressed data (v1.4+)

ИтакЯ думаю, что это означает, что филОн должен быть сжат без устаревшего флага.

Размер

  1. С флагом -9 т.е. Высокая компрессия Выходной файл имеет 3,3 ГБ .
  2. Без флага -9, т.е. Сжатие по умолчанию Выходной файл имеет 3,6 ГБ .

Оригинальный файл имеет размер 3,6 ГБ , поэтому я думаю, что не следует использовать высокую степень сжатия.

Но все равно та же ошибка выдается Одином.

Есть предположения, почему это происходит?

Ответы [ 2 ]

1 голос
/ 26 октября 2019

Используйте это:

lz4 -B6 --content-size in.img out.img.lz4

Для получения дополнительной информации: https://www.mankier.com/1/lz4

Нашли это решение по адресу: https://forum.xda -developers.com / galaxy-s9 / help /как к прессованию-SAMSUNG-изображения-LZ4-t3844760

1 голос
/ 23 октября 2019

Если предположить, что system.img.ext4 не изменен,

lz4 -l -9 system.img.ext4 system.img.ext4.lz4

должен работать. Странно, что это не так, хотя я заметил в вашем примере, что вы сжимаете system.img, а не system.img.ext4, поэтому неясно, является ли это одним и тем же файлом.

Предложение 1: может быть контрольная суммагде-то, что запрещает играть с полезной нагрузкой lz4. Эта часть специфична для системы, поэтому ее трудно узнать. Вам придется осмотреться.

Предложение 2: сравните ваш оригинальный system.img.ext4.lz4 с тем, который был получен путем повторного сжатия с lz4. Попробуйте выяснить различия (особенно, меньше, больше?)

Предложение 3: используйте более свежую версию lz4. r128 на самом деле очень стар . Вы можете локально скомпилировать более свежую версию, такую ​​как v1.9.2, которая содержит ультрарежимы, способные сжимать больше, чем -9 (уровень сжатия может быть повышен до -12).

...