Вопрос или проблема
Я пытаюсь эмулировать устройство аккумулятора в 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 для подробной информации о поддерживаемых функциях.