If the VirtualBox kernel module
(vboxdrv
) refuses to load, i.e. you get
an "Error inserting vboxdrv: Invalid argument", check (as root) the
output of the dmesg
command to find out
why the load failed. Most probably the kernel disagrees with the version
of the gcc used to compile the module. Make sure that you use the same
compiler as used to build the kernel.
If you have configured a virtual machine to use the host's CD/DVD
drive, but this does not appear to work, make sure that the current user
has permission to access the corresponding Linux device file
(/dev/hdc
or
/dev/scd0
or
/dev/cdrom
or similar). On most
distributions, the user must be added to a corresponding group (usually
called cdrom
or
cdrw
).
On older Linux distributions, if your CD/DVD device has a different name, VirtualBox may be unable to find it. On older Linux hosts, VirtualBox performs the following steps to locate your CD/DVD drives:
-
VirtualBox examines if the environment variable
VBOX_CDROM
is defined (see below). If so, VirtualBox omits all the following checks. -
VirtualBox tests if
/dev/cdrom
works. -
In addition, VirtualBox checks if any CD/DVD drives are currently mounted by checking
/etc/mtab
. -
In addition, VirtualBox checks if any of the entries in
/etc/fstab
point to CD/DVD devices.
In other words, you can try to set VBOX_CDROM to contain a list of your CD/DVD devices, separated by colons, for example as follows:
export VBOX_CDROM='/dev/cdrom0:/dev/cdrom1'
On modern Linux distributions, VirtualBox uses the hardware abstraction layer (hal) to locate CD and DVD hardware.
The previous instructions (for CD and DVD drives) apply
accordingly to floppy disks, except that on older distributions
VirtualBox tests for /dev/fd*
devices
by default, and this can be overridden with the
VBOX_FLOPPY
environment
variable.
If the experimental CD/DVD writer support is enabled with an incorrect VirtualBox, host or guest configuration, it is possible that any attempt to access the CD/DVD writer fails and simply results in guest kernel error messages (for Linux guests) or application error messages (for Windows guests). VirtualBox performs the usual consistency checks when a VM is powered up (in particular it aborts with an error message if the device for the CD/DVD writer is not writable by the user starting the VM), but it cannot detect all misconfigurations. The necessary host and guest OS configuration is not specific for VirtualBox, but a few frequent problems are listed here which occurred in connection with VirtualBox.
Special care must be taken to use the correct device. The
configured host CD/DVD device file name (in most cases
/dev/cdrom
) must point to the device that allows
writing to the CD/DVD unit. For CD/DVD writer units connected to a SCSI
controller or to a IDE controller that interfaces to the Linux SCSI
subsystem (common for some SATA controllers), this must refer to the
SCSI device node (e.g. /dev/scd0
). Even for IDE
CD/DVD writer units this must refer to the appropriate SCSI CD-ROM
device node (e.g. /dev/scd0
) if the
ide-scsi
kernel module is loaded. This module is
required for CD/DVD writer support with all Linux 2.4 kernels and some
early 2.6 kernels. Many Linux distributions load this module whenever a
CD/DVD writer is detected in the system, even if the kernel would
support CD/DVD writers without the module. VirtualBox supports the use
of IDE device files (e.g. /dev/hdc
), provided the
kernel supports this and the ide-scsi
module is not
loaded.
Similar rules (except that within the guest the CD/DVD writer is always an IDE device) apply to the guest configuration. Since this setup is very common, it is likely that the default configuration of the guest works as expected.
On Linux, VirtualBox makes use of a custom version of Mozilla
XPCOM (cross platform component object model) for inter- and
intra-process communication (IPC). The process
VBoxSVC
serves as a communication hub
between different VirtualBox processes and maintains the global
configuration, i.e. the XML database. When starting a VirtualBox
component, the processes VBoxSVC
and
VBoxXPCOMIPCD
are started
automatically. They are only accessible from the user account they are
running under. VBoxSVC
owns the
VirtualBox configuration database which normally resides in
~/.config/VirtualBox
, or the appropriate configuration directory for your operating system. While it is running, the
configuration files are locked. Communication between the various
VirtualBox components and VBoxSVC
is
performed through a local domain socket residing in
/tmp/.vbox-<username>-ipc
. In
case there are communication problems (i.e. a VirtualBox application
cannot communicate with VBoxSVC
),
terminate the daemons and remove the local domain socket
directory.
If USB is not working on your Linux host, make sure that the
current user is a member of the
vboxusers
group.
Please keep in mind that group membership does not take effect immediately
but rather at the next login. If available, the
newgrp
command may avoid the need for
logout/login.
Linux kernels including the grsec patch (see http://www.grsecurity.net/
)
and derivates have to disable PAX_MPROTECT for the VBox binaries to be
able to start a VM. The reason is that VBox has to create executable
code on anonymous memory.
When running a large number of VMs with a lot of RAM on a Linux
system (say 20 VMs with 1 GB of RAM each), additional VMs might fail to
start with a kernel error saying that the vmalloc pool is exhausted and
should be extended. The error message also tells you to specify
vmalloc=256MB
in your kernel parameter
list. If adding this parameter to your GRUB or LILO configuration makes
the kernel fail to boot (with a weird error message such as "failed to
mount the root partition"), then you have probably run into a memory
conflict of your kernel and initial RAM disk. This can be solved by
adding the following parameter to your GRUB configuration:
uppermem 524288