Вопрос или проблема
Мы работаем над возможностью поддержки GNOME Desktop (с Wayland) на Imagination GPU (которая поддерживает X и Wayland Window System) на нашей платформе RISC-V, устанавливая необходимые пакеты Gnome (ubuntu-desktop-minimal) на дистрибутив Ubuntu 22.04. Я заметил, что мне удалось успешно запустить gnome-session на процессоре (без установки LD_LIBRARY_PATH), в то время как производительность среды GNOME Desktop остается очень низкой (так как она обрабатывается процессором). Но я заметил следующую проблему после установки ‘LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib’ (для настройки работы с GPU) при запуске gnome-session, как показано ниже:
root@Ubuntu-riscv64: gnome-session
/usr/libexec/gnome-session-binary: ошибка поиска символов: /lib/riscv64-linux-gnu/libpangocairo-1.0.so.0: неопределенный символ: cairo_ft_font_options_substitute
Я также заметил проблему, указывающую на то, что тестовые приложения Wayland не могут подключиться к дисплею Wayland, как показано ниже:
root@Ubuntu-riscv64:~# ./testapp
Не удалось подключиться к дисплею Wayland
Я использую Ubuntu 22.04, которая предоставляет Гном Shell v42.9 с пакетом ubuntu-desktop-minimal из их официального APT.
Я пытался найти необходимые пакеты для исправления этой проблемы, но пока безуспешно. Мы будем очень признательны, если вы предоставите нам некоторые детали, которые помогут решить эту проблему.
Спасибо,
Ответ или решение
Теория
Вы сталкиваетесь с проблемой запуска GNOME-сессии на платформе RISC-V, используя Ubuntu 22.04 и Imagination GPU, поддерживающий X и Wayland. GNOME не работает должным образом при использовании графического процессора, что проявляется в двух основных ошибках: символической ошибке при запуске gnome-session
и невозможности подключения тестовых Wayland приложений к дисплею. Прежде чем углубляться в конкретные решения, важно рассмотреть основные технические аспекты, на которых базируются ваши проблемы.
Во-первых, ошибка symbol lookup error: /lib/riscv64-linux-gnu/libpangocairo-1.0.so.0: undefined symbol: cairo_ft_font_options_substitute
указывает на проблему с совместимостью библиотек, вероятно вызванной отсутствием необходимых библиотек или неправильной конфигурацией LD_LIBRARY_PATH.
Во-вторых, ошибка Failed to connect to Wayland display
предполагает, что параметры окружения Wayland или конфигурация не настроены должным образом для подключения приложения.
Пример
Проблемы такого рода часто встречаются при компиляции и запуске библиотек и приложений на платформе, где поддержка драйверов и связующих элементов может быть недостаточной. Мы можем использовать пример из опыта других пользователей, сталкивающихся с аналогичными проблемами при переносе приложений на новую архитектуру:
-
Проблемы с библиотеками: Наиболее распространенной причиной символической ошибки является несовместимость версий библиотеки или отсутствие необходимого обновления. Например, отсутствие определенной версии Cairo может вызвать ошибки символов, так как Pango использует Cairo для отрисовки текстов.
-
Конфигурация Wayland: Ошибки с Wayland, как правило, связаны с отсутствием настроенного сокета или переменной окружения
WAYLAND_DISPLAY
, отсутствием необходимых прав доступа или проблемами совместимости библиотеки libwayland.
Применение
Учитывая специфические ошибки, с которыми вы сталкиваетесь, предлагается следующий пошаговый подход для устранения проблем:
Символическая ошибка в GNOME-сессии
-
Проверка установленных пакетов:
- Убедитесь, что все необходимые пакеты и их зависимости установлены. Используйте команды
apt list --installed
илиdpkg -l
для проверки. - Специально проверьте наличие и версии библиотек
libcairo
,libpango
,libpangocairo
и других взаимозависимых компонентов.
- Убедитесь, что все необходимые пакеты и их зависимости установлены. Используйте команды
-
Обновление системы и библиотек:
- Выполните
sudo apt update && sudo apt upgrade
для обновления всех пакетов до актуальных версий. Это может устранить проблему устаревших библиотек.
- Выполните
-
Проверка LD_LIBRARY_PATH:
- Убедитесь, что переменная окружения LD_LIBRARY_PATH включает правильные пути к библиотекам. Переменная
/lib:/usr/lib:/usr/local/lib
может быть неполной или конфликтовать с другими версиями библиотек.
- Убедитесь, что переменная окружения LD_LIBRARY_PATH включает правильные пути к библиотекам. Переменная
-
Локация библиотек:
- Используйте
ldd /usr/libexec/gnome-session-binary
для проверки зависимостей gnome-session-binary и уточните, какие библиотеки вызывают конфликт.
- Используйте
Проблемы с Wayland
-
Проверить запущенные службы:
- Убедитесь, что служба Wayland дисплея запущена корректно. Например, проверьте активные процессы:
ps aux | grep -i wayland
.
- Убедитесь, что служба Wayland дисплея запущена корректно. Например, проверьте активные процессы:
-
Настройка переменных окружения:
- Убедитесь, что переменная
WAYLAND_DISPLAY
настроена правильно. Попробуйтеexport WAYLAND_DISPLAY=wayland-0
перед запуском вашего тестового приложения.
- Убедитесь, что переменная
-
Проверка прав доступа:
- Убедитесь, что у приложения есть необходимые права доступа к Wayland-серверу. Это может включать соответствующие конфигурации udev и logind.
-
Проверка драйверов GPU:
- Убедитесь, что драйверы Imagination GPU установлены и правильно конфигурированы для работы как с X11, так и с Wayland. Возможно, потребуется обновить драйвера или использовать специальные конфигурационные настройки.
Описанные шаги предполагают комплексный подход к решению ваших проблем с GNOME и Wayland на платформе RISC-V. Успешное разрешение может потребовать корректировки дополнительных системных параметров и продолжительного тестирования, чтобы точно определить источник ошибки.