[devel] Битые символы при сборке virtualbox.git=6.1.14-alt1
Valery Sinelnikov
greh на altlinux.org
Чт Сен 24 15:49:52 MSK 2020
чт, 24 сент. 2020 г. в 15:23, Alexey V. Vissarionov <gremlin на altlinux.org>:
>
> On 2020-09-24 11:34:18 +0400, Ivan A. Melnikov wrote:
>
> >> Проблема возникает при проверке модуля VMMR0.r0, который
> >> динамически загружает другие модули, но явно с ними не
> >> слинкован. На работоспособность это не влияет, но сборочница
> >> не пропускает.
> > Тут дело не в недолинковке. Проверка bad_elf_symbols означает,
> > что таких символов в репозитории вообще нет, то есть бинарник их
> > требует, но нет ни одного elf-файла, который бы их предоставлял.
> > Однако, как я понимаю, VMMR0.r0 -- это не какая-нибудь
> > разделяемая библиотека, а часть гипервизора, и эти символы
> > ей предоставляются ядром, а точнее модулем virtualbox.ko из
> > kernel-modules-virtualbox.
>
> Проверка производится коряво, по причине чего ее нужно либо чинить,
> либо делать отключаемой. Я с этим сталкивался при сборке EFI-модулей
> syslinux, которые по уму вообще должны находиться в noarch-пакете -
> там нет бинарников, которые запускаются системным вызовом execve()
>
> >> Какие варианты решения можете предложить?
> > В сборке из #257606:
> > $ file usr/lib64/virtualbox/VMMR0.r0
> > usr/lib64/virtualbox/VMMR0.r0: ELF 64-bit LSB shared object,
> > x86-64, version 1 (SYSV), dynamically linked, stripped
> > Это shared object, и он попадает под проверку bad_elf_symbols.
> > Сейчас в Сизифе:
> > $ file usr/lib64/virtualbox/VMMR0.r0
> > usr/lib64/virtualbox/VMMR0.r0: ELF 64-bit LSB relocatable,
> > x86-64, version 1 (SYSV), not stripped
> > Это не shared object, и проверка его игнорирует.
>
> Неудачный критерий... нужна возможность отключать эту проверку
> в том чисте и для shared objects - например, когда они собраны
> для другой системы (см. syslinux-efi) или даже архитектуры (см.
> firmware).
В новой сборке virtualbox-6.1.14 имеется опция
VBOX_WITH_VBOXR0_AS_DLL, которая по умолчанию установлена. Если её
отключить, то при старте виртуалки возникает ошибка:
Failed to load R0 module /usr/lib64/virtualbox/VMMR0.r0: RTLdrGetBits
failed (VERR_LDRELF_RELOCATION_NOT_SUPPORTED).
Failed to load VMMR0.r0 (VERR_LDRELF_RELOCATION_NOT_SUPPORTED).
Видимо, теперь необходимо чтобы этот модуль был собран как dll.
--
С уважением,
Синельников Валерий Александрович
Тел. + 7-917-324-20-36
Подробная информация о списке рассылки Devel