У меня Huawei P10 Lite (Kirin 658).
Я пытался использовать модули Magisk для принудительного разрешения SELinux, но getenforce по-прежнему сообщает Enforcing, поэтому Фрида не может подключиться к процессам. Затем я попытался изменить KERNEL.img, установив androidboot.selinux=permissive, но каждая попытка прерывает загрузку. Что я сделал (кратко):
Извлек UPDATE.APP из официальной прошивки и проверенного раздела изображения:
Fastboot отображает флэш-память как ОК, но устройство не загружается. Приходится каждый раз восстанавливать всю прошивку через UPDATE.APP(dload). TWRP/recovery, кажется, также исчез, хотя я не прошивал восстановление.
Примечание: загрузка кажется разделенной между ядром и виртуальным диском (ядро в KERNEL_17.img, виртуальный диск в RAMDISK_25.img). Я попытался изменить init.rc ramdisk, чтобы отключить SELinux (
) и перепаковка, но прошивка завершается с ошибками, такими как несоответствие размера раздела, что указывает на то, что заголовок/размер моего переупакованного образа не соответствует ожиданиям загрузчика.
Я заметил, что файл ядра начинается с 4096 байт, которые, похоже, представляют собой подпись или хэш, специфичный для поставщика. Большинство этих байтов идентичны в разных ядрах, но область от 0x74c–
(~296 байт: 32 байта дайджеста + 4 байта флагов + 256 байт подписи) изменения. Изменение ядра делает эту подпись недействительной, и, по-видимому, именно поэтому загрузка не удалась.
fastboot: error: Failed to find AVB_MAGIC at offset: 0
Таким образом, обработка vbmeta/AVB здесь кажется нестандартной.
Вопросы
Кто-нибудь успешно модифицировал KERNEL.img (или ядро+ramdisk) на устройствах Huawei и сохранил его загрузочным?
Нужно ли мне переподписать ядро или обновить хэши/таблицы, зависящие от поставщика?
Существует ли надежный минимальный рабочий процесс для распаковки, редактирования init.rc, переупаковки виртуального диска и восстановления образа с точным совпадением заголовки/размеры, чтобы загрузчик их принял?
Любое практическое руководство, команды или инструменты (например, как сохранить подпись 4096B, исправить флаги mkbootimg, базу, размер страницы и т. д.) будут чрезвычайно полезны.
Спасибо!
У меня Huawei P10 Lite (Kirin 658). Я пытался использовать модули Magisk для принудительного разрешения SELinux, но getenforce по-прежнему сообщает [b]Enforcing[/b], поэтому Фрида не может подключиться к процессам. Затем я попытался изменить [b]KERNEL.img[/b], установив androidboot.selinux=permissive, но каждая попытка прерывает загрузку. [b]Что я сделал (кратко):[/b] [list] [*]Извлек UPDATE.APP из официальной прошивки и проверенного раздела изображения: [code]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 [/code]
[*]Изменил KERNEL_17.img (изменил cmdline на androidboot.selinux=permissive) и прошил его: [code]fastboot flash kernel KERNEL_17.img [/code] Fastboot отображает флэш-память как [b]ОК[/b], но устройство [b]не загружается[/b]. Приходится каждый раз восстанавливать всю прошивку через UPDATE.APP(dload). TWRP/recovery, кажется, также исчез, хотя я не прошивал восстановление.
[*]Примечание: загрузка кажется [b]разделенной[/b] между ядром и виртуальным диском (ядро в KERNEL_17.img, виртуальный диск в RAMDISK_25.img). Я попытался изменить init.rc ramdisk, чтобы отключить SELinux ([code]write /sys/fs/selinux/enforce 0[/code]) и перепаковка, но прошивка завершается с ошибками, такими как [b]несоответствие размера раздела[/b], что указывает на то, что заголовок/размер моего переупакованного образа не соответствует ожиданиям загрузчика.
[*]Я заметил, что файл ядра начинается с [b]4096 байт[/b], которые, похоже, представляют собой подпись или хэш, специфичный для поставщика. Большинство этих байтов идентичны в разных ядрах, но область от 0x74c–[code]0x874[/code] (~296 байт: 32 байта дайджеста + 4 байта флагов + 256 байт подписи) изменения. Изменение ядра делает эту подпись недействительной, и, по-видимому, именно поэтому загрузка не удалась.
[*]Я попробовал отключить проверку: [code]fastboot --disable-verity --disable-verification flash vbmeta VBMETA_10.img [/code] но получил: [code]fastboot: error: Failed to find AVB_MAGIC at offset: 0 [/code] Таким образом, обработка vbmeta/AVB здесь кажется нестандартной.
[/list]
[b]Вопросы[/b] Кто-нибудь успешно модифицировал KERNEL.img (или ядро+ramdisk) на устройствах Huawei и сохранил его загрузочным? [list] [*]Нужно ли мне [b]переподписать[/b] ядро или обновить хэши/таблицы, зависящие от поставщика? [*]Существует ли надежный минимальный рабочий процесс для распаковки, редактирования init.rc, переупаковки виртуального диска и восстановления образа с [b]точным совпадением заголовки/размеры[/b], чтобы загрузчик их принял? [/list] Любое практическое руководство, команды или инструменты (например, как сохранить подпись 4096B, исправить флаги mkbootimg, базу, размер страницы и т. д.) будут чрезвычайно полезны. Спасибо!