VirtualBox Guest Additions -- общие папки

countmein

New member
Сообщения
328
#1
При установке дополнений в гостевой Астре происходит ошибка сборки модуля общих папок, и, соответственно, общие папки потом не работают.
Код:
/tmp/vbox.0/include/iprt/linux/version.h:135:48: error: hexadecimal floating constants require an exponent
 # define RTLNX_UBUNTU_ABI(a_iAbi)   (RT_CONCAT(0x,a_iAbi))
Чтобы избежать ошибки, можно подправить вышеуказанную строку в вышеупомянутом файле version.h внутри VBoxLinuxAdditions.run, изменив её на
Код:
# define RTLNX_UBUNTU_ABI(a_iAbi)  0
Для автоматизации этого действия можно использовать следующий скрипт. Для его работы нужно предварительно установить пакет makeself, которым создаются файлы .run.
Код:
#!/bin/bash
runfile='VBoxLinuxAdditions.run'
archive='VBoxGuestAdditions-amd64.tar.bz2'
line='^# define RTLNX_UBUNTU_ABI'
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}/vboxsf/include/iprt/linux/version.h"
sh "$runfile" --noexec --keep --target "$tmpdir" || exit 1
cd "$tmpdir"
mkdir -p 'extract' && cd 'extract' && tar -xjf ../"$archive" || exit 1
sed -i "/${line}/s/(RT_CONCAT(0x,a_iAbi))/0/" "$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
Скрипт нужно запустить в терминале, зайдя в системе-хозяине на примонтированный образ с дополнениями. Например, так.
Код:
sudo mount ~/.config/VirtualBox/VBoxGuestAdditions_6.1.34.iso /mnt
cd /mnt
bash <путь-к-скрипту>
Результатом его работы для данного примера будет образ /tmp/VBoxLinuxAdditions-6.1.34.iso, который уже можно подключить к гостевой Астре и запустить там подправленный VBoxLinuxAdditions.run.
 
Сообщения
765
#2
При установке дополнений в гостевой Астре происходит ошибка сборки модуля общих папок, и, соответственно, общие папки потом не работают.
Код:
/tmp/vbox.0/include/iprt/linux/version.h:135:48: error: hexadecimal floating constants require an exponent
# define RTLNX_UBUNTU_ABI(a_iAbi)   (RT_CONCAT(0x,a_iAbi))
Чтобы избежать ошибки, можно подправить вышеуказанную строку в вышеупомянутом файле version.h внутри VBoxLinuxAdditions.run, изменив её на
Код:
# define RTLNX_UBUNTU_ABI(a_iAbi)  0
Для автоматизации этого действия можно использовать следующий скрипт. Для его работы нужно предварительно установить пакет makeself, которым создаются файлы .run.
Код:
#!/bin/bash
runfile='VBoxLinuxAdditions.run'
archive='VBoxGuestAdditions-amd64.tar.bz2'
line='^# define RTLNX_UBUNTU_ABI'
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}/vboxsf/include/iprt/linux/version.h"
sh "$runfile" --noexec --keep --target "$tmpdir" || exit 1
cd "$tmpdir"
mkdir -p 'extract' && cd 'extract' && tar -xjf ../"$archive" || exit 1
sed -i "/${line}/s/(RT_CONCAT(0x,a_iAbi))/0/" "$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
Скрипт нужно запустить в терминале, зайдя в системе-хозяине на примонтированный образ с дополнениями. Например, так.
Код:
sudo mount ~/.config/VirtualBox/VBoxGuestAdditions_6.1.34.iso /mnt
cd /mnt
bash <путь-к-скрипту>
Результатом его работы для данного примера будет образ /tmp/VBoxLinuxAdditions-6.1.34.iso, который уже можно подключить к гостевой Астре и запустить там подправленный VBoxLinuxAdditions.run.
Как освобожусь попробую!
 
Сообщения
765
#3
#!/bin/bash
runfile='VBoxLinuxAdditions.run'
archive='VBoxGuestAdditions-amd64.tar.bz2'
line='^# define RTLNX_UBUNTU_ABI'
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}/vboxsf/include/iprt/linux/version.h"
sh "$runfile" --noexec --keep --target "$tmpdir" || exit 1
cd "$tmpdir"
mkdir -p 'extract' && cd 'extract' && tar -xjf ../"$archive" || exit 1
sed -i "/${line}/s/(RT_CONCAT(0x,a_iAbi))/0/" "$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
[/code]
Скрипт нужно запустить в терминале, зайдя в системе-хозяине на примонтированный образ с дополнениями. Например, так.
Код:
sudo mount ~/.config/VirtualBox/VBoxGuestAdditions_6.1.34.iso /mnt
cd /mnt
bash <путь-к-скрипту>
Результатом его работы для данного примера будет образ /tmp/VBoxLinuxAdditions-6.1.34.iso, который уже можно подключить к гостевой Астре и запустить там подправленный VBoxLinuxAdditions.run.
А под каким названием и с каким расширением этот скрипт нужно сделать и куда его лучше всего поместить?
 

countmein

New member
Сообщения
328
#4
Это значения не имеет. Какая программа выполняет скрипт, указано в его первой строчке. Это на случай, если вы его сделаете исполняемым и запустите как программу. А если передать его как аргумент в вызове bash, то и исполняемым делать не надо. Но обычно дают расширение .sh. Поместить тоже всё равно куда. Но если в один из каталогов, указанных в PATH, то можно будет его вызывать без пути к нему.
 
