Я пытался использовать модули 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 отображает флэш-память как ОК, но устройство не загружается. Приходится каждый раз восстанавливать всю прошивку через UPDATE.APP(dload). TWRP/recovery, кажется, также исчез, хотя я не прошивал восстановление.
Код: Выделить всё
fastboot flash kernel KERNEL_17.img - Примечание: загрузка кажется разделенной между ядром и виртуальным диском (ядро в KERNEL_17.img, виртуальный диск в RAMDISK_25.img). Я попытался изменить init.rc ramdisk, чтобы отключить SELinux () и перепаковка, но прошивка завершается с ошибками, такими как несоответствие размера раздела, что указывает на то, что заголовок/размер моего переупакованного образа не соответствует ожиданиям загрузчика.
Код: Выделить всё
write /sys/fs/selinux/enforce 0 - Я заметил, что файл ядра начинается с 4096 байт, которые, похоже, представляют собой подпись или хэш, специфичный для поставщика. Большинство этих байтов идентичны в разных ядрах, но область от 0x74c–(~296 байт: 32 байта дайджеста + 4 байта флагов + 256 байт подписи) изменения. Изменение ядра делает эту подпись недействительной, и, по-видимому, именно поэтому загрузка не удалась.
Код: Выделить всё
0x874 - Я попробовал отключить проверку:
но получил:
Код: Выделить всё
fastboot --disable-verity --disable-verification flash vbmeta VBMETA_10.imgТаким образом, обработка vbmeta/AVB здесь кажется нестандартной.Код: Выделить всё
fastboot: error: Failed to find AVB_MAGIC at offset: 0
Кто-нибудь успешно модифицировал KERNEL.img (или ядро+ramdisk) на устройствах Huawei и сохранил его загрузочным?
- Нужно ли мне переподписать ядро или обновить хэши/таблицы, зависящие от поставщика?
- Существует ли надежный минимальный рабочий процесс для распаковки, редактирования init.rc, переупаковки виртуального диска и восстановления образа с точным совпадением заголовки/размеры, чтобы загрузчик их принял?
Спасибо!
Подробнее здесь: https://stackoverflow.com/questions/797 ... -enforcing