LINUX.ORG.RU

raspberry, buildroot, wayland

 , ,


0

1

Хочу сделать на raspberry киоск с веб-интерфейсом (чтобы после загрузки открывался браузер на весь экран с HTML с диска).

Как я понял, свой линукс надо собирать через buildroot, вместо electron надо использовать wpewebkit и сейчас графика работает через wayland.

Но ничего у меня в итоге не получилось и не работает.

Минимальный образ buildroot-ом с помощью make raspberrypi4_defconfig я собрал, он грузится, консоль есть, залогиниться можно. buildroot 2022.02.8

Далее долго пытался найти минимальный подбор опций, чтобы получилось выбрать wpewebkit. Вышло примерно следующее:

Toolchain
 Enable WCHAR support
Target packages
 Graphic libraries and applications (graphic/text)
  mesa3d
   Gallium vc4 driver
   OpenGL ES
 Libraries
  Graphics
   wpewebkit
 Graphic libraries and applications (graphic/text)
  cog
   Wayland backend
Filesystem images
 ext2/3/4 root filesystem
  exact size: 180M

cog это, как я понимаю, браузер на этом wpewebkit, т.е. видимо то, что и должно показать мою HTML-ку и то, что я должен буду настроить на автозапуск.

В итоге cog этот не запускается. Пишу cog (от рута), он начинает в цикле писать (сокращаю, т.к. перепечатываю)

error: XDG_RUNTIME_DIR not set in the environment.
WARNING Your application does not implement g_application_activate() and has no handlers connected to the activate signal. It should do one of these.
libEGL warning: MESA-LOADER: failed to open swrast: File not found (search paths /usr/lib/dri, suffix _dri)

EGLDisplay initialization failed: EGL_NOT_INITIALIZED

Cog Core WARNING THe rendered process crashed.

XDG_RUNTIME_DIR ставил, эта ошибка ушла, толку не было.

Что за libEGL warning я не понял. В /usr/lib/dri файла swrast_dri.so нет. Есть файл vc4_dri.so. Как я предполагаю, swrast это софтовый растеризатор, а vc4 это хардварный. Как этому libEGL сказать, чтобы он использовал vc4, я пока не понял, гугл не очень помогает.

Пробовал добавить weston, пришлось для этого udev ставить, но ничего не изменилось, weston тоже не запускается.

Пробовал запускать cog --platform=wl, пишет preferred modulewlnot supported, cannot create platformm: could not find an usable platform module. could not load the impl library. Is there any backend installed? File not foudn.

Может я вообще не в том направлении двигаюсь? raspi в целом это больше прототип, потом надо будет это на i.mx8 делать, поэтому хочу через buildroot сделать.

Также пробовал включать v3d драйвер, не помогло.

★★★

Последнее исправление: vbr (всего исправлений: 1)

Нельзя просто иксы поставить и браузер в фулскрине без ничего запускать? У меня так стим на другой сессии в формате киоска отлично работает на ББ.
Или тебе принципиально, чтобы там вяленый был? На него многие только начинают перекатываться (да и не всем оно надо).

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

Мне ничего не принципиально, но хотелось бы поменьше и попроще всё, но в то же время чтобы GPU использовался. Такое ощущение, что мне то ли какого-то пакета не хватает, то ли какой-то опции.

vbr ★★★
() автор топика
Ответ на: комментарий от fehhner

Сейчас его добавил, проверю с ним, но смущает, что это software rasterizer. Такое ощущение, что нужно как-то указать кому-то, что надо использовать этот vc4 или v3d драйвер.

vbr ★★★
() автор топика
Ответ на: комментарий от vbr

Такое ощущение, что нужно как-то указать кому-то, что надо использовать этот vc4 или v3d драйвер.

Не делал через билд рут и вручную всё. Драйвер на основной ветке сейчас просто выбирается в raspi-config.

Advanced Options > GL Driver

fehhner ★★★★★
()
Последнее исправление: fehhner (всего исправлений: 1)

cog - я вообще не сталкивался. Знаю, что киоски через chromium популярный так делают:

/usr/bin/chromium-browser --noerrdialogs --disable-infobars --kiosk https://bla-bla.com &
Так убедиться, что gpu ускорение включено:

Enable hardware acceleration in Chromium

If open a Chromium and go to chrome://gpu, you see «Software Accelerated» To change that, we need to go to chrome://flags and search for

Override software rendering list
GPU rasterization
Out of process rasterization
Hardware-accelerated video decode (only available on the new versions of Raspberry Pi OS)

and change those settings to Enabled. After restarting the web browser, you can refresh chrome://gpu and you will get «Hardware Accelerated»

fehhner ★★★★★
()
Последнее исправление: fehhner (всего исправлений: 2)
Ответ на: комментарий от fehhner

Спасибо. С этим cog-ом у меня пока идеи закончились. В /usr/lib/dri новые файлы не появляются, хотя я внутри mesa3d выбрал и v3d и этот swrast. Пока в тупике. Придётся пока на хроме делать, а там посмотрим.

vbr ★★★
() автор топика

Каким-то чудом где-то на дне мейллистов нашел магическую строчку. В config.txt добавил

dtoverlay=vc4-kms-v3d

Понятия не имею, что это означает, и где я должен был про это прочитать, но по крайней мере weston запустился, графическое что-то нарисовалось. Ура. Дальше уже будем разбираться.

vbr ★★★
() автор топика
Ответ на: комментарий от vbr

Понятия не имею, что это означает, и где я должен был про это прочитать, но по крайней мере weston запустился, графическое что-то нарисовалось. Ура. Дальше уже будем разбираться.

А ты поставь минимальный стандартный распбиан и посмотри конфиги для начала. Там много особенностей.

fehhner ★★★★★
()
Ответ на: комментарий от fehhner

Конфигов много. Смотреть можно долго. Я рассчитывал, что buildroot пропишем подобные вещи.

В общем получилось почти всё что хотел. Пока с хаками, но путь виден.

Если вкратце:

  1. Строчка, описанная выше.
  2. systemd. Наверное можно и без него, но показалось, что с ним правильнее.
  3. Композитор cage.
  4. Какие-нибудь шрифты.
  5. Пакет с mime типами.
  6. Создать пользователя, добавить в группу video.
  7. Сделать suid на cage.
  8. Выставить XDG_RUNTIME_DIR
  9. Запускать от пользователя: ‘cage cog file:///path

В общем отобразило браузер, запустил в нем простую JS анимацию. Выдало 60 кадров с загрузкой ядра на 20%. Точно не уверен, но похоже, что ускорение работает.

Мышь не показало. Возможно курсоры нужно установить.

vbr ★★★
() автор топика
Ответ на: комментарий от vbr

И как в итоге, понравилось или выкинул в пользу иксов?

Алсо, у меня при переключении базовой системы с busybox на systemd загрузка тупо зависает, нужно что-то дополнительно вручную менять?

ААлсо, buildroot.org лежит, так что у мня немного более старая версия. Сие печально.

bo4ok
()
Ответ на: комментарий от bo4ok

Пока итога нет, но тот этап заморожен. Попозже буду дальше разбираться, другой проект пока делаю. С systemd проблем не было, нормально грузится. Там только нюанс - он login на экране не показывает, только в UART порте можно залогиниться. У меня USB UART есть так что я не разбирался.

vbr ★★★
() автор топика
Последнее исправление: vbr (всего исправлений: 1)