Я пытаюсь изучить настройку ядра, и для этого у меня есть целевое устройство OnePlus 6T.Я могу скомпилировать исходный код ядра на моем Ubuntu 18, выполнив следующие действия:
- Загрузите последний dtc из https://packages.ubuntu.com/cosmic/a...piler/download и установите его.
- Клонируйте исходный код ядракод: git clone https://github.com/OnePlusOSS/androi...lus_sdm845.git
- Clone ToolChain: git clone -b linaro-4.9-arm-linux-androideabi https://github.com/ArchiDroid/Toolchain предварительная сборка / gcc / linux-x86 / arm / arm-linux-androideabi-linaro-4.8
- Откройте терминал в prebuilts / gcc / linux-x86 / aarch64 / aarch64-linux-android-linaro-4.9 и запустите: export CROSS_COMPILE = $ (pwd) / bin / aarch64-linux-android-
- Найдите путь к исходному коду ядра в том же терминале.
- export ARCH = arm64 && export SUBARCH = arm64
- make clean
- make mrproper
- mkdir Out
- make O = Out sdm845_defconfig
- make O = Out DTC_EXT = dtc CONFIG_BUILD_ARM64_DT_OVERLAY = y DTC_EXT = dtc -j4
- arch / arm64 / boot / Image.gz-dtb
- arch / arm64 /boot / Image.gz
- arch / arm64 / boot / Image
Мне нужна услуга:
- Какое изображение я могу использовать для прошивкиAndroid-устройство?
- Достаточно ли загрузки образа с TWRP для прошивки ядра?
Найдена документация Google
https://source.android.com/devices/bootloader/partitions-images
Согласно следующим строкам из документации Google:
boot : Загрузочный раздел содержит образ ядра и диск RAM, объединенные через mkbootimg.Чтобы напрямую перепрограммировать ядро, не перепрошивая новый загрузочный раздел, можно использовать виртуальный раздел:
kernel : виртуальный раздел ядра перезаписывает только ядро (zImage, zImage-dtb,Image.gz-dtb), написав новое изображение поверх старого.Для этого он определяет начальное местоположение существующего образа ядра в eMMC и копирует в это местоположение, учитывая, что новый образ ядра может быть больше существующего.Загрузчик может освободить место, перемещая любые данные после него или отказываясь от операции с ошибкой.Если предоставленное ядро разработки несовместимо, вам может потребоваться обновить раздел dtb, если таковой имеется, или раздел поставщика или системы с соответствующими модулями ядра.
Я думаю, что для прошивки необходимо использовать arch/arm64/boot/Image.gz-dtb
ядро.Насколько я понимаю, Image.gz-dtb - это виртуальный образ, который можно использовать для прошивки только ядра на Android.
Тем не менее, я не могу найти правильный шаг для его прошивки.Мне интересно, если я сделаю что-то не так, тогда я сломаю свое устройство, поэтому перед прошивкой я хочу быть уверенным, что оно будет работать.
Любая помощь или руководство будут очень полезны в этот момент.
Я нашел шаги, необходимые для прошивки собственного ядра на устройстве Android, например:
- Сначала нам нужно получить загрузочный образ стоковой прошивки, который мы можем получить, выполнив следующие команды:
- adb shell "ls -la /dev/block/platform/soc/1d84000.ufshc/by-name/"> MoreInfo \ msm_partitions.txt
- Обратите внимание на имя загрузочного раздела, например boot_a -> / dev / block / sde11 boot_b -> / dev / block / sde39
- Пропущены шаги по созданию boot.img с помощью команды dd command.
- Загрузите последнюю версию Android Image Kitchen из этой темы.
- Запустите следующее с загрузочным образом: unpackimg.sh .img
- Найдите zImageфайл и замените его своим образом ядра (переименуйте его в то, что получилось из образа загрузки)
- Запустите следующее для перепаковки: repackimg.sh
- Прошивка нового загрузочного образа с помощью fastboot или TWRP!
Мне нужно больше информации о пропущенных шагах. На самом деле процесс, описанный выше, работает на устройствах, которые имеют только один загрузочный раздел. Кто-нибудь знает, как я могу прошить свой единственный образ ядра на устройстве с разделением / b?
Обновление:
Я искал в Интернете A / B-разделы и обнаружил, что они используются для бесшовных обновлений, т. Е. Один раздел активен одновременно, а другой неактивный раздел может использоваться для обновления обновления. При перезагрузке другой раздел станет активным, а один раздел станет неактивным. Дополнительная информация: https://www.xda -developers.com / how-a ... opment-on-xda /
Если мое понимание верно, тогда мне просто нужно выполнить следующие шаги, чтобы найти правильный образ, который будет использоваться на первом этапе перепрошивки ядра:
- fastboot getvar all | grep «current-slot»
- dd if = "путь к загрузке активного слота" из = / sdcard / boot.img
- Продолжите с boot.img и перепрограммируйте ядро, выполнив вышеописанные шаги для перепрошивки ядра.
Всем, кто обладает этими знаниями, пожалуйста, подтвердите. Я буду вам очень благодарен.