Эмуляция устройства с батареей в Yocto QEMU x86-64

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

Я пытаюсь эмулировать устройство аккумулятора в QEMU x86-64. Я создаю образы QEMU, используя ссылочную дистрибуцию Yocto poky, и собираю образ core-image-sato для машины qemux86-64. Моя цель – увидеть значок батареи в графическом интерфейсе QEMU.

По моему пониманию, устройство батареи общается через ACPI, поэтому целевая система должна поддерживать ACPI. Я изменил файл машины qemux86-64, добавив ACPI в MACHINE_FEATURES. Теперь в QEMU должно быть эмулированное/фальшивое устройство батареи, которое сможет предоставить информацию о батарее и сделать её видимой как значок в графическом интерфейсе. В ходе исследования я обнаружил, что следующие команды (опция -device) эмулируют устройство батареи. Однако я не вижу никакого устройства батареи в графическом интерфейсе с этими командами.

QEMU_EXTRAARGS="-device acpi-battery -enable-kvm -display sdl,show-menubar=on -show-cursor" runqemu qemux86-64

QEMU_EXTRAARGS="-device ich9-lpc -enable-kvm -display sdl,show-menubar=on -show-cursor" runqemu qemux86-64

QEMU_EXTRAARGS="-device piix4-acpi -enable-kvm -display sdl,show-menubar=on -show-cursor" runqemu qemux86-64


Может кто-нибудь помочь мне эмулировать устройство батареи в образе Yocto QEMU?

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

Для эмуляции устройства батареи в QEMU на x86-64 с использованием Yocto, вам нужно выполнить несколько шагов, чтобы убедиться, что устройство правильно эмулируется и отображается в графическом интерфейсе. Ниже приведены шаги, которые помогут вам достичь этой цели.

Шаг 1: Проверка поддержки ACPI

Убедитесь, что ваша конфигурация машины qemux86-64 включает поддержку ACPI. Для этого в файле конфигурации машины (обычно находится в meta/qemu/meta-qemu-bsp/qemux86-64.conf) добавьте строку:

MACHINE_FEATURES += "acpi"

Шаг 2: Запуск QEMU с эмуляцией батареи

Вы можете использовать одну из опций QEMU для эмуляции батареи, однако важно правильно настроить параметры. Попробуйте следующую команду для запуска QEMU с эмуляцией батареи:

QEMU_EXTRAARGS="-device ich9-lpc -device acpi-battery -enable-kvm -display sdl,show-menubar=on -show-cursor" runqemu qemux86-64

В этой команде мы комбинируем эмуляцию контроллера LPC с батареей ACPI, чтобы убедиться, что устройство батареи правильно инициализируется.

Шаг 3: Проверка модуля батареи в ядре

Убедитесь, что в ядре Linux, которое используется в вашей сборке Yocto, включен модуль поддержки батарей. Для этого проверьте наличие параметров конфигурации, связанных с батареей и ACPI. Вам могут понадобиться следующие настройки:

CONFIG_ACPI=y
CONFIG_POWER_SUPPLY=y

Вы также можете использовать menuconfig для настройки ядра.

Шаг 4: Проверка вывода dmesg

После запуска QEMU проверьте вывод dmesg для получения сообщений, связанных с ACPI и батареей. Войдите в вашу цель через консоль и выполните следующую команду:

dmesg | grep -i battery

Это должно помочь вам выявить ошибки или подсказать, правильно ли работает устройство.

Шаг 5: Установка необходимых библиотек в образе

Возможно, вам нужно будет установить upower или другие утилиты, которые могут помочь в управлении и визуализации состояния батареи. Убедитесь, что ваше приложение имеет доступ к информации о батарее с использованием udev и других системных инструментов. Добавьте нужные пакеты в ваш рецепт образа:

IMAGE_INSTALL_append = " upower"

Шаг 6: Тестирование GUI

Запустив QEMU с правильными параметрами и установив необходимые пакеты, проверьте интерфейс GUI. Вы должны увидеть значок батареи в верхней панели, который будет отражать состояние батареи.

Заключение

Следуя этим шагам, вы сможете настроить эмуляцию батареи в QEMU для использования с образом Yocto x86-64. Если вы все еще не видите значок батареи в графическом интерфейсе, рекомендуется проверить логи, настройки ядра или вообще обратиться к документации QEMU и Yocto для подробной информации о поддерживаемых функциях.

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

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