VirtualBox (устарело)

Материал из ALT Linux Wiki
Логотип Википедии
В Википедии есть обзорная статья по теме «VirtualBox».

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, необходимо установить следующий набор пакетов:

virtualbox-2.1.4-alt5
virtualbox-common-2.1.4-alt5
kernel-modules-virtualbox-std-def-2.1.4-alt1.132635

При этом, они должны быть строго одной версии (2.1.4 в данном случае) и модуль ядра должен быть строго версии для вашего ядра (std-def в данном случае). Чтобы это обеспечить, ядро и пакеты необходимо устанавливать из одного и того же репозитория. Узнать версию загруженного ядра можно так:

$uname -r
2.6.27-std-def-alt15

Если у вас в виртуальной машине (гостевая система) тоже ALTLinux, то можно установить в ней "дополнения гостевой системы":

kernel-modules-virtualbox-addition-std-def-2.1.4-alt1.132635.15
virtualbox-guest-additions-2.1.4-alt5

Virtualbox использует для работы устройство

$ ls -l /dev/vboxdrv
crw-rw---- 1 root vboxusers 10, 58 Май  5 08:46 /dev/vboxdrv

поэтому необходимо включить своего пользователя в группу vboxusers

gpasswd -a user vboxusers

и перелогиниться. После чего, можно запускать Virtualbox, например, в KDE из меню: K- Система — Виртуализатор Virtualbox.

Настройка сети в гостевой системе Virtualbox

Чтобы гостевая система получила доступ к подсети, в которой находится хост-система, можно сделать так:

Настроить в хост-системе туннель и бридж, как описано в пунктах 3.7 и 3.6 статьи Etcnet.

Соответственно, сначала необходимо запустить интерфейс туннеля tap0, а затем объединить его в мост с интерфейсом вашей физической сетевой карты (например, eth0). После того как вы убедитесь, что сеть на хост-системе после этой настройки работает как и раньше, вы можете использовать туннель в Virtualbox: Зайдите в свойства виртуальной машины, раздел "сеть", и выберите "Подсоединён к" — "Хост-интерфейс", а ниже в поле "Хост-интерфейсы" — выберите tap0. После этого, при загрузке, гостевая система получит доступ к той же подсети, что и хост-система, и будет выступать равноправным компьютером в сети со своим IP адресом. IP адрес и другие настройки интерфейсу следует назначать средствами гостевой системы.

Установка проприетарной сборки VirtualBox

Свободная версия VirtualBox не позволяет использовать USB в гостевой системе, что иногда критически важно. В этом случае придётся использовать закрытую бинарную сборку с сайта разработчиков программы.

Что потребуется для установки?

Во-первых, очевидно, потребуется файл с инсталлятором 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 вы получите такое сообщение:

[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

Почему бы не поставить то, что есть в дистрибутиве

На момент написания этой статьи в дистрибутиве есть драйверы для Xorg (vboxmouse и vboxvideo), но от очень старой версии VB, они не работают с новыми версиями Xorg.

Краткая инструкция

ВНИМАНИЕ: идеологически неправильное решение!!![1]

  • Запускаем гостевой Линукс, и удаляем пакеты:
xorg-x11-drv-vboxvideo
xorg-x11-drv-vboxmouse
  • Ставим пакет 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 для видео и vboxmouse для мышки.
  • Перезагружаем виртуальную машину.
  • Наслаждаемся автоизменением размеров окна, и "незалипающей" мышкой.

Примечания

  1. Идеологически правильно дождаться, пока мэйнтейнер соберёт новую версию драйверов в дистрибутив.