VirtualBox (устарело): различия между версиями
(статья бред и непонятно о чём) |
Нет описания правки |
||
(не показаны 84 промежуточные версии 25 участников) | |||
Строка 1: | Строка 1: | ||
{{ | {{Historical}}{{Note|Данная статья устарела. Акутальную информацию см. в статьях '''[[VirtualBox]]''' и '''[[VirtualBox/Quick]]'''.}} | ||
{{ | {{w|VirtualBox}} | ||
{{ | [http://virtualbox.org VirtualBox] — программный продукт виртуализации для операционных систем Microsoft Windows, DOS, GNU/Linux, Mac OS X и SUN Solaris/OpenSolaris. Программа была создана компанией Innotek с использованием исходного кода Qemu. Первая публично доступная версия VirtualBox появилась 15 января 2007 года. Существует две версии — свободная (OSE, англ. Open Source Edition), выпущенная под GNU GPL, и проприетарная (PUEL), различающиеся по функциональности; полнофункциональная проприетарная версия для личного использования распространяется бесплатно. | ||
В феврале 2008 Innotek был приобретён компанией Sun Microsystems, модель распространения VirtualBox при этом не изменилась. | |||
Пакеты свободной версии VirtualBox есть в составе дистрибутивов ALT Linux, начиная с Desktop 4.1. При установке системы можно выбрать группу "Виртуализация" для установки Virtualbox по умолчанию. | |||
== 1 == | {{Attention|С версии VirtualBox 5.1.2 не используйте профили ALT Linux при создании виртуальных машин. Из списка их убрать сложно, поэтому просто не используйте. Импорт таких машин по-прежнему возможен.}} | ||
(версии не важны, важно, чтобы они были '''одинаковы''' и для вашего | == Установка свободной версии VirtualBox из пакетов == | ||
рабочего ядра) | [[VirtualBox/Quick]] | ||
;Чтобы воспользоваться Virtualbox, необходимо установить следующий набор пакетов: | |||
''(при помощи apt-get install без указания "-версия программы", только по названию пакета)'' | |||
* virtualbox-версия программы | |||
* virtualbox-common-версия программы | |||
* virtualbox-doc-версия программы | |||
* kernel-modules-virtualbox-std-def-версия-программы-"номер_сборки_ядра" (нужен для хостовой ОС) | |||
* kernel-modules-virtualbox-addition-std-def-версия-программы-"номер_сборки_ядра" (не нужен для хостовой ОС) | |||
* virtualbox-guest-additions-версия программы (не нужен для хостовой ОС) | |||
;Пример: | |||
Пусть у вас стоит: | |||
* virtualbox-4.3.22-alt0.M70P.1 | |||
и ядро | |||
* kernel-image-std-def-3.14.35-alt1 | |||
;Cмотрим модули virtualbox: | |||
* kernel-modules-virtualbox-addition-std-def-4.3.22-alt1.200227.1 (можно удалить - вы не внутри Virtualbox) | |||
* kernel-modules-virtualbox-std-def-4.3.22-alt1.200227.1 (актуальное ядро, от актуальной версии VirtualBox) | |||
* kernel-modules-virtualbox-std-def-4.3.22-alt1.200225.1 (для старой версии ядра) | |||
* kernel-modules-virtualbox-std-def-4.3.14-alt1.200225.1 (от старого Virtualbox и старого ядра) | |||
* virtualbox-common-4.3.22-alt0.M70P.1 - Ок | |||
* virtualbox-doc-4.3.22-alt0.M70P.1 - Ок | |||
* virtualbox-guest-additions-4.3.22-alt0.M70P.1 - (не нужный пакет, если вы не внутри VirtualBox)/ | |||
При этом, они должны быть одной версии (4.3.22-alt0.M70P.1 в данном случае) а модули ядра, от текущего ядра. | |||
Кроме того, модуль ядра должен соответствовать сборочной ветки ядра (std-def в данном случае). | |||
Чтобы это обеспечить, ядро и пакеты необходимо устанавливать из одного и того же репозитория. | |||
Если VirtualBox был недавно обновлён в репозитарии, а ядро Вы давно не обновляли, вероятно, что VB не будет работать с Вашим старым ядром. Вам придётся обновить ядро и/или модули. Это всё можно сделать утилитой {{prg|update-kernel}}. | |||
update-kernel | |||
{{note|подробнее смотри [[Обновление модулей ядра]]}} | |||
;Узнать версию загруженного ядра можно так: | |||
<source lang=text> | |||
$ uname -r | |||
3.14.35-std-def-alt1 | |||
</source> | |||
;Если у вас в виртуальной машине (гостевая система) тоже ALT Linux, то можно установить в ней "дополнения гостевой системы": | |||
kernel-modules-virtualbox-addition-std-def-версия программы-"номер_сборки_ядра" | |||
virtualbox-guest-additions-версия программы-"номер_сборки_ядра" | |||
Virtualbox использует для работы устройство: | |||
$ ls -l /dev/vboxdrv | |||
crw-rw---- 1 root vboxusers 10, 58 Май 5 08:46 /dev/vboxdrv | |||
Если такого файла нет -- следует проверить наличие соответствующего загруженному ядру (тип и версия) пакета {{pkg|kernel-modules-virtualbox-*}} и | |||
<pre> | |||
chkconfig virtualbox on | |||
service virtualbox start | |||
</pre> | |||
;Проверяем список установленных пакетов: | |||
<source lang=text> | |||
$ rpm -qa | grep virtual-* | |||
kernel-modules-virtualbox-addition-std-def-4.3.22-alt1.200227.1 | |||
virtualbox-doc-4.3.22-alt0.M70P.1 | |||
kernel-modules-virtualbox-4.3.22-alt1.200227.1 (не нужен в гостевой машине, можно удалить) | |||
virtualbox-4.3.22-alt0.M70P.1 - (можно смело удалять, если вы не хотитке устраивать "матрёшки"). | |||
virtualbox-guest-additions-4.3.22-alt0.M70P.1 | |||
virtualbox-common-4.3.22-alt0.M70P.1 | |||
</source> | |||
;Включаем своего пользователя в группу vboxusers или vboxadd (для коммерческой сборки) | |||
<source lang=text> | |||
gpasswd -a user vboxusers | |||
</source> | |||
или | |||
<source lang=text> | |||
gpasswd -a user vboxadd | |||
</source> | |||
;Для работы с usb устройствами необходимо настроить fstab: | |||
{{note|в p7 и старше не надо}} | |||
1. В конец /etc/fstab добавляем | |||
none /proc/bus/usb/ usbfs devgid=500,devmode=666 0 0 где devgid=идентификатор пользователя | |||
2. Перезагружаем систему | |||
;Для работы usb в режиме usb2 и usb3 надо скачать с сайта [https://www.virtualbox.org/wiki/Downloads Страница загрузки VirtualBox] и установить "Oracle VM VirtualBox Extension Pack", версия которого должна соответствовать версии Virtualbox. Также его можно скачать и установить, воспользовавшись пунктом меню "Файл->Проверить обновления..." | |||
;После чего, можно запускать Virtualbox, например, в KDE из меню: K- Система — Виртуализатор Virtualbox. | |||
== Настройка сети в гостевой системе Virtualbox == | |||
;Чтобы гостевая система получила доступ к подсети, в которой находится хост-система, можно поступить следующим образом: | |||
Настроить в хост-системе туннель и бридж, как описано в пунктах [[Etcnet#Настройка tun/tap интерфейса|3.7]] и | |||
[[Etcnet#Как настроить Ethernet-мост|3.6]] статьи Etcnet — соответственно, сначала необходимо запустить интерфейс туннеля tap0 а затем объединить его в мост с интерфейсом вашей физической сетевой карты (например, eth0). | |||
После того, как вы убедитесь, что сеть на хост-системе после этой настройки работает как и раньше, вы можете использовать туннель в Virtualbox: | |||
зайдите в свойства виртуальной машины, раздел "сеть" и выберите "Подсоединён к" — "Хост-интерфейс", а ниже, в поле "Хост-интерфейсы" выберите tap0. | |||
После этого, при загрузке, гостевая система получит доступ к той же подсети, что и хост-система, и будет выступать равноправным компьютером в сети со своим IP адресом. IP адрес и другие настройки интерфейсу следует назначать средствами гостевой системы. | |||
<br/><br/> | |||
== Настройка загрузки Linux в гостевых машинах в режиме UEFI == | |||
Основная статья [[UEFI]] | |||
Следует отметить, что NVRAM на виртуальном железе VirtualBox не переживает выключение экземпляра (это известная проблема). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра. | |||
Решение: | |||
'''1-ый вариант''' выполнить в ещё загруженной системе | |||
echo "fs0:\EFI\altlinux\grubx64.efi" > /boot/efi/startup.nsh | |||
Или то же самое сделать потом, из EFI Shell: | |||
echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh | |||
'''2-ой вариант''' (подсмотрено в | VirtualBox (Русский) на wiki.archlinux.org | |||
после установки системы: | |||
* Если существует файл /boot/efi/boot/BOOTX64.EFI дать ему другое имя | |||
* Скопировать /EFI/altlinux/grubx64.efi в /boot/efi/boot/BOOTX64.EFI | |||
== Решение проблем == | |||
;При запуске дистрибутивов на Седьмой платформе как гостевых ОС в VirtualBox после загрузки ядра показывается чёрный экран, в журнале пишется <pre>Guest Log: BIOS: KBD: unsupported int 16h function 03</pre> | |||
:Для современных ядер, на которых основаны дистрибутивы Седьмой платформы, нужно указывать в настройках виртуальной машины Система {{==)}} Материнская плата {{==)}} Чипсет: '''ICH9''' (заодно там же включите '''IO APIC'''). По умолчанию в альтовом VirtualBox стоит PIIX3, что и является причиной указанного поведения. | |||
;При запуске гостевой ОС на Седьмой платформе VirtualBox показывает сообщение о не достаточных правах доступа для /dev/vboxdrv и просит запустить "/etc/init.d/vboxdrv setup" которого нет | |||
* Необходимо выполнить: | |||
<pre> | |||
chkconfig virtualbox on | |||
service virtualbox start | |||
</pre> | |||
;В гостевой ОС после выбора подсказки Установка или LiveCD чёрный экран и ничего не происходит. | |||
* Выберите PIIX3, и при запуске установки (или загрузки с LiveCD) выберите клавишеей F5 загрузка "Без локального APIC" | |||
[[Файл:VirtualBox1.jpg|миниатюра]] | |||
;В гостевой системе не работает звук | |||
:Откройте регулятор громкости PulseAudio ({{prg|pavucontrol}}) и на вкладке «Проигрывание» включите звук для виртуальной машины. | |||
{{note|VirtualBox через PulseAudio позволяет настраивать вывод звука для каждой виртуальной машины. При этом включение для первой машины включает звук и для других запускаемых виртуальных машин}} | |||
;Плохо работает микрофон в гостевой системе (заикается) | |||
:Всё дело в PulseAudio. Для того, чтобы микрофон работал без заиканий, для виртуальной машины выставьте ALSA: Аудио {{==)}} Аудиодрайвер: ALSA и выключите на время работы PulseAudio: в терминале | |||
<pre>pulseaudio -k</pre> | |||
;Если служба {{cmd|virtualbox}} запускается, но модули не загружаются, отключите автозапуск службы {{cmd|virtualbox}} и создайте файл {{path|/etc/modules-load.d/virtualbox.conf}} такого содержания: | |||
vboxdrv | |||
vboxpci | |||
vboxnetflt | |||
vboxnetadp | |||
;Происходит зависание гостевой ОС на словах <tt>Local IPI:</tt> | |||
:Это {{altbug|29344}}, исправлено в {{pkg|virtualbox-4.2.16-alt2}} (но вовсе не факт, что в других дистрибутивах порядок). | |||
== Установка Oracle Extension Pack == | |||
;Установленная версия VirtualBox OSE позволяет использовать только USB 1.0, однако иногда необходимо использовать USB 2.0. Для корректной работы USB 2.0 в VirtualBox (на момент написания актуальной версией в репозитарии Sisyphus является VirtualBox 4.0.12) требуется Oracle VM VirtualBox Extension Pack. Его можно скачать с сайта Oracle [http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html#extpack]. Установку дополнения можно запустить из графического интерфейса или из командной строки: | |||
# VirtualBox extpack install /path/to/Oracle_VM_VirtualBox_Extension_Pack-...vbox-extpack | |||
Для установки дополнения необходимо запустить VirtualBox с правами администратора, иначе установка не удастся с ошибкой: | |||
The installer failed with exit code 127: Error creating textual authentication agent: | |||
Error opening current controlling terminal for the process (`/dev/tty'): No such device or address. | |||
{{note|новые версии Virtualbox умеют устанавливать это расширение от обычного пользователя}} | |||
Если в системе установлена программа gksu или kdesudo, то VirtualBox попытается с их помощью поднять уровень привилегий для выполнения установки | |||
На данный момент Oracle VM VirtualBox Extension Pack является единственным дополнением. Оно обеспечивает следующую функциональность: | |||
* USB 2.0 EHCI | |||
* VirtualBox Remote Desktop Protocol, VRDP | |||
* Intel PXE boot ROM с поддержкой контроллера E1000 | |||
* экспериментальная поддержка «проброса» PCI с хост-системы | |||
{{Важно|Если установлен и используется плагин Oracle Extension Pack , то обязательно обновить его до последней версии (скачать с virtualbox.org), иначе виртуальная машина начинает грузится и «схлопывается».[http://lists.altlinux.org/pipermail/community/2015-February/683600.html]}} | |||
== Установка проприетарной сборки VirtualBox == | |||
Также можно использовать закрытую бинарную сборку с сайта разработчиков программы. | |||
{{note|посмотрите обсуждение этой статьи, почему не надо так делать}} | |||
=== Что потребуется для установки? === | |||
* Во-первых, очевидно, потребуется файл с инсталлятором VirtualBox с официального сайта. На данный момент страница со ссылками на нужный файл находится по адресу: [http://www.virtualbox.org/wiki/Linux_Downloads www.virtualbox.org/wiki/Linux_Downloads]. Дистрибутивы {{path|All distributions i386}} или {{path|All distributions AMD64}} для 32-х или 64-х битной системы, соответственно. | |||
* Во-вторых, вам потребуется компилятор. Например, на момент написания этой статьи, нужен пакет {{pkg|gcc4.1}}, а также программа {{prg|make}}. Кроме того, вам потребуется пакет {{pkg|kernel-headers-modules}} для ''вашего'' ядра. | |||
=== Об установке заголовков для сборки модулей ядра === | |||
;Для сборки модулей ядра, которые нужны для VirtualBox (или VM Ware), в системе должен быть установлен пакет {{pkg|kernel-headers-modules}} той же версии, что и используемое ядро. | |||
Посмотрите, какая версия ядра установлена у вас в системе. Например: | |||
<source lang=text> | |||
[alexei@threebears ~]$ uname -r | |||
2.6.27-std-ll-alt7 | |||
</source> | |||
Как видно, в системе установлено ядро '''2.6.27-std-ll-alt7'''. То есть, для сборки модулей под него нужно установить пакет {{pkg|kernle-headers-modules-std-ll}} версии '''2.6.27-alt7'''. | |||
;Проверить, установлен ли у вас такой пакет, можно так: | |||
<source lang=text> | |||
[alexei@threebears ~]$ rpm -qa | grep headers-modules | |||
kernel-headers-modules-std-ll-2.6.27-alt7 | |||
kernel-headers-modules-std-def-2.6.27-alt7 | |||
</source> | |||
Как видно, в данной системе он установлен. | |||
;Если в вашей системе этого пакета нет, установите его командой: | |||
<source lang=text> | |||
apt-get install kernel-headers-modules-std-ll | |||
</source> | |||
{{note|Советую запретить apt-у автоматом обновлять пакеты kernel-headers-* ("захолдить") эти пакеты}} | |||
=== К вопросу о несогласованности версий === | |||
;Если вы ставите пакеты с диска с дистрибутивом, то версии ядер и заголовков совпадают (если только в дистрибутив не вкралась досадная ошибка). Однако, если вы делали точечные обновления системы, или обновляетесь с нестабильных репозиториев, то версии ядра и заголовков могут не совпадать. | |||
;Проверьте версии. Если они не совпадают, то обновите свою систему, обновите индексы apt (через apt-get update или "получить сведения" в Синаптике) или установите то ядро, для которого есть заголовки. | |||
=== Установка === | |||
Общий план действий: | |||
* скачайте дистрибутив в любое удобное место, например в /tmp | |||
* сделайте файл исполняемым | |||
* переключитесь в рута, и выполните файл | |||
** в процессе установки выберите какой-либо каталог, отличный от /usr, например /opt | |||
* запускайте VirtualBox от пользователя и работайте | |||
Вот пример: | |||
<source lang=text> | |||
[alexei@threebears ~]$ cd /tmp | |||
[alexei@threebears tmp]$ wget http://download.virtualbox.org/virtualbox/2.1.0/VirtualBox-2.1.0-41146-Linux_x86.run | |||
.......<skip>......... | |||
100%[======================================>] 41 050 695 1,54M/s в 23s | |||
2008-12-27 16:15:16 (1,71 MB/s) - `VirtualBox-2.1.0-41146-Linux_x86.run?e=1230383984&h=ff5f79c0533f3b71dd384e4c47e696c9' сохранён [41050695/41050695] | |||
[alexei@threebears tmp]$ mv ./VirtualBox-2.1.0-41146-Linux_x86.run\?e\=1230383984\&h\=ff5f79c0533f3b71dd384e4c47e696c9 ./VirtualBox-2.1.0-41146-Linux_x86.run | |||
[alexei@threebears tmp]$ chmod a+x ./VirtualBox-2.1.0-41146-Linux_x86.run | |||
[alexei@threebears tmp]$ ll ./VirtualBox-2.1.0-41146-Linux_x86.run | |||
-rwxr-xr-x 1 alexei user 41050695 Дек 27 16:17 ./VirtualBox-2.1.0-41146-Linux_x86.run | |||
[alexei@threebears tmp]$ su - | |||
Password: | |||
[root@threebears ~]# cd /tmp/ | |||
[root@threebears tmp]# ./VirtualBox-2.1.0-41146-Linux_x86.run | |||
Verifying archive integrity... All good. | |||
Uncompressing VirtualBox for Linux installation......... | |||
VirtualBox Version 2.1.0 (2008-12-17T10:57:49Z) installer | |||
Removing previous installation of VirtualBox 2.1.0 from /opt/VirtualBox-2.1.0 | |||
Installing VirtualBox to /opt/VirtualBox-2.1.0 | |||
Building the VirtualBox kernel module | |||
Building the VirtualBox netflt kernel module | |||
VirtualBox has been installed successfully. | |||
You will find useful information about using VirtualBox in the user manual | |||
/opt/VirtualBox-2.1.0/UserManual.pdf | |||
and in the user FAQ | |||
http://www.virtualbox.org/wiki/User_FAQ | |||
We hope that you enjoy using VirtualBox. | |||
</source> | |||
Всё, программа установлена. Теперь от пользователя можно вызывать команду VirtualBox. | |||
Второй вариант установки — с бывшей страницы Virtualbox, созданной пользователем Becase: | |||
Прекрасно работает VirtualBox_*_Linux_x86.run | |||
;Необходимо обязательно иметь и в хост и в гостевой системе такие пакеты (версии не важны, важно, чтобы они были '''одинаковы''' и для вашего рабочего ядра): | |||
* kernel-headers-common | * kernel-headers-common | ||
* kernel-headers-std-smp | * kernel-headers-std-smp | ||
* kernel-headers-modules-std-smp | * kernel-headers-modules-std-smp | ||
Установка | |||
;Установка аддона — отдельная песня, но весьма несложная. | |||
< | ;Аддон необходимо распаковать рутом, например, так: | ||
<pre> | |||
./VBoxLinuxAdditions.run --noexec --keep --target /root/VBoxInstall | ./VBoxLinuxAdditions.run --noexec --keep --target /root/VBoxInstall | ||
</ | </pre> | ||
В install.sh необходимо добавить в проверку версии xorg. | |||
проверку версии xorg | |||
Найдите строчки | Найдите строчки | ||
< | <pre> | ||
7.1.* | 7.2.* ) | 7.1.* | 7.2.* ) | ||
install -o 0 -g 0 -m 0644 vboxvideo_drv_71.so | install -o 0 -g 0 -m 0644 vboxvideo_drv_71.so | ||
Строка 30: | Строка 296: | ||
install -o 0 -g 0 -m 0644 vboxmouse_drv_71.so | install -o 0 -g 0 -m 0644 vboxmouse_drv_71.so | ||
$modules_dir/input/vboxmouse_drv.so | $modules_dir/input/vboxmouse_drv.so | ||
</ | </pre> | ||
И замените первую на | И замените первую на | ||
< | <pre> | ||
7.1.* | 7.2.* | 7.3.* ) | 7.1.* | 7.2.* | 7.3.* ) | ||
install -o 0 -g 0 -m 0644 vboxvideo_drv_71.so | install -o 0 -g 0 -m 0644 vboxvideo_drv_71.so | ||
Строка 38: | Строка 304: | ||
install -o 0 -g 0 -m 0644 vboxmouse_drv_71.so | install -o 0 -g 0 -m 0644 vboxmouse_drv_71.so | ||
$modules_dir/input/vboxmouse_drv.so | $modules_dir/input/vboxmouse_drv.so | ||
</ | </pre> | ||
А | А ещё, чуть выше, в строку | ||
< | <pre> | ||
for dir in /usr/lib/xorg/modules /usr/X11R6/lib/modules; do | for dir in /usr/lib/xorg/modules /usr/X11R6/lib/modules; do | ||
</ | </pre> | ||
добавьте «наш» каталог для модулей | добавьте «наш» каталог для модулей | ||
< | <pre> | ||
for dir in '''/usr/lib/X11/modules''' /usr/lib/xorg/modules /usr/X11R6/lib/modules; do | for dir in '''/usr/lib/X11/modules''' /usr/lib/xorg/modules /usr/X11R6/lib/modules; do | ||
</ | </pre> | ||
После чего, можно просто запускать install.sh (от рута) и перегружать гостевую ОС… всё работает :) | |||
=== Что делать после обновления ядра, если у вас установлена закрытая версия версия VirtualBox === | |||
Если вы установили VirtualBox, а затем обновили ядро, то при следующем запуске VirtualBox вы получите такое сообщение: | |||
<pre> | |||
[alexei@threebears ~]$ VirtualBox | |||
WARNING: The vboxdrv kernel module is not loaded. Either there is no module | |||
available for the current kernel (2.6.27-std-ll-alt7) or it failed to | |||
load. Please recompile the kernel module and install it by | |||
sudo /etc/init.d/vboxdrv setup | |||
You will not be able to start VMs until this problem is fixed. | |||
</pre> | |||
Это означает, что для нового ядра не собран нужный модуль, и программа подсказывает вам, как поступить: | |||
<pre> | |||
[alexei@threebears ~]$ su - | |||
Password: | |||
[root@threebears ~]# service vboxdrv setup | |||
Stopping VirtualBox kernel module [ DONE ] | |||
Removing old VirtualBox netflt kernel module [ DONE ] | |||
Removing old VirtualBox kernel module [ DONE ] | |||
Recompiling VirtualBox kernel module [ DONE ] | |||
Starting VirtualBox kernel module [ DONE ] | |||
</pre> | |||
== Установка «Дополнений гостевой ОС» для гостевого ALT Linux == | |||
;1. Установите модуль ядра {{pkg|kernel-modules-virtualbox-addition-<тип ядра>}} и вспомогательные пакеты для интеграции: | |||
<source lang="Bash">apt-get install kernel-modules-virtualbox-addition-$(uname -r|cut -f2,3 -d-) virtualbox-guest-additions xorg-drv-vboxvideo</source> | |||
{{Важно|Перед любыми операциями с установкой модуля ядра, надо обновить ядро с помощью команд: <source lang="Bash"> | |||
apt-get update | |||
update-kernel | |||
</source> | |||
И ни в коем случае не устанавливать модуль от другой ядерной сборки подробнее смотри: [[Обновление_ядра]]}} | |||
<!--- | |||
{{Note|Если модуль ядра из репозитория слишком новый и потянул новое ядро, рекомендуется обновить ядро целиком со всеми модулями командой <source lang="Bash">update-kernel</source>}} | |||
---> | |||
;2. Выберите в Центре управления системой {{==)}} Дисплей драйвер {{cmd|vboxvideo}}. | |||
{{Note|Драйвер можно выбрать и в командной строке (под правами root): <source lang="Bash">alterator-cmdline /x11 action write _objects driver driver vboxvideo</source>}} | |||
{{Note|Если пункта «Дисплей» нет в Центре управления системой, установите пакет {{pkg|alterator-x11}}}} | |||
;3. Перезагрузите гостевую систему или только сеанс | |||
;4. Включите в меню виртуальной машины: | |||
* Устройства {{==)}} Общий буфер обмена {{==)}} Двунаправленный | |||
* Устройства {{==)}} Drag'n'Drop {{==)}} Двунаправленный. | |||
=== Общие папки === | |||
;1. Установите в гостевой операционной системе дополнения гостевой операционной системы и {{pkg|virtualbox-guest-utils}}: | |||
<pre> | |||
apt-get install kernel-modules-virtualbox-addition-$(uname -r | cut -d "-" -f2,3) virtualbox-guest-utils | |||
</pre> | |||
Этот пункт не нужен, если уже установлен пакет {{pkg|virtualbox-guest-additions}}, как описано выше. | |||
;2. Добавьте в свойствах виртуальной машины (раздел «Общие папки») папку. Для этого выберите путь и укажите имя папки (по умолчанию используется имя последней папки в указанном пути). Если хотите чтобы папка осталась настроенной и после перезагрузки гостевой операционной системы, установите флажок «Создать постоянную папку». | |||
;3. Для монтирования общих папок VirtualBox должен быть загружен модуль '''vboxsf''': | |||
<source lang="Bash">modprobe vboxsf</source> | |||
;4. В гостевой операционной системе выполните | |||
<source lang="Bash">mount -t vboxsf <имя папки> /mnt</source> | |||
{{Attention|Использование параметра -t в команде {{cmd|mount}} разрешено только [[Su|пользователю root]].}} | |||
Если необходимо обеспечить доступ на чтение/запись от имени обычного пользователя, то добавьте в команду монтирования опции uid и gid. | |||
Например, если у пользователя user uid=500 и gid=500, то команда будет выглядеть так: | |||
<source lang="Bash">mount -t vboxsf -o uid=500,gid=500 <имя папки> /mnt</source> | |||
;5. Общая папка становится доступна в /mnt. | |||
=== Краткая инструкция для установки дополнений вручную === | |||
{{Attention|идеологически неправильное решение!!!'''<ref>Идеологически правильно дождаться, пока мейнтейнер соберёт новую версию драйверов в дистрибутив.</ref>}} | |||
* Запускаем гостевой Линукс, и удаляем пакеты: | |||
xorg-drv-vboxvideo | |||
* Ставим пакет '''kernel-headers-modules''' для ''своего'' ядра. | |||
* В окне VirtualBox, в меню "Устройства", выбираем "Установить дополнения гостевой ОС". | |||
* В гостевом Линуксе заходим на CD-ROM, находим там файл '''VBoxLinuxAdditions-x86.run''' (-amd64.run для соответствующей архитектуры), копируем его в /tmp. | |||
* В гостевом Линуксе открываем терминал, переходим в нём в рута (командой su -) и выполняем команду: | |||
chmod a+x /tmp/VBoxLinuxAdditions-x86.run | |||
/tmp/VBoxLinuxAdditions-x86.run | |||
* Далее исполняется скрипт, который сам все распакует, скомпилирует и установит. | |||
* Убеждаемся, что в гостевом Линуксе '''xorg.conf''' прописаны драйвер '''vboxvideo''' для видео. | |||
* Перезагружаем виртуальную машину. | |||
* Наслаждаемся автоизменением размеров окна, и "незалипающей" мышкой. | |||
== Примечания == | |||
<references /> |
Текущая версия от 16:37, 21 декабря 2023
VirtualBox — программный продукт виртуализации для операционных систем Microsoft Windows, DOS, GNU/Linux, Mac OS X и SUN Solaris/OpenSolaris. Программа была создана компанией Innotek с использованием исходного кода Qemu. Первая публично доступная версия VirtualBox появилась 15 января 2007 года. Существует две версии — свободная (OSE, англ. Open Source Edition), выпущенная под GNU GPL, и проприетарная (PUEL), различающиеся по функциональности; полнофункциональная проприетарная версия для личного использования распространяется бесплатно. В феврале 2008 Innotek был приобретён компанией Sun Microsystems, модель распространения VirtualBox при этом не изменилась.
Пакеты свободной версии VirtualBox есть в составе дистрибутивов ALT Linux, начиная с Desktop 4.1. При установке системы можно выбрать группу "Виртуализация" для установки Virtualbox по умолчанию.
Установка свободной версии VirtualBox из пакетов
- Чтобы воспользоваться Virtualbox, необходимо установить следующий набор пакетов
(при помощи apt-get install без указания "-версия программы", только по названию пакета)
- virtualbox-версия программы
- virtualbox-common-версия программы
- virtualbox-doc-версия программы
- kernel-modules-virtualbox-std-def-версия-программы-"номер_сборки_ядра" (нужен для хостовой ОС)
- kernel-modules-virtualbox-addition-std-def-версия-программы-"номер_сборки_ядра" (не нужен для хостовой ОС)
- virtualbox-guest-additions-версия программы (не нужен для хостовой ОС)
- Пример
Пусть у вас стоит:
- virtualbox-4.3.22-alt0.M70P.1
и ядро
- kernel-image-std-def-3.14.35-alt1
- Cмотрим модули virtualbox
- kernel-modules-virtualbox-addition-std-def-4.3.22-alt1.200227.1 (можно удалить - вы не внутри Virtualbox)
- kernel-modules-virtualbox-std-def-4.3.22-alt1.200227.1 (актуальное ядро, от актуальной версии VirtualBox)
- kernel-modules-virtualbox-std-def-4.3.22-alt1.200225.1 (для старой версии ядра)
- kernel-modules-virtualbox-std-def-4.3.14-alt1.200225.1 (от старого Virtualbox и старого ядра)
- virtualbox-common-4.3.22-alt0.M70P.1 - Ок
- virtualbox-doc-4.3.22-alt0.M70P.1 - Ок
- virtualbox-guest-additions-4.3.22-alt0.M70P.1 - (не нужный пакет, если вы не внутри VirtualBox)/
При этом, они должны быть одной версии (4.3.22-alt0.M70P.1 в данном случае) а модули ядра, от текущего ядра. Кроме того, модуль ядра должен соответствовать сборочной ветки ядра (std-def в данном случае). Чтобы это обеспечить, ядро и пакеты необходимо устанавливать из одного и того же репозитория.
Если VirtualBox был недавно обновлён в репозитарии, а ядро Вы давно не обновляли, вероятно, что VB не будет работать с Вашим старым ядром. Вам придётся обновить ядро и/или модули. Это всё можно сделать утилитой update-kernel.
update-kernel
- Узнать версию загруженного ядра можно так
$ uname -r
3.14.35-std-def-alt1
- Если у вас в виртуальной машине (гостевая система) тоже ALT Linux, то можно установить в ней "дополнения гостевой системы"
kernel-modules-virtualbox-addition-std-def-версия программы-"номер_сборки_ядра" virtualbox-guest-additions-версия программы-"номер_сборки_ядра"
Virtualbox использует для работы устройство:
$ ls -l /dev/vboxdrv crw-rw---- 1 root vboxusers 10, 58 Май 5 08:46 /dev/vboxdrv
Если такого файла нет -- следует проверить наличие соответствующего загруженному ядру (тип и версия) пакета kernel-modules-virtualbox-* и
chkconfig virtualbox on service virtualbox start
- Проверяем список установленных пакетов
$ rpm -qa | grep virtual-*
kernel-modules-virtualbox-addition-std-def-4.3.22-alt1.200227.1
virtualbox-doc-4.3.22-alt0.M70P.1
kernel-modules-virtualbox-4.3.22-alt1.200227.1 (не нужен в гостевой машине, можно удалить)
virtualbox-4.3.22-alt0.M70P.1 - (можно смело удалять, если вы не хотитке устраивать "матрёшки").
virtualbox-guest-additions-4.3.22-alt0.M70P.1
virtualbox-common-4.3.22-alt0.M70P.1
- Включаем своего пользователя в группу vboxusers или vboxadd (для коммерческой сборки)
gpasswd -a user vboxusers
или
gpasswd -a user vboxadd
- Для работы с usb устройствами необходимо настроить fstab
1. В конец /etc/fstab добавляем
none /proc/bus/usb/ usbfs devgid=500,devmode=666 0 0 где devgid=идентификатор пользователя
2. Перезагружаем систему
- Для работы usb в режиме usb2 и usb3 надо скачать с сайта Страница загрузки VirtualBox и установить "Oracle VM VirtualBox Extension Pack", версия которого должна соответствовать версии Virtualbox. Также его можно скачать и установить, воспользовавшись пунктом меню "Файл->Проверить обновления..."
- После чего, можно запускать Virtualbox, например, в KDE из меню
- K- Система — Виртуализатор Virtualbox.
Настройка сети в гостевой системе Virtualbox
- Чтобы гостевая система получила доступ к подсети, в которой находится хост-система, можно поступить следующим образом
Настроить в хост-системе туннель и бридж, как описано в пунктах 3.7 и
3.6 статьи Etcnet — соответственно, сначала необходимо запустить интерфейс туннеля tap0 а затем объединить его в мост с интерфейсом вашей физической сетевой карты (например, eth0).
После того, как вы убедитесь, что сеть на хост-системе после этой настройки работает как и раньше, вы можете использовать туннель в Virtualbox:
зайдите в свойства виртуальной машины, раздел "сеть" и выберите "Подсоединён к" — "Хост-интерфейс", а ниже, в поле "Хост-интерфейсы" выберите tap0.
После этого, при загрузке, гостевая система получит доступ к той же подсети, что и хост-система, и будет выступать равноправным компьютером в сети со своим IP адресом. IP адрес и другие настройки интерфейсу следует назначать средствами гостевой системы.
Настройка загрузки Linux в гостевых машинах в режиме UEFI
Основная статья UEFI
Следует отметить, что NVRAM на виртуальном железе VirtualBox не переживает выключение экземпляра (это известная проблема). Т.е. установщик/efibootmgr не может добавить ссылку на grub, а если добавить её руками, она исчезнет при следующем запуске экземпляра.
Решение:
1-ый вариант выполнить в ещё загруженной системе
echo "fs0:\EFI\altlinux\grubx64.efi" > /boot/efi/startup.nsh
Или то же самое сделать потом, из EFI Shell:
echo "fs0:\EFI\altlinux\grubx64.efi" > fs0:\startup.nsh
2-ой вариант (подсмотрено в | VirtualBox (Русский) на wiki.archlinux.org
после установки системы:
- Если существует файл /boot/efi/boot/BOOTX64.EFI дать ему другое имя
- Скопировать /EFI/altlinux/grubx64.efi в /boot/efi/boot/BOOTX64.EFI
Решение проблем
- При запуске дистрибутивов на Седьмой платформе как гостевых ОС в VirtualBox после загрузки ядра показывается чёрный экран, в журнале пишется
Guest Log: BIOS: KBD: unsupported int 16h function 03
- Для современных ядер, на которых основаны дистрибутивы Седьмой платформы, нужно указывать в настройках виртуальной машины Система ⇒ Материнская плата ⇒ Чипсет: ICH9 (заодно там же включите IO APIC). По умолчанию в альтовом VirtualBox стоит PIIX3, что и является причиной указанного поведения.
- При запуске гостевой ОС на Седьмой платформе VirtualBox показывает сообщение о не достаточных правах доступа для /dev/vboxdrv и просит запустить "/etc/init.d/vboxdrv setup" которого нет
- Необходимо выполнить:
chkconfig virtualbox on service virtualbox start
- В гостевой ОС после выбора подсказки Установка или LiveCD чёрный экран и ничего не происходит.
- Выберите PIIX3, и при запуске установки (или загрузки с LiveCD) выберите клавишеей F5 загрузка "Без локального APIC"
- В гостевой системе не работает звук
- Откройте регулятор громкости PulseAudio (pavucontrol) и на вкладке «Проигрывание» включите звук для виртуальной машины.
- Плохо работает микрофон в гостевой системе (заикается)
- Всё дело в PulseAudio. Для того, чтобы микрофон работал без заиканий, для виртуальной машины выставьте ALSA: Аудио ⇒ Аудиодрайвер: ALSA и выключите на время работы PulseAudio: в терминале
pulseaudio -k
- Если служба virtualbox запускается, но модули не загружаются, отключите автозапуск службы virtualbox и создайте файл /etc/modules-load.d/virtualbox.conf такого содержания
vboxdrv vboxpci vboxnetflt vboxnetadp
- Происходит зависание гостевой ОС на словах Local IPI:
- Это altbug #29344, исправлено в virtualbox-4.2.16-alt2 (но вовсе не факт, что в других дистрибутивах порядок).
Установка Oracle Extension Pack
- Установленная версия VirtualBox OSE позволяет использовать только USB 1.0, однако иногда необходимо использовать USB 2.0. Для корректной работы USB 2.0 в VirtualBox (на момент написания актуальной версией в репозитарии Sisyphus является VirtualBox 4.0.12) требуется Oracle VM VirtualBox Extension Pack. Его можно скачать с сайта Oracle [1]. Установку дополнения можно запустить из графического интерфейса или из командной строки
# VirtualBox extpack install /path/to/Oracle_VM_VirtualBox_Extension_Pack-...vbox-extpack
Для установки дополнения необходимо запустить VirtualBox с правами администратора, иначе установка не удастся с ошибкой:
The installer failed with exit code 127: Error creating textual authentication agent: Error opening current controlling terminal for the process (`/dev/tty'): No such device or address.
Если в системе установлена программа gksu или kdesudo, то VirtualBox попытается с их помощью поднять уровень привилегий для выполнения установки
На данный момент Oracle VM VirtualBox Extension Pack является единственным дополнением. Оно обеспечивает следующую функциональность:
- USB 2.0 EHCI
- VirtualBox Remote Desktop Protocol, VRDP
- Intel PXE boot ROM с поддержкой контроллера E1000
- экспериментальная поддержка «проброса» PCI с хост-системы
Установка проприетарной сборки VirtualBox
Также можно использовать закрытую бинарную сборку с сайта разработчиков программы.
Что потребуется для установки?
- Во-первых, очевидно, потребуется файл с инсталлятором VirtualBox с официального сайта. На данный момент страница со ссылками на нужный файл находится по адресу: www.virtualbox.org/wiki/Linux_Downloads. Дистрибутивы All distributions i386 или All distributions AMD64 для 32-х или 64-х битной системы, соответственно.
- Во-вторых, вам потребуется компилятор. Например, на момент написания этой статьи, нужен пакет gcc4.1, а также программа make. Кроме того, вам потребуется пакет kernel-headers-modules для вашего ядра.
Об установке заголовков для сборки модулей ядра
- Для сборки модулей ядра, которые нужны для VirtualBox (или VM Ware), в системе должен быть установлен пакет kernel-headers-modules той же версии, что и используемое ядро.
Посмотрите, какая версия ядра установлена у вас в системе. Например:
[alexei@threebears ~]$ uname -r
2.6.27-std-ll-alt7
Как видно, в системе установлено ядро 2.6.27-std-ll-alt7. То есть, для сборки модулей под него нужно установить пакет kernle-headers-modules-std-ll версии 2.6.27-alt7.
- Проверить, установлен ли у вас такой пакет, можно так
[alexei@threebears ~]$ rpm -qa | grep headers-modules
kernel-headers-modules-std-ll-2.6.27-alt7
kernel-headers-modules-std-def-2.6.27-alt7
Как видно, в данной системе он установлен.
- Если в вашей системе этого пакета нет, установите его командой
apt-get install kernel-headers-modules-std-ll
К вопросу о несогласованности версий
- Если вы ставите пакеты с диска с дистрибутивом, то версии ядер и заголовков совпадают (если только в дистрибутив не вкралась досадная ошибка). Однако, если вы делали точечные обновления системы, или обновляетесь с нестабильных репозиториев, то версии ядра и заголовков могут не совпадать.
- Проверьте версии. Если они не совпадают, то обновите свою систему, обновите индексы apt (через apt-get update или "получить сведения" в Синаптике) или установите то ядро, для которого есть заголовки.
Установка
Общий план действий:
- скачайте дистрибутив в любое удобное место, например в /tmp
- сделайте файл исполняемым
- переключитесь в рута, и выполните файл
- в процессе установки выберите какой-либо каталог, отличный от /usr, например /opt
- запускайте VirtualBox от пользователя и работайте
Вот пример:
[alexei@threebears ~]$ cd /tmp
[alexei@threebears tmp]$ wget http://download.virtualbox.org/virtualbox/2.1.0/VirtualBox-2.1.0-41146-Linux_x86.run
.......<skip>.........
100%[======================================>] 41 050 695 1,54M/s в 23s
2008-12-27 16:15:16 (1,71 MB/s) - `VirtualBox-2.1.0-41146-Linux_x86.run?e=1230383984&h=ff5f79c0533f3b71dd384e4c47e696c9' сохранён [41050695/41050695]
[alexei@threebears tmp]$ mv ./VirtualBox-2.1.0-41146-Linux_x86.run\?e\=1230383984\&h\=ff5f79c0533f3b71dd384e4c47e696c9 ./VirtualBox-2.1.0-41146-Linux_x86.run
[alexei@threebears tmp]$ chmod a+x ./VirtualBox-2.1.0-41146-Linux_x86.run
[alexei@threebears tmp]$ ll ./VirtualBox-2.1.0-41146-Linux_x86.run
-rwxr-xr-x 1 alexei user 41050695 Дек 27 16:17 ./VirtualBox-2.1.0-41146-Linux_x86.run
[alexei@threebears tmp]$ su -
Password:
[root@threebears ~]# cd /tmp/
[root@threebears tmp]# ./VirtualBox-2.1.0-41146-Linux_x86.run
Verifying archive integrity... All good.
Uncompressing VirtualBox for Linux installation.........
VirtualBox Version 2.1.0 (2008-12-17T10:57:49Z) installer
Removing previous installation of VirtualBox 2.1.0 from /opt/VirtualBox-2.1.0
Installing VirtualBox to /opt/VirtualBox-2.1.0
Building the VirtualBox kernel module
Building the VirtualBox netflt kernel module
VirtualBox has been installed successfully.
You will find useful information about using VirtualBox in the user manual
/opt/VirtualBox-2.1.0/UserManual.pdf
and in the user FAQ
http://www.virtualbox.org/wiki/User_FAQ
We hope that you enjoy using VirtualBox.
Всё, программа установлена. Теперь от пользователя можно вызывать команду VirtualBox.
Второй вариант установки — с бывшей страницы Virtualbox, созданной пользователем Becase:
Прекрасно работает VirtualBox_*_Linux_x86.run
- Необходимо обязательно иметь и в хост и в гостевой системе такие пакеты (версии не важны, важно, чтобы они были одинаковы и для вашего рабочего ядра)
- kernel-headers-common
- kernel-headers-std-smp
- kernel-headers-modules-std-smp
- Установка аддона — отдельная песня, но весьма несложная.
- Аддон необходимо распаковать рутом, например, так
./VBoxLinuxAdditions.run --noexec --keep --target /root/VBoxInstall
В install.sh необходимо добавить в проверку версии xorg. Найдите строчки
7.1.* | 7.2.* ) install -o 0 -g 0 -m 0644 vboxvideo_drv_71.so $modules_dir/drivers/vboxvideo_drv.so install -o 0 -g 0 -m 0644 vboxmouse_drv_71.so $modules_dir/input/vboxmouse_drv.so
И замените первую на
7.1.* | 7.2.* | 7.3.* ) install -o 0 -g 0 -m 0644 vboxvideo_drv_71.so $modules_dir/drivers/vboxvideo_drv.so install -o 0 -g 0 -m 0644 vboxmouse_drv_71.so $modules_dir/input/vboxmouse_drv.so
А ещё, чуть выше, в строку
for dir in /usr/lib/xorg/modules /usr/X11R6/lib/modules; do
добавьте «наш» каталог для модулей
for dir in '''/usr/lib/X11/modules''' /usr/lib/xorg/modules /usr/X11R6/lib/modules; do
После чего, можно просто запускать install.sh (от рута) и перегружать гостевую ОС… всё работает :)
Что делать после обновления ядра, если у вас установлена закрытая версия версия VirtualBox
Если вы установили VirtualBox, а затем обновили ядро, то при следующем запуске VirtualBox вы получите такое сообщение:
[alexei@threebears ~]$ VirtualBox WARNING: The vboxdrv kernel module is not loaded. Either there is no module available for the current kernel (2.6.27-std-ll-alt7) or it failed to load. Please recompile the kernel module and install it by sudo /etc/init.d/vboxdrv setup You will not be able to start VMs until this problem is fixed.
Это означает, что для нового ядра не собран нужный модуль, и программа подсказывает вам, как поступить:
[alexei@threebears ~]$ su - Password: [root@threebears ~]# service vboxdrv setup Stopping VirtualBox kernel module [ DONE ] Removing old VirtualBox netflt kernel module [ DONE ] Removing old VirtualBox kernel module [ DONE ] Recompiling VirtualBox kernel module [ DONE ] Starting VirtualBox kernel module [ DONE ]
Установка «Дополнений гостевой ОС» для гостевого ALT Linux
- 1. Установите модуль ядра kernel-modules-virtualbox-addition-<тип ядра> и вспомогательные пакеты для интеграции
apt-get install kernel-modules-virtualbox-addition-$(uname -r|cut -f2,3 -d-) virtualbox-guest-additions xorg-drv-vboxvideo
apt-get update
update-kernel
- 2. Выберите в Центре управления системой ⇒ Дисплей драйвер vboxvideo.
alterator-cmdline /x11 action write _objects driver driver vboxvideo
- 3. Перезагрузите гостевую систему или только сеанс
- 4. Включите в меню виртуальной машины
- Устройства ⇒ Общий буфер обмена ⇒ Двунаправленный
- Устройства ⇒ Drag'n'Drop ⇒ Двунаправленный.
Общие папки
- 1. Установите в гостевой операционной системе дополнения гостевой операционной системы и virtualbox-guest-utils
apt-get install kernel-modules-virtualbox-addition-$(uname -r | cut -d "-" -f2,3) virtualbox-guest-utils
Этот пункт не нужен, если уже установлен пакет virtualbox-guest-additions, как описано выше.
- 2. Добавьте в свойствах виртуальной машины (раздел «Общие папки») папку. Для этого выберите путь и укажите имя папки (по умолчанию используется имя последней папки в указанном пути). Если хотите чтобы папка осталась настроенной и после перезагрузки гостевой операционной системы, установите флажок «Создать постоянную папку».
- 3. Для монтирования общих папок VirtualBox должен быть загружен модуль vboxsf
modprobe vboxsf
- 4. В гостевой операционной системе выполните
mount -t vboxsf <имя папки> /mnt
Если необходимо обеспечить доступ на чтение/запись от имени обычного пользователя, то добавьте в команду монтирования опции uid и gid.
Например, если у пользователя user uid=500 и gid=500, то команда будет выглядеть так:
mount -t vboxsf -o uid=500,gid=500 <имя папки> /mnt
- 5. Общая папка становится доступна в /mnt.
Краткая инструкция для установки дополнений вручную
- Запускаем гостевой Линукс, и удаляем пакеты:
xorg-drv-vboxvideo
- Ставим пакет kernel-headers-modules для своего ядра.
- В окне VirtualBox, в меню "Устройства", выбираем "Установить дополнения гостевой ОС".
- В гостевом Линуксе заходим на CD-ROM, находим там файл VBoxLinuxAdditions-x86.run (-amd64.run для соответствующей архитектуры), копируем его в /tmp.
- В гостевом Линуксе открываем терминал, переходим в нём в рута (командой su -) и выполняем команду:
chmod a+x /tmp/VBoxLinuxAdditions-x86.run /tmp/VBoxLinuxAdditions-x86.run
- Далее исполняется скрипт, который сам все распакует, скомпилирует и установит.
- Убеждаемся, что в гостевом Линуксе xorg.conf прописаны драйвер vboxvideo для видео.
- Перезагружаем виртуальную машину.
- Наслаждаемся автоизменением размеров окна, и "незалипающей" мышкой.
Примечания
- ↑ Идеологически правильно дождаться, пока мейнтейнер соберёт новую версию драйверов в дистрибутив.