Bug 56149 - modules-virtio feature не добавляет модули
Summary: modules-virtio feature не добавляет модули
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: make-initrd (show other bugs)
Version: unstable
Hardware: all Linux
: P5 normal
Assignee: Антон Мидюков
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-09-25 17:35 MSK by Vladislav Glinkin
Modified: 2025-09-26 09:48 MSK (History)
6 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vladislav Glinkin 2025-09-25 17:35:53 MSK
Версия пакета: 
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 - там тоже должно воспроизвестись.
Comment 1 Антон Мидюков 2025-09-25 20:40:52 MSK
>Похоже, что symbol:^register_virtio_driver не работает так, как задумывалось.

Достаточно убрать "^":
symbol:register_virtio_driver

Похоже, что "^" начал обрабатываться как часть имени.
Comment 2 Антон Мидюков 2025-09-25 20:41:59 MSK
(Ответ для 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
> 
> Похоже, что "^" начал обрабатываться как часть имени.
Comment 3 Alexey Gladkov 2025-09-26 00:46:04 MSK
Давай разбираться.

$ 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
Comment 4 Антон Мидюков 2025-09-26 09:33:31 MSK
(Ответ для 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

Проверил, работает. Спасибо!
Comment 5 Repository Robot 2025-09-26 09:48:04 MSK
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)