Пожалуйста, обратите внимание, что пользователь заблокирован
Кастомизация устройства Samsung с пользовательским ядром
В моем последнем уроке я шаг за шагом объяснял, как скомпилировать собственное ядро Samsung, я настоятельно рекомендую вам прочитать эту статью, так как она содержит несколько важных шагов по подготовке среды. Теперь, в этой статье я расскажу, как прошить ядро, которое мы уже скомпилировали.
Отказ от ответственности: получение root прав на вашем телефоне, приведет к аннулированию гарантии из-за необратимого взрыва eFuse на устройстве.
Подготовка окружающей среды
В этом руководстве я предполагаю, что у вашего устройства есть root-права. Если нет, то это руководство поможет вам в этом. Загрузите файл cache.img и файл recovery.img на компьютер, так как они понадобятся для прошивки устройства без необходимости сброса настроек на заводские.
Итак, чтобы мы могли перепрограммировать ядро, которое мы только что скомпилировали, нам нужно получить загрузочный образ устройства, внутри которого находится ядро zImage. Его мы можем перезаписать. Это также поможет, если мы хотим восстановить загрузочный образ до заводских настроек.
Есть два возможных пути достижения этого:
● Сделайте резервную копию образа устройства с помощью пользовательского восстановления.
● Дамп загрузочного образа устройства с помощью «dd».
Мы рассмотрим только второй вариант, так как для первого уже существует много уроков. Но сначала нам нужно убедиться, что у нас все готово.
Во-первых, убедитесь, что в вашей виртуальной машине установлены как ADB, так и Heimdall. Эти инструменты помогут взаимодействовать с устройством удаленно после загрузки и в режиме загрузки соответственно.
sudo apt-get install heimdall-flash adbНа нашем гипервизоре(hypervisor) (если возможно) желательно установить его так, чтобы он автоматически подключал наше устройство к нашей ВМ, что сэкономит нам много времени.
Если вы хотите сделать это в VMware Fusion, перейдите в Виртуальная машина -> USB и Bluetooth -> Настройки USB и Bluetooth и измените Plug in action на устройстве так, чтобы оно подключалось к нашей машине Linux. Конечно, для этого устройство должно быть подключено к компьютеру. Вам придется сделать это дважды, один раз для adb (как только вы включите отладку по USB) и один раз для Heimdall (в режиме загрузки).
Теперь нам нужно включить отладку по USB и разблокировать OEM нашем телефоне. На вашем устройстве перейдите в «Настройки» -> «О телефоне» -> «Информация о программном обеспечении», а затем нажмите 7 раз на «Номер сборки», что активирует режим разработчика . После этого вернитесь к настройкам, откройте «Опции разработчика» и включите опции «Разблокировка OEM» и «Отладка USB».
Убедитесь, что разблокировка OEM всегда включена, иначе ваш телефон не загрузится.
Отключите и снова подключите USB-кабель к вашему устройству, авторизуйте соединение ADB на нем, а затем, когда вы запустите «adb devices» на терминале, вы должны увидеть это:
Мы также можем подключиться к устройству, используя «adb shell»:
Устройство перед прошивкой с нашим кастомным ядром
После включения ADB мы должны убедиться, что Heimdall работает правильно. Для этого вам необходимо перезагрузить устройство в «режиме загрузки», что можно легко осуществить с помощью ADB, выполнив «загрузку с помощью adb». В противном случае используем комбинацию кнопок во время загрузки. В случае с S7 вам нужно удерживать "кнопка домой + кнопка питание + громкость вниз".
Режим загрузки
Если все прошло успешно, то вы должны увидеть что-то вроде этого, когда запустите команду «hemidall detect, а затем «heimdall print-pit»:
Hemidall detect
Heimdall print-pit
Ваше устройство будет перезагружаться каждый раз, когда вы используете Heimdall, но вы можете избежать этого, используя переключатель «--no-reboot», однако это не рекомендуется, поскольку Heimdall не будет работать, пока вы не перезагрузите устройство, независимо от того, какие функции вы использовали.
Получение загрузочного образа
На данный момент это самый простой и быстрый способ получить загрузочный образ, поскольку он использует инструменты, которые доступны для нас по умолчанию. Мы собираемся использовать инструмент «dd».
Сначала зайдите в устройство и станьте root, используя supersu:
Затем нам нужно получить правильную точку монтирования. Для этого перейдите в /dev/block/platform/ и выведите содержимое, найдите правильную виртуальную папку внутри (в моем случае это «155a0000.ufs»), а внутри нее выведите содержимое папки командой «ls -la by-name», которая должна вывести вам все пути и точки монтирования.
Как видите, есть запись, которая называется «BOOT» и указывает, в моем случае, на /dev/block/sda5. Мы собираемся сбросить её с помощью следующей команды:
dd if=[mounting/point] of=[output/file.img]Которая в моем случае будет:
dd if=/dev/block/sda5 of=/sdcard/Download/boot.imgИ затем, мы можем легко загрузить её с помощью «adb pull»
adb pull /sdcard/Download/boot.img .
Распаковка, перезапись, сборка, перепрошивка
Теперь, когда у нас есть загрузочный образ и наше ядро, мы должны распаковать загрузочный образ, перезаписать zImage, который содержит ядро с тем, которое мы скомпилировали, собрать загрузочный образ и прошить его с Heimdall. (Чуть не умер, пока перевёл XD)
Распаковка: для этого мы будем использовать инструмент под названием Android Image Kitchen или AIK. Который можно найти тут. После загрузки файла мы его где-то распаковываем и копируем в загрузочный образ, полученный с устройства. Затем мы запускаем «unpackimg.sh» и «boot.img», после чего он будет распакован.
Перезапись: вы наверное заметили, что были созданы две новые папки. « Ramdisk » и « split_img ». Первая содержит всё, что нужно для загрузки телефона , а вторая содержит оставшееся содержимое, включая образ ядра. Зайдите в папку split_img и найдите файл, который заканчивается на «zImage», и перезапишите его файлом «Image», который мы создали, когда мы скомпилировали наше ядро.
Сборка: Как только образ ядра будет на месте, нам нужно будет упаковать его, чтобы перепрошить на наше устройство. Для этого мы вернемся к корню AIK-Linux и запустим «./repackimg.sh», который автоматически создаст файл с именем «image-new.img», который будет нашим новым загрузочным образом.
Перепрошивка: теперь, когда у нас есть новый образ, мы можем его перенести на наше устройство. Для этого нам нужно перевести его в режим загрузки и использовать Heimdall для его прошивки. Тем не менее, настоятельно рекомендуется также прошить образы для восстановления и кэширования, полученные вами в процессе рутирования, в противном случае вам может потребоваться сброс настроек до заводских.
Я написал этот маленький скрипт, который выполнит все четыре шага одновременно:
Код:
#!/bin/bash
cp ../samsung-kernel/arch/arm64/boot/Image split_img/boot.img-zImage
./repackimg.sh
adb reboot download
sleep 8
heimdall flash --BOOT image-new.img --RECOVERY ../Downloads/recovery.img --CACHE ../Downloads/cache.img
Это, конечно, предполагает, что вы выполняете его в папке AIK, и что recovery.img и cache.img находятся в папке Downloads. Обратите внимание, что имена разделов («BOOT», «RECOVERY» и «CACHE») пишутся с большой буквы и с учетом регистра.
Ваше устройство будет перезагружено пару раз, и после того, как мы подключимся к нему, если вы выполните «uname -a», вы увидите следующее:
Посмотри дату на ядре!
Как вы видите, мы успешно обновили наше ядро!
Что может пойти не так?
Итак, вы только что закончили перепрошивать свое новое ядро и столкнулись с проблемами. Вот несколько вещей, с которыми у меня были проблемы, и как их решить:
● Если после перепрошивки ваше устройство застряло на цикле загрузки, попробуйте выполнить сброс до заводских настроек через режим восстановления. Это делается по-разному на каждом устройстве. В моем случае, вы должны удерживать "кнопку питания + громкость вверх + домой", пока не получите экран восстановления.
● Устройство зависло в процессе загрузки. Вы пытались выключить и снова включить? : D
● Если ничего не работает, вы можете проверить журнал kmsg в /proc/last_kmsg. Для этого я рекомендую установить на телефон TWRP, загрузиться его и посмотреть содержимое.
Специально для xss.pro
Переводчик статьи - https://xss.pro/members/177895/
Источник: https://medium.com/@alex91ar/debugging-the-samsung-android-kernel-part-2-cebac7069863
Вложения
Последнее редактирование: