Прошивка модифицированного KERNEL.img на Huawei прерывает загрузку — SELinux остается обязательным, нельзя использовать Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Прошивка модифицированного KERNEL.img на Huawei прерывает загрузку — SELinux остается обязательным, нельзя использовать

Сообщение Anonymous »

У меня Huawei P10 Lite (Kirin 658).
Я пытался использовать модули Magisk для принудительного разрешения SELinux, но getenforce по-прежнему сообщает Enforcing, поэтому Фрида не может подключиться к процессам. Затем я попытался изменить KERNEL.img, установив androidboot.selinux=permissive, но каждая попытка прерывает загрузку.
Что я сделал (кратко):
  • Извлек UPDATE.APP из официальной прошивки и проверенного раздела изображения:

    Код: Выделить всё

    CACHE_26.img  CRC_2.img  CURVER_4.img  DTS_16.img  ERECOVERY_KERNEL_21.img
    ERECOVERY_RAMDISK_22.img  ERECOVERY_VBMETA_24.img  KERNEL_17.img  META-INF
    MODEM_FW_29.img  MODEMNVM_UPDATE_11.img  PRODUCT_33.img  RAMDISK_25.img
    RECOVERY_RAMDISK_18.img  RECOVERY_VENDOR_19.img  SYSTEM_27.img  TEEOS_12.img
    TRUSTFIRMWARE_13.img  VENDOR_30.img  VBMETA_10.img  VERSION_31.img  XLOADER_7.img
    
  • Изменил KERNEL_17.img (изменил cmdline на androidboot.selinux=permissive) и прошил его:

    Код: Выделить всё

    fastboot flash kernel KERNEL_17.img
    
    Fastboot отображает флэш-память как ОК, но устройство не загружается. Приходится каждый раз восстанавливать всю прошивку через UPDATE.APP(dload). TWRP/recovery, кажется, также исчез, хотя я не прошивал восстановление.
  • Примечание: загрузка кажется разделенной между ядром и виртуальным диском (ядро в KERNEL_17.img, виртуальный диск в RAMDISK_25.img). Я попытался изменить init.rc ramdisk, чтобы отключить SELinux (

    Код: Выделить всё

    write /sys/fs/selinux/enforce 0
    ) и перепаковка, но прошивка завершается с ошибками, такими как несоответствие размера раздела, что указывает на то, что заголовок/размер моего переупакованного образа не соответствует ожиданиям загрузчика.
  • Я заметил, что файл ядра начинается с 4096 байт, которые, похоже, представляют собой подпись или хэш, специфичный для поставщика. Большинство этих байтов идентичны в разных ядрах, но область от 0x74c– (~296 байт: 32 байта дайджеста + 4 байта флагов + 256 байт подписи) изменения. Изменение ядра делает эту подпись недействительной, и, по-видимому, именно поэтому загрузка не удалась.
  • Я попробовал отключить проверку:

    Код: Выделить всё

    fastboot --disable-verity --disable-verification flash vbmeta VBMETA_10.img
    
    но получил:

    Код: Выделить всё

    fastboot: error: Failed to find AVB_MAGIC at offset: 0
    
    Таким образом, обработка vbmeta/AVB здесь кажется нестандартной.
Вопросы
Кто-нибудь успешно модифицировал KERNEL.img (или ядро+ramdisk) на устройствах Huawei и сохранил его загрузочным?
  • Нужно ли мне переподписать ядро или обновить хэши/таблицы, зависящие от поставщика?
  • Существует ли надежный минимальный рабочий процесс для распаковки, редактирования init.rc, переупаковки виртуального диска и восстановления образа с точным совпадением заголовки/размеры, чтобы загрузчик их принял?
Любое практическое руководство, команды или инструменты (например, как сохранить подпись 4096B, исправить флаги mkbootimg, базу, размер страницы и т. д.) будут чрезвычайно полезны.
Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/797 ... -enforcing
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»