Автор Тема: Установка гостевых дополнений в VirtualBox  (Прочитано 64122 раз)

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Да, в гостевой
Simply Linux 10.4 x86_64

Оффлайн geher

  • Участник
  • *
  • Сообщений: 34
Дополнения гостевой ОС у Альта вроде доступны в виде пакетов в репозитарии (названия навскидку не помню). Установка с диска вроде не требуется. Только, возможно, потребуется отключить загрузку модуля kvm.
А если ставить с диска, то верси4я пакетов  kernel-headers* должна точно соответствовать текущему ядру. Возможно, что ядро нужно обновить.

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Дополнения гостевой ОС у Альта вроде доступны в виде пакетов в репозитарии (названия навскидку не помню). Установка с диска вроде не требуется. Только, возможно, потребуется отключить загрузку модуля kvm.
А если ставить с диска, то верси4я пакетов  kernel-headers* должна точно соответствовать текущему ядру. Возможно, что ядро нужно обновить.
Они называются virtualbox-guest-additions virtualbox-guest-common virtualbox-guest-utils, но в регулярке они версии 7.1.8 то есть новее чем установленный virtualbox 7.0.18. Видимо по этому не работают.
Модуль kvm попробую отключить.
kernel-headers* точно совпадает с версией ядра. Но они не видятся установщиком virtualbox guest additions.
Simply Linux 10.4 x86_64

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
# lsmod |  grep kvm
#
Такой модуль не подключён
Simply Linux 10.4 x86_64

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Неужели нельзя установить гостевые дополнения virtualbox в регулярке Alt. Ведь всё касается только Alt систем, неужели об этом не подумали?

И ещё попутный вопрос. Почему-то не могу найти в репозитории пакетов с исходным кодом. Так задумано, или как?
Simply Linux 10.4 x86_64

Оффлайн Skull

  • Глобальный модератор
  • *****
  • Сообщений: 20 135
    • Домашняя страница
Неужели нельзя установить гостевые дополнения virtualbox в регулярке Alt. Ведь всё касается только Alt систем, неужели об этом не подумали?
Потому что по лицензии нельзя!
Цитировать
И ещё попутный вопрос. Почему-то не могу найти в репозитории пакетов с исходным кодом. Так задумано, или как?
apt-repo add 'rpm-src http://ftp.altlinux.org/pub/distributions/ALTLinux/p10/branch x86_64 classic'
apt-get source htop
И смотреть в ~/RPM
Андрей Черепанов (cas@)

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Оказывается я не разобрался. И kernel-headers стоял не тот.
Теперь
[root@v-reg-xfce ~]# uname -r
6.12.32-6.12-alt1
[root@v-reg-xfce ~]# rpm -qa | grep kernel-headers
kernel-headers-6.12-6.12.32-alt1.x86_64
kernel-headers-common-1.2.9-alt1.x86_64
kernel-headers-modules-6.12-6.12.32-alt1.x86_64
Устанавливаю дополнения...
Спойлер
# ./VBoxLinuxAdditions.run
Verifying archive integrity...  100%   MD5 checksums are OK. All good.
Uncompressing VirtualBox 7.0.18 Guest Additions for Linux  100% 
VirtualBox Guest Additions installer
Removing installed version 7.0.18 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Starting.
VirtualBox Guest Additions: Setting up modules
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
modules.  This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>
VirtualBox Guest Additions: or
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup all
VirtualBox Guest Additions: Building the modules for kernel 6.12.32-6.12-alt1.

VirtualBox Guest Additions: Look at /var/log/vboxadd-setup.log to find out what
went wrong
VirtualBox Guest Additions: Running kernel modules will not be replaced until
the system is restarted or 'rcvboxadd reload' triggered
VirtualBox Guest Additions: reloading kernel modules and services
VirtualBox Guest Additions: kernel modules were not reloaded
VirtualBox Guest Additions: kernel modules and services were not reloaded
The log file /var/log/vboxadd-setup.log may contain further information.
Вот лог файл
Спойлер
Building the main Guest Additions 7.0.18 module for kernel 6.12.32-6.12-alt1.
Error building the module.  Build output follows.
make V=1 CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /lib/modules/6.12.32-6.12-alt1/build M=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j1 modules
make -f ./scripts/Makefile.build obj=/tmp/vbox.0 need-builtin=1 need-modorder=1
# cmd_mod /tmp/vbox.0/vboxguest.mod
  printf '%s\n'   VBoxGuest-linux.o VBoxGuest-common.o common/string/strformatrt.o combined-agnostic.o combined-os-specific.o | awk '!x[$0]++ { print("/tmp/vbox.0/"$0) }' > /tmp/vbox.0/vboxguest.mod
