Версия пакета: make-initrd-2.55.1-alt2 Ядро: 6.12.45-6.12-alt1 Шаги воспроизведения: 1) # echo "FEATURES += modules-virtio" >> /etc/initrd.mk 2) # make-initrd Фактический результат: Фича добавляется, модули нет Ожидаемый результат: При подключении фичи добавляются virtio модули rules.mk: # SPDX-License-Identifier: GPL-3.0-or-later VIRTIO_PATTERN_SET = symbol:^register_virtio_driver MODULES_PATTERN_SETS += VIRTIO_PATTERN_SET Похоже, что symbol:^register_virtio_driver не работает так, как задумывалось. Если поменять на name:.*virtio.* - то заработает. На сизифе не смотрел, но судя по gear репозиторию make-initrd - там тоже должно воспроизвестись.
>Похоже, что symbol:^register_virtio_driver не работает так, как задумывалось. Достаточно убрать "^": symbol:register_virtio_driver Похоже, что "^" начал обрабатываться как часть имени.
(Ответ для Vladislav Glinkin на комментарий #0) > Версия пакета: > make-initrd-2.55.1-alt2 > > Ядро: > 6.12.45-6.12-alt1 > > Шаги воспроизведения: > 1) # echo "FEATURES += modules-virtio" >> /etc/initrd.mk > 2) # make-initrd > > Фактический результат: > Фича добавляется, модули нет > > Ожидаемый результат: > При подключении фичи добавляются virtio модули > > rules.mk: > # SPDX-License-Identifier: GPL-3.0-or-later > VIRTIO_PATTERN_SET = symbol:^register_virtio_driver > MODULES_PATTERN_SETS += VIRTIO_PATTERN_SET > > Похоже, что symbol:^register_virtio_driver не работает так, как задумывалось. > Если поменять на name:.*virtio.* - то заработает. > > На сизифе не смотрел, но судя по gear репозиторию make-initrd - там тоже > должно воспроизвестись. (Ответ для Антон Мидюков на комментарий #1) > >Похоже, что symbol:^register_virtio_driver не работает так, как задумывалось. > > Достаточно убрать "^": > symbol:register_virtio_driver > > Похоже, что "^" начал обрабатываться как часть имени.
Давай разбираться. $ cat > /tmp/filter <<EOF symbol register_virtio_driver EOF $ initrd-scanmod /tmp/filter |tail -1 /lib/modules/6.16.8/kernel/sound/virtio/virtio_snd.ko $ nm /lib/modules/6.16.8/kernel/sound/virtio/virtio_snd.ko |grep register_virtio_driver U __register_virtio_driver U unregister_virtio_driver Утилита в порядке, а вот символ поменялся. https://github.com/torvalds/linux/commit/ffe6176b7f53c#diff-e094512af26ca56f76a1492fa10b4967aa93bfdcfede13490fd6b95753b8c1c8R363-L372 К сожалению анализ символов это хак. Хоть я и пытался использовать EXPORT_SYMBOL_GPL символы это не является гарантией, что символ не изменится. Для исправления можно учитывать опциональный префикс, чтобы сохранить совместимость со старыми ядрами. Возможный фикс: https://github.com/osboot/make-initrd/commit/d4cfad7ab30f0fa6e01614303972013539196a3e
(Ответ для Alexey Gladkov на комментарий #3) > Давай разбираться. > > $ cat > /tmp/filter <<EOF > symbol register_virtio_driver > EOF > > $ initrd-scanmod /tmp/filter |tail -1 > /lib/modules/6.16.8/kernel/sound/virtio/virtio_snd.ko > > $ nm /lib/modules/6.16.8/kernel/sound/virtio/virtio_snd.ko |grep > register_virtio_driver > U __register_virtio_driver > U unregister_virtio_driver > > Утилита в порядке, а вот символ поменялся. > > https://github.com/torvalds/linux/commit/ffe6176b7f53c#diff- > e094512af26ca56f76a1492fa10b4967aa93bfdcfede13490fd6b95753b8c1c8R363-L372 > > К сожалению анализ символов это хак. Хоть я и пытался использовать > EXPORT_SYMBOL_GPL символы это не является гарантией, что символ не изменится. > > Для исправления можно учитывать опциональный префикс, чтобы сохранить > совместимость со старыми ядрами. Возможный фикс: > > https://github.com/osboot/make-initrd/commit/ > d4cfad7ab30f0fa6e01614303972013539196a3e Проверил, работает. Спасибо!
make-initrd-2.55.1-alt5 -> sisyphus: Fri Sep 26 2025 Anton Midyukov <antohami@altlinux> 2.55.1-alt5 - add upstream patch: + feature/modules-virtio: Fix symbol filter (Closes: 56149)