[sisyphus] Работа ядра 2.6.32-ovz-el на текущем Sisyphus

Nikolay A. Fetisov naf на naf.net.ru
Вс Май 24 08:50:36 MSK 2015


Здравствуйте!

По результатам обновления нескольких машин с t7 до Sisyphus,
возник один вопрос - а как предполагается сейчас работа
на реальном оборудовании систем на ядрах kernel-image-ovz-el ?


Сейчас в Sisyphus есть ядро 2.6.32-ovz-el-alt133. В нем есть 
некоторое число модулей, которые требуют BLOB'ы с firmware:
# find /lib/firmware/2.6.32-ovz-el-alt133/ -type f | wc -l
193

Начиная с udev-217, который в Sisyphus с 10.11.2014, из systemd 
убрана поддержка user-space firmware loader - т.к. ядра 3.3.7 
и выше загружать firmware умеют сами и сторонняя поддержка для 
этого им не нужна.

Сейчас в Sisyphus udev-219, запросы от ядра на загрузку firmware 
он не обрабатывает. Поддержки kernel-space firmware loader в
ядрах 2.6.32-ovz-el нет. Т.е., модули из kernel-image-ovz-el,
запрашивающие загрузку firmware, на текущем Sisyphus ничего не
получают.



Из трёх разным машин, которые были обновлены с t7 до Sisyphus,
две осталось без сети (модули bnx2 и e100), на третьей в модуль r8169
не загрузился "firmware patch" rtl_nic/rtl8168g-1.fw, но сетевой
интерфейс как-то работал.

Пока из идей (помимо отката до {systemd-utils,udev,udev-hwdb,
udev-rules}-216) - возврат к загрузке firmware внешним скриптом. 
Т.е., создание правила для udev вида

SUBSYSTEM=="firmware",ACTION=="add",RUN+="/usr/local/sbin/firmware.sh"

и вытаскивание firmware.sh из http://git.altlinux.org/people/shaba/pack
ages/udev.git?p=udev.git;a=blob_plain;f=extras/firmware/firmware.sh;hb=
66a4fc29f9c63743c36229962b10c95b8954d349

Из плюсов, наличие такого правила:
- не мешает работе с udev-216 - там эти запросы обрабатываются самим
udev и до внешних правил не доходят, 
- не мешает работе с ядрами 3.XX - там запросов на загрузку firmware в
udev вообще не идёт,
- и оно более-менее работает на udev>=217.
Из минусов - с udev-219 оно работает именно более-менее.

Как минимум для сервера с двумя картами Broadcom BCM5709 (bnx2) на 
этапе запуска udev поднимается только одна. Такое впечатление, что 
udev-219 загружает модули параллельно, и в ядре при этом возникает 
какой-то race condition - /sys$DEVPATH/loading создаётся только для 
одной сетевой карты, в случайном порядке. Это было решено через запрет 
на загрузку модуля udev'ом внесением его в blacklist, благо etcnet сам 
потом загружает модуль при поднятии интерфейса - но как универсальный 
вариант внешний скрипт загрузки firmware, по-видимому, сейчас тоже не 
годится.


Т.е., суммируя: появление на openvz.org репозитория с 
branch-rh7-3.10.0-123.1.2-ovz определённые надежды на будущее даёт, 
но что делать сейчас?



-- 
С уважением,
Николай Фетисов



Подробная информация о списке рассылки Sisyphus