# CC [M]  /tmp/vbox.0/VBoxGuest-linux.o
   gcc-14 -Wp,-MMD,/tmp/vbox.0/.VBoxGuest-linux.o.d -nostdinc -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/compiler-version.h -include ./include/linux/kconfig.h -include ./include/linux/compiler_types.h -D__KERNEL__ -fmacro-prefix-map=./= -std=gnu11 -fshort-wchar -funsigned-char -fno-common -fno-PIE -fno-strict-aliasing -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fcf-protection=none -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -mindirect-branch-cs-prefix -mfunction-return=thunk-extern -fno-jump-tables -fpatchable-function-entry=16,16 -fno-delete-null-pointer-checks -O2 -fno-allow-store-data-races -fstack-protector-strong -ftrivial-auto-var-init=zero -fno-stack-clash-protection -fzero-call-used-regs=used-gpr -pg -mrecord-mcount -mfentry -DCC_USING_FENTRY -fmin-function-alignment=16 -fstrict-flex-arrays=3 -fno-strict-overflow -fno-stack-check -fconserve-stack -fno-builtin-wcslen -fno-builtin-wcslen -Wall -Wextra -Wundef -Werror=implicit-function-declaration -Werror=implicit-int -Werror=return-type -Werror=strict-prototypes -Wno-format-security -Wno-trigraphs -Wno-frame-address -Wno-address-of-packed-member -Wmissing-declarations -Wmissing-prototypes -Wframe-larger-than=2048 -Wno-main -Wno-dangling-pointer -Wvla -Wno-pointer-sign -Wcast-function-type -Wno-array-bounds -Wno-stringop-overflow -Wno-alloc-size-larger-than -Wimplicit-fallthrough=5 -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -Wenum-conversion -Wunused -Wno-unused-but-set-variable -Wno-unused-const-variable -Wno-packed-not-aligned -Wno-format-overflow -Wno-format-truncation -Wno-stringop-truncation -Wno-override-init -Wno-missing-field-initializers -Wno-type-limits -Wno-shift-negative-value -Wno-maybe-uninitialized -Wno-sign-compare -Wno-unused-parameter -g -Wno-declaration-after-statement -fno-pie -include /tmp/vbox.0/include/VBox/VBoxGuestMangling.h -I./include -I/tmp/vbox.0/ -I/tmp/vbox.0/include -I/tmp/vbox.0/r0drv/linux -D__KERNEL__ -DMODULE -DRT_WITHOUT_PRAGMA_ONCE -DVBOX -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_GUEST -DIN_GUEST_R0 -DIN_MODULE -DRT_WITH_VBOX -DVBGL_VBOXGUEST -DVBOX_WITH_HGCM -DVBOX_WITH_64_BITS_GUESTS -DRT_ARCH_AMD64  -DMODULE  -DKBUILD_BASENAME='"VBoxGuest_linux"' -DKBUILD_MODNAME='"vboxguest"' -D__KBUILD_MODNAME=kmod_vboxguest -c -o /tmp/vbox.0/VBoxGuest-linux.o /tmp/vbox.0/VBoxGuest-linux.c   ; ./tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --orc --retpoline --rethunk --static-call --uaccess --prefix=16   --module /tmp/vbox.0/VBoxGuest-linux.o
/tmp/vbox.0/VBoxGuest-linux.c:197:21: error: ‘no_llseek’ undeclared here (not in a function); did you mean ‘noop_llseek’?
  197 |     llseek:         no_llseek,
      |                     ^~~~~~~~~
      |                     noop_llseek
make[2]: *** [scripts/Makefile.build:229: /tmp/vbox.0/VBoxGuest-linux.o] Error 1
make[1]: *** [Makefile:1945: /tmp/vbox.0] Error 2
make: *** [/tmp/vbox.0/Makefile-footer.gmk:133: vboxguest] Error 2
kernel modules and services were not reloaded
Если честно даже не понимаю на что он ругается. Помогите установить пожалуйста.
Simply Linux 10.4 x86_64

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Simply Linux 10.4 x86_64

Оффлайн Letmein

  • Участник
  • *
  • Сообщений: 178
