Как отлаживать Android ядро?

Стоит задача отлаживать ядро Android смартфона. Как вы понимаете, это не миниПК в духе Raspberry Pi и не т н "плата разработчика", где UART уже выведен и распаян, и остаётся только подключиться. На некоторых устройствах UART спрятан в minijack для наушников, но вот некоторые новые устройства не обладают таким minijack-ом. Также, UART может быть спрятан в USB, но это вроде бы только у Samsung.

Я к чему это. Как отлаживать ядро Android на мобильном устройстве? Даже в QEMU можно эмулировать лишь миниПК, причём некоторые из них. Можно, конечно, пробовать использовать Android эмуляторы, Android Studio (для эмуляции устройств, но там вроде бы тоже не все, а только то, что гуглом поддерживается - Nexus-ы и Pixel-и). А если у тебя только целевое устройство и больше ничего, QEMU и эмуляторы Android не помогают по понятным причинам (отсутствие эмуляции именно твоего устройства/SoC)? До UART на тех же Qualcomm надо очень сильно добраться, хоть мне и попадалась схема расположения RX и TX на матплате конкретно моего телефона (Qualcomm SDM660, Xiaomi Mi Note 3). А то и распаивать пины...

Есть ли возможность получить хотя бы Framebuffer консоль aka FBCON или LLCON? Просто, я реально не находил соответствующих патчей под Linux 4.4 ядро. Ну или получить ttyUSB консоль: т е подключить телефон в ПК по обычному USB, а затем через minicom /dev/ttyUSB0 лезть в устройство?

Конечно, можно просто при загрузке устройства из init.rc писать dmesg. Но для этого нужно же ряд условий:

1.Ядро и ramdisk вообще нашлись

2.Ядро и ramdisk вообще запустились

3.init смог нормально смонтировать /system для запуска нашего дампера dmesg из /system/bin или [/overlay.d]/sbin.

И если хотя бы с поддержкой ext4, rootfs/tmpfs, или же вообще с передачей управления ядру и initrd будут проблемы - то писать dmesg будет банально некому.

Ведь собирают же люди как-то кастомные ядра, которые, хотя бы даже с багами, работают... По крайней мере, дело доходит аж до запуска zygote!! Не думаю, что у каждого ядродела обязательно есть плата разработчика от MTK/Qualcomm... Я-то несколько раз собирал ядро - и несколько раз бутлуп на ровном месте. Я уж несколько раз собирал ядро из исходников Lineage OS именно своей версии - и везде бутлуп... Ну реально понятия не имею, что я сделал не так и как исправить нерабочее ядро... Хочется хотя бы debug-консоль, чтобы в совсем уж плохих случаях разруливать дело из /sbin/busybox sh, закинутого в ramdisk...


Ответы (0 шт):