[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