Если честно даже не понимаю на что он ругается.
Компилятору встречается имя no_llseek, которое нигде не объявлено, поэтому он не знает, что это такое. Не объявлено оно потому, что функция no_llseek была удалена в ядрах 6.12.

Помогите установить пожалуйста.
Это надо в коде дополнений убрать упоминания no_llseek. Файлы .run можно распаковывать в папку, менять там что-то и обратно запаковывать. Я это однажды делал как раз для дополнений. Подробности, правда, подзабылись. Вроде бы, если VBoxLinuxAdditions.run запустить с параметром --help, то он выдаст доступные опции. А для сборки обратно нужен пакет makeself.

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Понятно. Спасибо! Но это для меня уже сложно. А если установить на хосте virtualbox из сизифа. Поможет?
Simply Linux 10.4 x86_64

Оффлайн Letmein

  • Участник
  • *
  • Сообщений: 178
Поможет, наверно. Я какой-то пакет из Сизифа пересобирал из исходников под p11, он потом нормально установился.
Я скачал дополнения для 7.0.18, посмотрю, что можно сделать, чтобы исправить.

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Спасибо! Но ради единичного случая не стоит много ковырять. Буду пользоваться так. Изображение масштабируется - вот и ладно.
Simply Linux 10.4 x86_64

Оффлайн Letmein

  • Участник
  • *
  • Сообщений: 178
Ну, дело хозяйское. У меня от того случая сохранился скрипт, который это всё делает автоматически. Надо только прописать в нём другую строчку для изменения. Он сам всё распакует, изменит её и запакует. На выходе будет готовый к употреблению образ.

Оффлайн zrpg

  • Участник
  • *
  • Сообщений: 124
Ну, дело хозяйское. У меня от того случая сохранился скрипт, который это всё делает автоматически. Надо только прописать в нём другую строчку для изменения. Он сам всё распакует, изменит её и запакует. На выходе будет готовый к употреблению образ.
Спасибо! Не то чтоб не доверяю, но побаиваюсь инъекций в код.
Simply Linux 10.4 x86_64

Оффлайн Letmein

  • Участник
  • *
  • Сообщений: 178
Ну, решайте сами. Здесь не инъекция, а удаление строчки. Вот сам скрипт:
#!/bin/bash

runfile='VBoxLinuxAdditions.run'
archive='VBoxGuestAdditions-amd64.tar.bz2'
line='^    llseek:         no_llseek,'
tmpdir='/tmp/vboxadd'
sedcmd='/.+VirtualBox ([0-9.]+) Guest Additions.+/{s//\1/;p;q0}'
version=$(sh "$runfile" --info | sed -nE "$sedcmd" -) || exit 1
file="src/vboxguest-${version}/vboxguest/VBoxGuest-linux.c"
sh "$runfile" --noexec --keep --target "$tmpdir" || exit 1
cd "$tmpdir"
mkdir -p 'extract' && cd 'extract' && tar -xjf ../"$archive" || exit 1
sed -i "/${line}/d" "$file" || exit 1
tar -cjf ../"$archive" * && cd ../.. && rm -r "$tmpdir/extract" || exit 1
makeself='/usr/bin/makeself.sh'; [[ -f $makeself ]] || makeself='/usr/bin/makeself'
$makeself --nocomp "$tmpdir" "$runfile" \
         "VirtualBox $version Guest Additions for Linux" \
         '/bin/sh' './install.sh' '$0' && rm -r "$tmpdir" || exit 1
genisoimage -rJV "VBox_${version}_Linux_GAs" -o "VBoxLinuxAdditions-${version}.iso" \
        "$runfile" && rm "$runfile" || exit 1
echo -e "\nГотово: /tmp/VBoxLinuxAdditions-${version}.iso\n"
exit 0
В переменной line указана строчка, которая удаляется. В file указан файл с этой строчкой — всё как в сообщении об ошибке у вас. Команда sed собственно удаляет строчку. А остальное — распаковка и упаковка обратно. Для работы скрипта нужны пакеты makeself и genisoimage. Монтируете куда-нибудь исходный образ дополнений, переходите туда в терминале и даёте команду (от пользователя)
bash путь-к-скрипту
На выходе получится образ /tmp/VBoxLinuxAdditions-7.0.18.iso, который уже можно подключить к гостевой системе и запустить там VBoxAdditions.run. Можно предварительно сделать снимок гостевой системы на случай, если дополнения установятся, но какие-то косяки будут. Так что большого риска тут не вижу. Удаление строчки проходит корректно, но установку не проверял, т.к. нет регулярки установленной.