Contents
- Установка
- Запуск
-
Диагностика
- The character device /dev/vboxdrv does not exist (устройство /dev/vboxdrv не существует)
- You are not a member of the "vboxusers" group (Вы не являетесь членом группы "vboxusers")
- /dev/vboxdrv not writable for some reason
- 32 битное окружение в ядре amd64
- -1909 VERR VM DRIVER NOT ACCESSIBLE
- VERR_SUPDRV_INTERFACE_NOT_SUPPORTED (bridged network)
- Could not find VirtualBox installation
- Подсказки и советы
- См. также
- Ссылки
Установка
Имеется пакет VirtualBox OSE 1.6.6 для Debian Lenny. Он также доступен в backports для Debian Etch. В репозитории testing лежит пакет VirtualBox OSE 3.1.4
Lenny
- Установите пакет virtualbox-ose и соответствующие Вашей системе модули ядра:
# aptitude install virtualbox-ose virtualbox-ose-modules-$(uname -r)
2.Следуя руководству по udev перезагрузите установленные правила. (Обратите внимание на баг 509014):
# invoke-rc.d udev reload
Загрузите модуль ядра для VirtualBox:
# modprobe vboxdrv
Добавьте свою учётную запись пользователя у группу vboxusers:
# adduser yourusername vboxusers
- Вам нужно заново зайти под учётной записью, чтобы изменения вступили в силу. L
VirtualBox OSE может быть запущен started.
Для загрузки модуля vboxdrv при запуске системы необходимо отредактировать файл /etc/default/virtualbox-ose и установить LOAD_VBOXDRV_MODULE to 1.
Lenny Backports
Поскольку VirtualBox OSE версии 1.6.6 является устаревшим, Вы можете использовать новую версию из lenny-backports для получения новой функциональности и ,возможно, исправлении существующих ошибок в старой версии.
Пропишите нужные репозитории в файл /etc/apt/sources.list. Например:
# Backported packages for Debian Lenny deb http://www.backports.org/debian lenny-backports main
- Обновите список доступных пакетов и установите пакет debian-backports-keyring :
# aptitude update # aptitude -t lenny-backports install debian-backports-keyring
Если в Вашей системе ещё не установлен ключ для репозитория backports.org, система спросит Вас о продолжении установки из недоверяемого источника. Введите Yes в приглашении.
- Установите нужные заголовки ядра для системы. Пример:
# aptitude update # aptitude install linux-headers-2.6-$(uname -r | sed 's,.*-,,')
- Установите пакет lenny-backports/virtualbox-ose.
# aptitude -t lenny-backports install virtualbox-ose
- Эта команда также установит все необходимые сопутствующие пакеты, а DKMS соберёт модули ядра для Вашей системы.
VirtualBox OSE может быть запущен.
Чтобы модули VirtualBox OSE не грузились при запуске системы, надо отредактировать файл /etc/default/virtualbox-ose и установить значение переменной LOAD_VBOXDRV_MODULE в 0.
Etch
Добавьте Debian Backports репозиторий в файл /etc/apt/sources.list. Пример:
# Backported packages for Debian Etch deb http://www.backports.org/debian etch-backports main
- Обновите список доступных пакетов и установите пакет etch-backports/debian-backports-keyring:
# aptitude update # aptitude -t etch-backports install debian-backports-keyring
Система может спросить Вас о продолжении установки из неподписанного источника. Введите в приглашении Yes.
- Установите пакеты module-assistant,etch-backports/virtualbox-ose и etch-backports/virtualbox-ose-source.
# aptitude update # aptitude -t etch-backports install module-assistant virtualbox-ose virtualbox-ose-source
Соберите и установите пакет virtualbox-ose-modules-* для Вашей системы используя Module-Assistant:
# m-a a-i virtualbox-ose-source
Загрузите модуль VirtualBox:
# modprobe vboxdrv
Добавьте своего пользователя в группу vboxusers:
# adduser yourusername vboxusers
- Перелогиньтесь для вступления изменений в силу.
VirtualBox OSE может быть запущен.
Для автоматической загрузки модуля vboxdrv при запуске системы, отредактируйте файл /etc/default/virtualbox-ose и установите переменную LOAD_VBOXDRV_MODULE в 1.
Squeeze
Обновите список доступных пакетов. Установите пакеты linux-headers, virtualbox-ose, virtualbox-ose-dkms и virtualbox-ose-qt:
# aptitude update # aptitude install linux-headers-2.6-$(uname -r | sed 's,.*-,,') virtualbox-ose virtualbox-ose-dkms virtualbox-ose-qt
DKMS соберёт модули VirtualBox для Вашего ядра.
VirtualBox OSE может быть запущен.
Для предотвращения загрузки модулей VirtualBox при старте системы, отредактируйте файл /etc/default/virtualbox-ose и установите значение переменной LOAD_VBOXDRV_MODULE в ноль.
Запуск
Десктоп
В KDE: KDE menu > System > VirtualBox OSE
В GNOME: GNOME menu > Applications > System tools > VirtualBox OSE
Запуск из терминала:
$ virtualbox или $ VirtualBox
Сервер
Вы можете запустить VirtualBox в режиме Headless следующим образом:
$ VBoxHeadless -startvm "VMName"
Это следует запускать внутри существующего экрана, а затем отсоединять его после старта виртуальной машины с помощью Ctrl+a d.
Диагностика
The character device /dev/vboxdrv does not exist (устройство /dev/vboxdrv не существует)
При запуске VirtualBox OSE появляет следующее сообщение:
WARNING: The character device /dev/vboxdrv does not exist. Please install the virtualbox-ose-modules package for your kernel and load the module named vboxdrv into your system. You will not be able to start VMs until this problem is fixed.
Загрузите модуль VirtualBox OSE (в Debian Squeeze также надо загрузить vboxnetflt ).
$ su # modprobe vboxdrv
Если модуль не найден, обратитесь к разделу Установки для установки virtualbox-ose-modules-*. Для загрузки необходимых модулей при загрузке системы, отредактируйте файл /etc/default/virtualbox-ose и установите LOAD_VBOXDRV_MODULE в единицу.
You are not a member of the "vboxusers" group (Вы не являетесь членом группы "vboxusers")
При старте VirtualBox OSE появляется сообщение:
WARNING: You are not a member of the "vboxusers" group. Please add yourself to this group before starting VirtualBox. You will not be able to start VMs until this problem is fixed.
Для устранения данной проблемы необходимо добавить Вашего пользователя в группу "vboxusers", используя adduser(8), как описано в Установке:
$ su # adduser yourusername vboxusers
Перелогиньтесь, чтобы изменения вступили в силу.
/dev/vboxdrv not writable for some reason
Сообщение выдаваемое VirtualBox OSE:
WARNING: /dev/vboxdrv not writable for some reason. If you recently added the current user to the vboxusers group then you have to logout and re-login to take the change effect. You will not be able to start VMs until this problem is fixed.
Файл /dev/vboxdrv имеет следующие настройки:
$ ls -l /dev/vboxdrv crw-rw---- 1 root root 10, 58 2009-06-22 16:33 /dev/vboxdrv
Это известная проблема в версии для Lenny.(Debian bug 509014). Для её решения, следуя инструкциям udevd(8), загрузите правило, находящееся в /etc/udev/rules.d/z60_virtualbox-ose.rules и перезагрузите VirtualBox OSE модуль:
$ su # invoke-rc.d udev reload # modprobe -r vboxdrv ; modprobe vboxdrv # exit
Теперь группа-владелец файла /dev/vboxdrv станет vboxusers: .
$ ls -l /dev/vboxdrv crw-rw---- 1 root vboxusers 10, 58 2009-06-22 16:43 /dev/vboxdrv
32 битное окружение в ядре amd64
VirtualBox не работает. Это известный баг - 456391.
-1909 VERR VM DRIVER NOT ACCESSIBLE
Смотри проблему You are not a member of the "vboxusers" group.
VERR_SUPDRV_INTERFACE_NOT_SUPPORTED (bridged network)
С VirtualBox OSE 2.2.0 мост-интерфейс может не работать
Message error: Failed to open/create the internal network 'HostInterfaceNetworking-br-x' (VERR_SUPDRV_INTERFACE_NOT_SUPPORTED). Unknown error creating VM (VERR_SUPDRV_INTERFACE_NOT_SUPPORTED).
Убедитесь, что установленный пакет virtualbox-ose-modules-* соответствует версии, доступной в репозитории testing. В случае не соответствия, соберите и установите пакет virtualbox-ose-modules-*, используя Module-Assistant.
Could not find VirtualBox installation
Нижеприведённое сообщение отображется в консоли при попытке запуска VirtualBox:
Could not find VirtualBox installation. Please reinstall.
Решение: создайте файл } со следующим содержимым:
# VirtualBox installation directory INSTALL_DIR="/usr/lib/virtualbox"
Подсказки и советы
Переключение консолей
Обычный способ переключения консолей в Linux выполняется комбинацией клавиш Ctrl-Alt-Fx комбинации клавиш. Это не работает в VirtualBox, он будет переключать консоли для хост-системе.
You should use <Host Key>-Fx instead, where <Host Key> is the key defined in File->Preferences->Input.
This also works for ctrl-alt-del and ctrl-alt-backspace
This is documented in the VirtualBox user manual in the section "Keyboard and mouse support in virtual machines", subsection "Typing special characters".
(An alternative method to switch between text consoles is to use alt-left and alt-right, but that does not work for graphical consoles like XOrg or DirectFB.)
Настройка интернет моста (VirtualBox < 2.1.0)
По умолчанию VirtualBox использует NAT для сетевых интерфейсов виртуальных машин и использовать внутренний сервер DHCP для получения IP адреса. Это хорошо работает, но недостаток в том, что машина не будет иметь видна снаружи В.М. IP адрес и поэтому вы не можете подключиться к нему из системы хоста или из других систем.
By attaching the VM's interface to "Host Interface" and creating a bridge on the host system, the VM can be made visible on the local network. This also allows to do fun stuff like netbooting the VM (boot from LAN using PXE). It is comparable to the "bridged networking" option in VMWare.
NB To use a wireless host device you need one that has support for Master mode (eg. it can be used as an access point, afaik only the Atheros and Prism drivers has this support)
Preparation
First install the bridge-utils package.
Next, change the network configuration of the host system so that the network interface becomes part of a bridge. Note that this requires restarting the network, so be careful when doing this on a remote system!
Change the file /etc/network/interfaces to look something like this:
# The loopback network interface auto lo iface lo inet loopback # An entry for eth0 is no longer needed #auto eth0 #iface eth0 inet dhcp # Create the bridge (with the regular IP address of the host) auto br0 iface br0 inet dhcp bridge_ports eth0 bridge_fd 2.5
In this example the bridge gets its IP address and configuration from DHCP. For static configuration information, see bridge-utils-interfaces(5) (Lenny) or /usr/share/doc/bridge-utils/README.Debian.gz (Etch).
Restart the networking of the host system using:
# /etc/init.d/networking restart
After this brctl show should show the bridge and ifconfig should show the bridge has the host's IP address.
It is also necessary for your user to own the device /dev/net/tun.
Run the following command to change the owner of that device:
# chown <username> /dev/net/tun
If you have built your own kernel/modules then ensure the host machine has the vboxnetflt driver loaded.
Configuring the VirtualBox VM
There are different ways the TAP interface for the VM can be created:
statically (before VirtualBox is even started)
- on demand (when a VM is being started)
See also the chapter on "Virtual networking" in the VirtualBox user manual.
Static interfaces
In this case you only need to "define" an interface for use by a particular user once. All defined interfaces are "remembered" in the file /etc/vbox/interfaces and recreated by the VirtualBox init script every time the host system is booted.
Example to create an interface for a user:
# VBoxAddIF vbox0 <username> br0
You can of course create multiple interfaces per users, but all interfaces should have unique names.
To configure the VM to use static bridged networking, go to the "network" page of the VM's settings and change the following fields:
Attached to: Host Interface
Interface Name: vbox0
Setup Application: <empty>
Terminate Application: <empty>
Dynamic interfaces (on demand)
Пример ниже показывает второй метод. Этот пример позволит вам использовать несколько ВМ, но сценарий предполагает, что каждый интерфейс будет назван в форме "VBox *". Возможно, вам придется адаптировать сценарий под собственные нужды. Обратите внимание, что сценарий предполагает, что вы можете выполнить необходимые команды, с использованием Sudo. Фрагмент файла sudoers приведена ниже в качестве примера.
set -e BRIDGE="br0" case "${1}" in "up" ) # Get the last vbox interface that was created or "" if none TAP=$(cat /proc/net/dev | grep vbox | tail -n 1 | cut -d":" -f1 | sed 's/\s*vbox\(\.*\)/\1/') # If there was no previous interface then set to -1 (this is so the += works) [ "${TAP}" = "" ] && TAP=-1 # Increment TAP let "TAP+=1" # prepend vbox onto the TAP no TAP="vbox${TAP}" # Create the new TAP device sudo VBoxTunctl -b -u $(whoami) -t ${TAP} # Bring up the TAP (without an ip) sudo ifconfig ${TAP} up # Add the TAP to the Bridge sudo brctl addif ${BRIDGE} ${TAP} # Echo the name of the TAP so VirtualBox knows which one to use # on lenny the echo must be commented for virtuabox to work correctly echo ${TAP} ;; "down" ) # VirtualBox tells us which TAP it used TAP=${3} # Bring the TAP down sudo ifconfig ${TAP} down # Remove the TAP sudo VBoxTunctl -d ${TAP} > /dev/null 2>&1 ;; esac
Save the script, for example as ~/.VirtualBox/bridge_setup. The script can be tested by running it from the command line. If successful, brctl show should show interface vbox* (where * will be a number) added to the bridge.
Here is a snippet of a sudoers file to help (replace username and hostname with the appropriate values):
Cmnd_Alias VIRTUALBOX = /usr/bin/VBoxTunctl, /sbin/ifconfig vbox* up, /sbin/ifconfig vbox* down, /usr/sbin/brctl addif br0 vbox* username ALL=(ALL) PASSWD: ALL username hostname = NOPASSWD: VIRTUALBOX
To configure the VM to use dynamic bridged networking, go to the "network" page of the VM's settings and change the following fields:
Attached to: Host Interface
Interface Name: <empty>
Setup Application: ~/.VirtualBox/bridge_setup up
Terminate Application: ~/.VirtualBox/bridge_setup down
When the VM is started after that, the interface should be created automatically and the VM can be used just like it was a system connected directly to your local network.
How to remotely start virtual machines using VNC
Remote:
- log onto your remote box
install tightvncserver
- launch it (you don't need a display), pick a password
- determine which port it is using, a way to do so:
netstat -tap | grep vnc
- Let's say it's 5901
- unlog from there since the server forked in the background
Local:
install xtightvncviewer
- create a ssh tunnel to your box:
ssh -L 5901:localhost:5901 you@remote
- use it: (note there are two colons)
xtightvncviewer localhost::5901
then VBoxManage startvm $yourvm &
- and start as many virtual machines as wanted.
См. также
Alternative SystemVirtualization tools.
Ссылки
ToDo: Eventually purge obsolete information from this page, including:
/dev/net/tun (see bug 509524)
/etc/vbox/vbox.cfg (see bug 530321)
VBoxAddIF (removed in virtualbox-ose 2.1.0-dfsg-1)
VBoxTunctl (removed in virtualbox-ose 2.1.0-dfsg-1)