Как (и можно ли вообще) в QEMU эмулировать Qualcomm?
Я хочу эмулировать в QEMU своё же Android устройство. У меня на ПК есть заранее скачанные с телефона образы всех разделов, кроме userdata (правда по отдельности каждый раздел), так что при удачном подборе ядра, настроек/опций QEMU, ramdisk-а [и dtb[o/s]] гипотетически можно будет попробовать запустить моё Android ядро к моему телефону прямо из QEMU. Не надо мне советовать эмуляторы Android, я намерен не apk запускать, а запускать и отлаживать ядро Linux и Linux-овые системные компоненты (Android init/magiskinit, zygote, т д).
Заранее отвечу на вопрос: а зачем?
Во1, чтобы не рисковать реальным устройством (конечно, это Qualcomm, в крайнем случае есть Qualcomm EDL, но состояние моего устройства в аппаратном плане, мягко говоря, не сахар, да и времена сейчас такие, что чёрт ты телефон новый купишь, тем более хороший).
Во2, виртуалка в этом плане более гибкая. Ведь может быть так, что ядро/init успешно отрабатывает, но вот до экрана ядро не может достучаться. Впрочем, все может быть ещё хуже: ядро-то отрабатывает, init отрабатывает, экран есть. Но вот, например, WiFi не работает, или с USB что-то не то (а я ведь на свою мобилу и такие ядра ставил: на одном USB не работал с OTG, на другом вызов rndis (USB модем) вызвал какую-то ошибку памяти или что-то такое: телефон резко перезагрузился и у меня резко пропали данные приложения, с которым я в тот момент работал). А Android - не Linux, там нету systemd-journald, нету journalctl, в отличие от штатного дистрибутива Linux. Да и UART есть вроде бы только у Samsung-ов, и то это недокументированная возможность (так что тут как по минному полю...), плюс у меня просто отсутствует инструментарий для работы через UART; с JTAG аналогично. Единственная возможность - врубить ttyUSB, но я вообще не знаю, как это реализовать, уж тем более прямо на этапе fastboot-а. Единственный вариант - прямо из fastboot запускать ядро, через ПК:
~ $ fastboot boot --kernel zImage --ramdisk ramdisk.cpio.gz
Но и логов ядра я что-то не ловил. /proc/last-kmsg я не видел никогда, а вот /sys/fs/pstore хотя и даёт логи (причём охотно), но они немного невнятны, там dmesg перемешан с нечитаемыми символами. А вот в QEMU можно не только экспериментировать, не рискуя реальным устройством, но и запросто отлаживать ядро и критические системные компоненты и даже получить халявную консоль, просто запустив QEMU с опцией -nographic или ещё как-то опрокинуть терминал с виртуалки в хост. У меня даже было такое дело с Debian arm64. Без опции -nographic он в упор не запускался, зато с ней спокойно завёлся (консоль ttyAMA0): ну не видит он экран. Даже -ncurses не помогал, не пробовал только -vga и -stdio