Как правильно добавить Chromium в мою дистрибуцию Linux проекта Yocto?

Вопрос или проблема

Создана дистрибутив Linux с использованием Yocto (ветка Poky fido) для Raspberry Pi 2, следуя этому отличному обучающему руководству Часть 1.

Теперь пытаюсь запустить Chromium.

Добавлен meta-browser в мой bblayers.conf

Добавлены рецепты chromium в мой файл образа .bb.

Удалось скомпилировать и создать образ, но возникают следующие ошибки при попытке запустить:

root@raspberrypi2:/usr/bin/chromium# ./chrome
[527:527:0624/195537:FATAL:browser_main_loop.cc(161)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
Aborted

–no-sandbox

root@raspberrypi2:/usr/bin/chromium# ./chrome --no-sandbox
[528:528:0624/195641:ERROR:browser_main_loop.cc(164)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
[528:528:0624/195641:ERROR:browser_main_loop.cc(210)] Gtk: cannot open display: 
root@raspberrypi2:/usr/bin/chromium# [530:530:0624/195641:ERROR:image_metadata_extractor.cc(111)] Couldn't load libexif.
[530:530:0100/000000:ERROR:zygote_linux.cc(587)] write: Broken pipe
^C

DISPLAY=:0.0

root@raspberrypi2:/usr/bin/chromium# export DISPLAY=:0.0 && ./chrome --no-sandbox
[531:531:0624/195652:ERROR:browser_main_loop.cc(164)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
[531:531:0624/195652:ERROR:browser_main_loop.cc(210)] Gtk: cannot open display: :0.0
root@raspberrypi2:/usr/bin/chromium# [533:533:0624/195652:ERROR:image_metadata_extractor.cc(111)] Couldn't load libexif.
[533:533:0100/000000:ERROR:zygote_linux.cc(587)] write: Broken pipe
^C

–use-gl=egl

Меня очень интересует работа с аппаратным ускорением

root@raspberrypi2:/usr/bin/chromium# export DISPLAY=:0.0 && ./chrome --no-sandbox --use-gl=egl 
[534:534:0624/195901:ERROR:browser_main_loop.cc(164)] Running without the SUID sandbox! See https://code.google.com/p/chromium/wiki/LinuxSUIDSandboxDevelopment for more information on developing with the sandbox on.
[534:534:0624/195901:ERROR:browser_main_loop.cc(210)] Gtk: cannot open display: :0.0
root@raspberrypi2:/usr/bin/chromium# [536:536:0624/195901:ERROR:image_metadata_extractor.cc(111)] Couldn't load libexif.
[536:536:0100/000000:ERROR:zygote_linux.cc(587)] write: Broken pipe
^C

Любые подсказки приветствуются.

Возможно, это поможет… из моего “ps” на чуть другой платформе.

  /bin/sh /usr/bin/google-chrome  


2009 root      2424 S    {google-chrome} /bin/sh /usr/bin/google-chrome
2010 root      378m S    /usr/bin/chrome/chrome --use-gl=egl --user-data-dir=/home/root/.chromium/
2012 root      1956 S    /usr/sbin/chrome-devel-sandbox /usr/bin/chrome/chrome --type=zygote --user-data-dir=/home/  
2013 root      100m S    /usr/bin/chrome/chrome --type=zygote --user-data-dir=/home/root/.chromium/
2016 root      108m S    /usr/bin/chrome/chrome --type=zygote --user-data-dir=/home/root/.chromium/
2069 root      212m S    /usr/bin/chrome/chrome --type=renderer --use-gl=egl --enable-deferred-image-decoding --lan
2078 root      175m S    /usr/bin/chrome/chrome --type=renderer --use-gl=egl --enable-deferred-image-decoding --lan  

Это было запущено с помощью значка на рабочем столе /bin/sh /usr/bin/google-chrome, который, в свою очередь, установил все переменные, указанные в следующих потоках.

Ответ или решение

Для интеграции Chromium в ваш дистрибутив Yocto Project на Raspberry Pi 2 необходимо учитывать несколько аспектов, которые прямо или косвенно влияют на успешную работу браузера.

Теория:

Yocto Project – это мощная система для сборки встроенных систем Linux, позволяющая настраивать практически все аспекты вашей операционной системы, включая компоненты пользовательского пространства, такие как браузеры. Chromium – популярный браузер с открытым исходным кодом, используемый в различных встраиваемых системах. Интеграция Chromium в Yocto требует добавления соответствующих метаслоёв и рецептов в конфигурацию проекта. Однако, при добавлении Chromium на платформы с ограниченными ресурсами, такие как Raspberry Pi 2, возникают дополнительные сложности, связанные с ограничениями производительности и специфическими требованиями к библиотекам.

Пример:

В вашем случае, чтобы добавить Chromium, вы правильно подключили метаслой meta-browser и добавили рецепты Chromium в ваш файл образа .bb. Но при запуске столкнулись с ошибками, связанными с SUID sandbox и настройкой переменной окружения DISPLAY для работы с графической подсистемой.

Ошибка SUID связана с безопасностью и механизмами песочницы, которые необходимы для изоляции различных компонентов браузера. Отсутствие песочницы может привести к снижению безопасности, но зачастую отключение данной функции (путём использования флага --no-sandbox) может быть целесообразным в тестовых окружениях или системах с ограниченными ресурсами.

Кроме того, ошибка Gtk: cannot open display: :0.0 указывает на отсутствие связи с графическим сервером. DISPLAY=:0.0 это переменная, которая определяет дисплей, к которому подключен X-сервер. Для её корректной работы необходимо убедиться, что графическая подсистема запущена, и приложение имеет доступ к дисплею.

Применение:

Чтобы исправить ситуацию, следует предпринять следующие шаги:

  1. Убедитесь, что X-сервер запущен.
    Это можно сделать, удостоверившись, что у вас установлены и настроены все необходимые библиотеки и сервисы для работы с графической подсистемой. На Raspberry Pi это может быть, например, Xorg или Wayland.

  2. Проверьте целостность и конфигурацию системных библиотек.
    Ошибка о невозможности загрузить libexif сигнализирует о недостающих библиотеках. Вам нужно будет убедиться, что все зависимые библиотеки установлены. Возможно, потребуется вручную установить недостающие пакеты через менеджер пакетов.

  3. Проанализируйте параметры запуска Chromium.
    Попробуйте использовать комбинацию параметров, которая подходит для вашей аппаратной конфигурации. Команда запуска может выглядеть так:

    export DISPLAY=:0.0
    ./chrome --no-sandbox --use-gl=egl --user-data-dir=/home/root/.chromium
  4. Включите аппаратное ускорение.
    Использование флага --use-gl=egl показывает вашу заинтересованность в аппаратном ускорении. Проверьте наличие нужных драйверов для вашей видеокарты и убедитесь, что аппаратное ускорение поддерживается. Обычно, для Raspberry Pi 2 необходимо установить VC4 драйвера.

  5. Посмотрите на конфигурацию системы.
    Убедитесь, что права доступа к файлам и исполняемым файлам настроены правильно. В случае SUID, убедитесь, что у пользователей есть соответствующие права на запуск исполняемых файлов.

В заключение, интеграция Chromium в Yocto на Raspberry Pi требует учёта особенностей этой платформы, конфигурации аппаратного и программного обеспечения. Стоит внимательно проверить все версии пакетов и библиотеки, воспользовавшись рекомендациями по устранению неполадок, предлагаемыми сообществом и документацией Yocto Project.

Оцените материал
Добавить комментарий

Капча загружается...