суббота, 13 февраля 2021 г.

Как я пытался начать в Raspberry Pi 4

Пишу прост чтоб не забыть. Если будет необходимость, то надеюсь хватит сил написать что-то в хабр.

Какие-то левые проблемы с Qt5, snap, wayland

Начал я ставить Raspberry Pi OS на Pi 4. И тут такое

# sudo snap install rpi-imager

# rpi-imager

This application failed to start because it could not find or load the Qt platform plugin "wayland-egl"

in "".

Available platform plugins are: eglfs, linuxfb, minimal, minimalegl, offscreen, vnc, xcb.

Reinstalling the application may fix this problem.

Aborted (core dumped) 

Ну хуе-мое - вроде как ошибка связана с установленной wayland, qt5 и сборкой snap пакета - https://forum.snapcraft.io/t/problem-launching-qt-snaps-in-wayland/7055. Обычная в этих случаях установка пакетов не помогает - это же snap. Вроде патч простой - https://github.com/pbek/QOwnNotes/pull/1012/files. Ошибка кстати существовала https://github.com/popey/imager-snap/pull/14.

Скачал сорцы, запатчил, поставил snapcraft + multipass, запускаю

Тут кароч ошибка типа не могу найти файл и имя моего файла snapcraft.yaml. Поподробнее потом напишу - надо удалить собранный уже.

Порылся в логах, вижу странные сообщения в dmesg от apparmor

[23961.893990] audit: type=1400 audit(1613217487.081:653): apparmor="DENIED" operation="open" profile="snap.multipass.multipassd" name="/etc/ssh/ssh_config" pid=13393 comm="multipassd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0

Вроде профили защиты apparmor в ubuntu лежат в /etc/apparmor.d. Думаю поправлю. Но для снапов они лежат в /var/lib/snapd/apparmor/profiles. Поправил, вроде перезагрузил конфиги, ничего не меняется. Я начал смотреть snap.multipass.multipassd и сошелся пазл. Надо заметить, что проекты мои лежали раньше в /opt/projects. А профиль apparmor для snap.multipass.multipassd разрешал чтение только из home. Попробовал я, потыркался, плюнул и переместил директорию projects в свой home от греха подальше - не первый раз в конце то концов я на эти грабли с apparmor и /opt/projects наступаю. Такие дела.

Переместил. Заработало.

В общем перед добавлением статьи на хабр надо бы поподробнее разобраться с профилями apparmor, с профилями apparmor для snap и рассказать как собирать снапы локально например.


---

Пытаюсь в автомонтирование usb диска.

Почему-то в минимальной конфигурации raspberry Pi автомонтирование включено не было. Нашел usbmount, но он не работал. Начал разбираться. И тут понеслось. udev. udisks2. udevil. systemd.
В общем оно не работало потому что в репозитории лежит старая версия.
Дай думаю малой кровью поставлю udisks2 - чет не помогло. udevil, который вроде как lightweight replacement udisks почему-то потянул udisks2 и тоже автомонтирование не заработало. В итоге собрал последнюю версию usbmount из сорцов и добавил вот эту хрень (и еще добавил монтирование по UUID) чтоб можно было ссылаться на диск.
В общем в старой версии usbmount монтирование шло из скрипта напрямую, а это запрещено в новых версиях udev. Рецепт оттуда-же - использовать для монтирования сервис. Например вот так.
Еще есть совет https://holyhead.de/index.php?title=Raspberry_Pi#External_USB_drives - рекомендуют udevil и к нему самопально udev павило - например вот это. Но правило использовало сервис udevil, тот udevil, который был в комплекте с raspberri не имел сервиса. Скорее всего старая версия udevil.
Было бы неплохо разобраться как же все-таки работает и монтирует диски udisks2, и написать про это вот все, а заодно про udevadm.

Но нет худа без добра - тут https://holyhead.de/index.php?title=Raspberry_Pi написано как сделать hdd spin down, буду пробовать.

Ну вот, попробовал. Говорят для дисков, подключенных по usb не работает hdparam. Вроде как hd-idle умеет это делать. Надо запретить smart. И возможно дополнительно деактивировать собственное управление питанием диска через `hdparm -B255 </dev/XXX>` (A value of 255 will disable apm on the drive).

---

Обновление

Так блэд. Ставим ветку testing...

По какой то причине перестал ставиться RPi.GPIO. Помог совет https://forum.manjaro.org/t/pip-install-rpi-gpio-fail/25788/4:
CFLAGS="-fcommon" pip install rpi.gpio

.