Сообщения
765
#5
Скрипт нужно запустить в терминале, зайдя в системе-хозяине на примонтированный образ с дополнениями. Например, так.
На машине хозяине у меня нет этого файла VBoxGuestAdditions_. по этому адресу ~/.config/VirtualBox/
 

countmein

New member
Сообщения
328
#6
А вы его скачивали? Где-то в другом месте сохранён, видимо. Попробуйте поискать такой командой:
Код:
find ~ -name 'VBoxGuestAdditions*.iso'
 
Сообщения
765
#7
А вы его скачивали? Где-то в другом месте сохранён, видимо. Попробуйте поискать такой командой:
Код:
find ~ -name 'VBoxGuestAdditions*.iso'
Я его только на гостевой системе пытался установить. А как на основной - не знаю...
 

countmein

New member
Сообщения
328
#8
Да, дополнения устанавливаются на гостевой, но образ-то с ними скачивается VirtualBox'ом в основную, потом подключается к виртуальному приводу гостя.
 
Сообщения
765
#9
Да, дополнения устанавливаются на гостевой, но образ-то с ними скачивается VirtualBox'ом в основную, потом подключается к виртуальному приводу гостя.
У меня такое содержимое:

Код:
12489229 drwx------  2 user user user ? 4,0K мая 30 22:05 ./
12320783 drwxr-xr-x 32 user user user ? 4,0K мая 30 22:01 ../
12493156 -rw-------  1 user user user ? 1,2K янв 21 22:05 compreg.dat
12485871 -rw-------  1 user user user ? 1,7K мая 30 22:20 selectorwindow.log
12482279 -rw-------  1 user user user ? 4,2K мая 30 12:26 selectorwindow.log.1
12485879 -rw-------  1 user user user ? 2,0K мая 27 12:25 selectorwindow.log.10
12482275 -rw-------  1 user user user ? 6,5K мая 30 12:02 selectorwindow.log.2
12485893 -rw-------  1 user user user ? 3,0K мая 30 00:13 selectorwindow.log.3
12486044 -rw-------  1 user user user ? 3,4K мая 29 19:22 selectorwindow.log.4
12485958 -rw-------  1 user user user ?  362 мая 29 19:22 selectorwindow.log.5
12486091 -rw-------  1 user user user ?  291 мая 29 17:49 selectorwindow.log.6
12485885 -rw-------  1 user user user ? 2,0K мая 29 16:30 selectorwindow.log.7
12485937 -rw-------  1 user user user ?  218 мая 27 23:50 selectorwindow.log.8
12485928 -rw-------  1 user user user ? 1,3K мая 27 23:49 selectorwindow.log.9
12493073 -rw-r--r--  1 user user user ? 196K мая 30 11:02 vbox-ssl-cacertificate.crt
12485926 -rw-------  1 user user user ?  68K мая 30 22:20 VBoxSVC.log
12482276 -rw-------  1 user user user ? 711K мая 30 12:28 VBoxSVC.log.1
12485867 -rw-------  1 user user user ?  54K мая 23 22:54 VBoxSVC.log.10
12485888 -rw-------  1 user user user ? 463K мая 30 00:13 VBoxSVC.log.2
12482274 -rw-------  1 user user user ?  87K мая 29 23:25 VBoxSVC.log.3
12485927 -rw-------  1 user user user ?  79K мая 27 23:50 VBoxSVC.log.4
12485895 -rw-------  1 user user user ?  58K мая 27 12:33 VBoxSVC.log.5
12485884 -rw-------  1 user user user ?  78K мая 26 23:52 VBoxSVC.log.6
12486047 -rw-------  1 user user user ? 131K мая 25 23:52 VBoxSVC.log.7
12485875 -rw-------  1 user user user ?  84K мая 25 12:30 VBoxSVC.log.8
12485886 -rw-------  1 user user user ?  80K мая 24 23:49 VBoxSVC.log.9
12486623 -rw-------  1 user user user ? 5,2K мая 30 12:28 VirtualBox.xml
12486597 -rw-------  1 user user user ? 4,9K мая 30 12:28 VirtualBox.xml-prev
12493169 -rw-------  1 user user user ?  30K янв 21 22:05 xpti.dat
 

countmein

New member
Сообщения
328
#10
А команду find не запускали? Если не найдёт, скачайте его с сайта ВиртуалБокса, да и всё.
 
Сообщения
765
#12
А команду find не запускали? Если не найдёт, скачайте его с сайта ВиртуалБокса, да и всё.
А на официальном сайте не могу найти. Только VirtualBox 6.1.34 Oracle VM VirtualBox Extension Pack. И еще у меня версия 6.1.28 Но главное знать где искать. Версия сейчас не важна. Ссылку дайте пожалуйста.
 

countmein

New member
Сообщения
328
#13
Отдельной ссылки на дополнения нет. Видимо, они включены в установочный пакет. В каталоге /opt ещё поищите.
 
Сообщения
765
#16

Вложения

countmein

New member
Сообщения
328
#17
Это хорошо, но надо бы всё-таки выяснить, где он у вас штатно лежит. Не скачивать же каждый раз.
 
Сообщения
765
#18

Вложения

Сообщения
765
#19
Это хорошо, но надо бы всё-таки выяснить, где он у вас штатно лежит. Не скачивать же каждый раз.
Набираю команду sudo mount /usr/share/virtualbox/VBoxGuestAdditions.iso /mnt
В ответ сообщение:
Код:
mount: /dev/loop0 is write-protected, mounting read-only