leinariys
@leinariys
разработка на джаве + спринг + stm32

Как запаковывать system_a.img для MIUI 13 c Android 12?

Как правильно упаковать system_a.img?
Какое сжатие надо использовать и степень сжатия в этой команде?
Тестовый телефон xiaomi 12 pro
# Запаковываем
sudo mkfs.erofs -z lz4hc system.new.img ./new_system

Вот полный список используемых команд:
## Подготовка инструментов
```bash
# Подготовка инструментов
## simg2img
sudo apt install android-sdk-libsparse-utils

## lpunpack + lpmake
mkdir ./bin && cd ./bin
sudo apt install clang zlib1g-dev
git clone https://github.com/LonelyFool/lpunpack_and_lpmake.git
cd lpunpack_and_lpmake/ && ./make.sh && cd ..
cp ./lpunpack_and_lpmake/bin/lpunpack ./
cp ./lpunpack_and_lpmake/bin/lpmake ./
rm -rf ./lpunpack_and_lpmake

## imjtool - newandroidbook.com/tools/imjtool.html
wget newandroidbook.com/tools/imjtool.tgz
mkdir ./imjtool_tmp
tar -xf imjtool.tgz -C ./imjtool_tmp
cp ./imjtool_tmp/imjtool.ELF64 ./imjtool
rm -rf ./imjtool_tmp imjtool.tgz
cd ..

```

## Краткая версия
```bash
# Распаковываем
simg2img super.img super.unsparsed.img
imjtool/imjtool.ELF64 super.unsparsed.img extract
mkdir ./old_system
sudo mount -t erofs -o loop extracted/system_a.img ./old_system
mkdir ./new_system
sudo rsync -a ./old_system/ ./new_system

# Вносим изменения (тестовый файл)
sudo touch ./new_system/little_test

# Запаковываем
sudo mkfs.erofs -z lz4hc system.new.img ./new_system

# Считаем размеры
size_super=$(stat -c%s ./super.unsparsed.img)
size_system=$(stat -c%s ./system.new.img) # Внимание: здесь system.new.img или ./extracted/system_a.img
size_system_ext=$(stat -c%s ./extracted/system_ext_a.img)
size_product=$(stat -c%s ./extracted/product_a.img)
size_vendor=$(stat -c%s ./extracted/vendor_a.img)
size_odm=$(stat -c%s ./extracted/odm_a.img)
size_vendor_dlkm=$(stat -c%s ./extracted/vendor_dlkm_a.img)
size_group=$(($size_system+\
$size_system_ext+\
$size_product+\
$size_vendor+\
$size_odm+\
$size_vendor_dlkm))

# Внимание: --image system_a=./system.new.img варианты system.new.img или ./extracted/system_a.img
./bin/lpmake \
--metadata-size 65536 \
--super-name super \
--metadata-slots 2 \
--device super:$size_super \
--group qti_dynamic_partitions_a:$size_group \
--partition system_a:readonly:$size_system:qti_dynamic_partitions_a \
--partition system_ext_a:readonly:$size_system_ext:qti_dynamic_partitions_a \
--partition product_a:readonly:$size_product:qti_dynamic_partitions_a \
--partition vendor_a:readonly:$size_vendor:qti_dynamic_partitions_a \
--partition odm_a:readonly:$size_odm:qti_dynamic_partitions_a \
--partition vendor_dlkm_a:readonly:$size_vendor_dlkm:qti_dynamic_partitions_a \
--image system_a=./system.new.img \
--image system_ext_a=./extracted/system_ext_a.img \
--image product_a=./extracted/product_a.img \
--image vendor_a=./extracted/vendor_a.img \
--image odm_a=./extracted/odm_a.img \
--image vendor_dlkm_a=./extracted/vendor_dlkm_a.img \
--group qti_dynamic_partitions_b:0 \
--partition system_b:readonly:0:qti_dynamic_partitions_b \
--partition system_ext_b:readonly:0:qti_dynamic_partitions_b \
--partition product_b:readonly:0:qti_dynamic_partitions_b \
--partition vendor_b:readonly:0:qti_dynamic_partitions_b \
--partition odm_b:readonly:0:qti_dynamic_partitions_b \
--partition vendor_dlkm_b:readonly:0:qti_dynamic_partitions_b \
--output ./out.super.img --sparse
```
Попытки:
## Стоковый system, сжитие не трогалось - работает

## Новый system, без сжитие - не работает
## Новый system, lz4hc - не работает
## Новый system, lz4,100 - не работает
## Новый system, lz4 - не работает
## Новый system, lz4,5 - не работает
  • Вопрос задан
  • 1063 просмотра
Решения вопроса 1
leinariys
@leinariys Автор вопроса
разработка на джаве + спринг + stm32
Проблема оказалась ещё в одной защите которая книмается следующими ключами:
В итоге, что бы отключить защиты через fastboot надо указать флаги --disable-verity --disable-verification в момент прошивки оригинальных vbmeta*
fastboot --disable-verity --disable-verification flash vbmeta_a vbmeta.img
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы