LINUX.ORG.RU

Сообщения Retard

 

Android init (init.rc, etc).

Привет. Небольшой беклог.

Стоит CarbonROM 8.1 (Android 10), Magisk. В init’е (android’овском) прописаны свои сервисы. Один из них ssh. Все стартует и работает, пока не доходит до удаления zygote сервиса. Он тянет за собой старт неочевидных сервисов. В часности, как я понимаю, автоподключение wifi и триггер на boot_completed. Если убивать ветку zygote процесса из уже стартовавшей системы, то после проблем не возникает (wifi и остальное продолжают работать).

Подключение wifi идет через wpa_supplicant (насколько я понял). Попытался поднять его ручками после boot фазы и далее стартовать свои сервисы. Сервисы стартовали, но, похоже без включенного wifi. Отлавливать все это довольно сложно, так как каждый раз ты грузишься в рекавери, достаешь лог, ресторишь init’ы и грузишься опять в систему для чтения логов.

Может кто шарит за wifi стек в android. На каком моменте можно поднять автоподключение? Является ли wificond последней стадией в init’е wifi или zygotе поднимает еще что-то?

PS: svc wifi в этой прошивке не имеет опции connect-network, так что тут мимо.

 , , ,

Retard
()

Отключение Nvidia GPU.

Имееются две видеокарты в кудахтере. Одна красная, вторая зеленая. ATI служит заглушкой, но стоит в основном слоте и, соответственно, на ней отображается вся первоначальная загрузка и стартует консольный буфер. У каждой карточки по монитору. OS: Linux Mint 21.3; WM: Cinnamon. Грузится система на проприетарных драйверах nvidia из репозиториев минта.

Энивей, интересует как (!)правильно в таком сетапе «откреплять» зеленую карточку и оставлять красную как активную. Просто откреплять ее я могу, пробрасывать в виртуалку тоже. Это все протестировано. Просто две проблемы. Скрипт открепления срабатывает только со второго раза (а значит уже какой-то не тот порядок) и, соответственно, уже через ssh (и да, сразу через ssh срабатывает тоже со второго раза). После подсоединения GPU назад как-будто спавниться второй юзер (users выдает два моих логина).

Порядок действий при откреплении:

# Для понимания где мы.
set -x
VIRSH_GPU_VIDEO=pci_0000_06_00_0
VIRSH_GPU_AUDIO=pci_0000_06_00_1

# Гасим display-manager и тут я не уверен есть ли смысл отключать мультиюзера.
# sudo systemctl isolate multi-target.service
sudo systemctl stop display-manager.service

# По идее, останавливаем вывод консоли, но так как она на radeon'е,
# я не вижу в этом смысла.
# echo 0 > /sys/class/vtconsole/vtcon0/bind
# echo 0 > /sys/class/vtconsole/vtcon1/bind
sleep 1

# Выгружаем драйвер nvidia, оставляя radeon, делаем передышку.  
sudo rmmod nvidia_drm
sudo rmmod nvidia_uvm
sudo rmmod nvidia_modeset
sudo rmmod nvidia
sleep 3

# Собственно, делаем detach устройства.
sudo virsh nodedev-detach $VIRSH_GPU_VIDEO
sudo virsh nodedev-detach $VIRSH_GPU_AUDIO
sleep 1
  
# Подгружаем драйвер vfio.
sudo modprobe vfio
sudo modprobe vfio_iommu_type1
sudo modprobe vfio_pci
sleep 3

# Стартуем все это дело назад, но уже на одном radeon'е.
sudo systemctl start display-manager.service

Думаю, обратный скрипт представить не сложно, там ничего неожиданного.

 , , , ,

Retard
()

Android SysFS.

Привет. Есть устройство и две+ кастомные прошивки. Первая загружает в sysfs ветку [/sys/devices/system/cpu/cp?/cpufreq/*] для всех (из четырех) ядер. Вторая (точнее - остальные) загружает эту ветку только для первого (нулевого) и четвертого (третьего) ядер.

Не могу найти конкретную информацию на каком конкретно этапе происходит инит sysfs для ядер. В самом инит скрипте чего-то такого не увидел, в параметрах ядра вообще по минималке. Полистал .dtb (dts) второй прошивки и нашел что-то с похожими букавами: qcom,msm-cpufreq@0 { reg = <0x00 0x04>; compatible = «qcom,msm-cpufreq»; qcom,cpufreq-table = <…>; }; Если регистры читаются как «с нулевого и на плюс четыре», то тогда cpufreq в дереве указан для всех ядер. Может ли быть, что проблема (разница) в cpuidle или неком профилировании ядер. Задача - иметь cpufreq для всех ядер для ручного контроля частот и говернера. Мои знания поверхностны, но не нужно ссылок на воду. Нету времени читать всю воду, интересует конкретный вопрос.

И второе, есть кто хорошо разбирается за всю эту тему? Интересен запуск ssh без загрузки зиготы. Как я понимаю, можно просто в инит скрипте убрать загрузку app_process и вместо него прописать автозапуск bash+ssh. Если ли подводные камни, кроме того, что логин в ssh будет работать всрато?

 , , , ,

Retard
()

MiBox MDZ-16-AA .dts файл.

Есть старенькая тв-приставка MiBox MDZ-16-AA. На нее успешно установлен Wayland и Sway/Labwc. Но есть проблемки.

Сборка установлена отсюда, специальный образ для данного устройства. Но как будто бы .dtb не совсем подходит. Аудио (тут tv-out) выход и bluetooth не работают. Хотя на HybridELEC сборке bluetooth вполне себе работает. Я решил попробовать потыкать другие .dtb файлы. У автора сборок есть пару (1/2), специально для MiBox MDZ-16.

Возникает проблема с их компиляцией. В файлах зависимости, которые я не понимаю откуда берутся. Что-то похожее есть в исходниках ядра линя, но они имеют чуть другие имена. Например:

Основной вопрос в том, как правильно подтянуть зависимости. Но было бы интересно увидить советы по любому этапу проблемы. Просьба не писать по поводу целесообразности общей затеи - это делается ради интереса. Все ссылки в посте ведут на GitHub и никуда больше.

 , , ,

Retard
()

RSS подписка на новые темы