× К оглавлению На главную Об авторе

Дата и время публикации:    

Проблема и решение

1. Суть проблемы

Заключается в том, что драйверы FTDI, RTL8139 и e1000 не включены в конфигурацию ядра linux образа гостевой ОС, который может быть не только собран, но и запущен окружением сборочной машины Yocto/poky в эмуляторе Qemu под управлением гипервизора KVM хозяйcкой машины.

2. Пути решения

Для проверки и управления файлом конфигурации ядра .config выполните построение рецепта linux-yocto (или взамен собственного ядра) путем исполнения задачи menuconfig, как показано в дампе 2.1

Дамп 2.1. Запуск на выполнение задачи menuconfig

$ bitbake linux-yocto -c menuconfig 

В результате успешного запуска задачи menuconfig будет выведено окно с псевдографикой "Linux/arm 5.0.19 Kernel Configuration", фрагмент которого показано на рисунке 2.1

Рисунок 2.1

В нем, в этом окне, выбираем пункт "Device Drivers", в результате выбора которого выбираем "USB support", как показано на рисунке 2.2

Рисунок 2.2

Затем, выбираем "USB Serial Converter support", как показано на рисунке 2.3

Рисунок 2.3

В котором, наконец, будет доступен список всех поддерживаемых ядром Linux драйверов устройств USB, как показано на рисунке 2.4

Рисунок 2.4

На рисунке 2.5 показано включение поддержки драйвера сетевого гигабитного Ethernet-устройства Intel PRO/1000, именуемого e1000 и который находится в "Network device support" -> "Ethernet driver support" выбранного ранее "Device Drivers" .

Рисунок 2.5

На котором показано, что yocto-poky запускает конфигурацию ядра в отдельном окне и включение поддержки симуляции сетевого устройства Ethernet "Intel(R) 82576".

Включение поддержки драйвера сетевого гигабитного Ethernet-устройства RTL8139 показано на рисунке 2.6

Рисунок 2.6

После завершения сделанных изменений выбираем кнопку <Save> и сохраняем сделанные изменения в файле .config, как показано на рисунке 2.7

Примечание. PV+git+SRCPV — ранее рассматривался при собственноручном выборе последней ревизии KTYPElinux-yocto определяет следующие типы ядра "standard", "tiny" и "preempt-rt".

После нажатия кнопки результирующий файл .configбудет сохранен в рабочей директории WORKDIR/linux-MACHINE-KTYPE-build, как показано в дампе 2.8

Дамп 2.8. Выполнение команды ls в директории WORKDIR/linux-MACHINE-KTYPE-build

$ ls -la *.config
-rw-r--r-- 1 user user 97741 окт 14 09:09 .config

В дампе 2.8 показаны конфигурационный файла ядра Linux технической платформы qemuarm5 на базе архитектуры ARM, которая обычно процентов на 90 соответствует требованиям разворачиваемой на ней программного обеспечения.

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

Для создание фрагмента конфигурационного файла до запуска задачи конфигурации ядра Linux нужно выполнить задачу kernel_configme, как показано в дампе 2.9

Дамп 2.9. Запуск на выполнение задачи kernel_configme

$ bitbake linux-yocto -c kernel_configme -f

Затем, запустить саму задачу конфигурации menuconfig ядра Linux, как показано в дампе 2.10

Дамп 2.10. Запуск на выполнение задачи menuconfig

$ bitbake linux-yocto -c menuconfig  

Которая, как показано на рисунке 2.5, запускается в отдельном окне и сохраняет сделанные изменения в файле .config, как показано на рисунке 2.7

Запуск задачи diffconfig создания фрагмента настройки ядра Linux, показан в дампе 2.11

Дамп 2.11. Запуск на выполнение задачи diffconfig

$ bitbake linux-yocto -c diffconfig

Команда diffconfig создает файл fragment.cfg , который содержит список макросов CONFIG_ в конфигурации ядра Linux и будет находится в WORKDIR рецепта linux-yocto

Для проверки применяемости назначенных макросов CONFIG_ из файла WORKDIR / fragment.cfg , запустим задачу kernel_configcheck для проверки конфигурации ядра Linux, как показано в дампе 2.12

Дамп 2.12. Запуск на выполнение задачи kernel_configcheck

$ bitbake linux-yocto -c kernel_configcheck -f

После успешной проверки применяемости только что присвоенных макросов CONFIG_ нужно переименовать файл fragment.cfg в файл qemu_conn-ifaces.cfg, который соответствует включению поддержки драйверов FTDI, RTL8139 и e1000. Содержимое указанного файла показано в листинге 2.13

Листинг 2.13. Запуск на выполнение задачи kernel_configcheck

CONFIG_USB_SERIAL=y
# CONFIG_USB_SERIAL_CONSOLE is not set
# CONFIG_USB_SERIAL_GENERIC is not set
...
CONFIG_USB_SERIAL_FTDI_SIO=y
...
CONFIG_E1000=y
...
CONFIG_8139CP=y
CONFIG_8139TOO=y
CONFIG_8139TOO_PIO=y
CONFIG_8139TOO_TUNE_TWISTER=y
...

Затем, скопировать этот файл в директорию recipes-kernel/linux/config в свой уровень метаданных и подключить файл среза конфигурации qemu_conn-ifaces.cfg к переменной FILESPATH в файл дополнения рецепта сборки ядра с расширением .bbappend, как показано в листинге 2.14

Дамп 2.14. Добавление файла qemu_conn-ifaces.cfg в FILESPATH

FILESEXTRAPATHS_prepend := "${THISDIR}:"
SRC_URI += "file://config/qemu_conn-ifaces.cfg"

Остается лишь пересобрать пакет linux-yocto, как показано в дампе 2.15

Дамп 2.15. Пересборка пакета linux-yocto

$ bitbake linux-yocto -cclean
...
$ bitbake linux-yocto

3. Библиография

3.1 ___

3.2 ___

3.3 ___

3.4 ___

Сайт разработан в соответствии с рекомендациями консорциума W3C для языка разметки HTML5.

Об авторе можно прочитать здесь.

Copyright © 2015-2019 Андрей Ржавсков