1 | <?xml version="1.0" encoding="UTF-8"?>
|
---|
2 | <!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
|
---|
3 | "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd">
|
---|
4 | <chapter id="Troubleshooting">
|
---|
5 | <title>Troubleshooting</title>
|
---|
6 |
|
---|
7 | <para>This chapter provides answers to commonly asked questions. In order to
|
---|
8 | improve your user experience with VirtualBox, it is recommended to read this
|
---|
9 | section to learn more about common pitfalls and get recommendations on how
|
---|
10 | to use the product.</para>
|
---|
11 |
|
---|
12 | <sect1>
|
---|
13 | <title>Procedures and tools</title>
|
---|
14 |
|
---|
15 | <sect2>
|
---|
16 | <title>Categorizing and isolating problems</title>
|
---|
17 |
|
---|
18 | <para>More often than not, a virtualized guest behaves like a physical
|
---|
19 | system. Any problems that a physical machine would encounter, a virtual
|
---|
20 | machine will encounter as well. If, for example, Internet connectivity
|
---|
21 | is lost due to external issues, virtual machines will be affected just
|
---|
22 | as much as physical ones.</para>
|
---|
23 |
|
---|
24 | <para>If a true VirtualBox problem is encountered, it helps to
|
---|
25 | categorize and isolate the problem first. Here are some of the questions
|
---|
26 | that should be answered before reporting a problem:<orderedlist>
|
---|
27 | <listitem>
|
---|
28 | <para>Is the problem specific to a certain guest OS? Specific
|
---|
29 | release of a guest OS? Especially with Linux guest related
|
---|
30 | problems, the issue may be specific to a certain distribution and
|
---|
31 | version of Linux.</para>
|
---|
32 | </listitem>
|
---|
33 |
|
---|
34 | <listitem>
|
---|
35 | <para>Is the problem specific to a certain host OS? Problems are
|
---|
36 | usually not host OS specific (because most of the VirtualBox code
|
---|
37 | base is shared across all supported platforms), but especially in
|
---|
38 | the areas of networking and USB support, there are significant
|
---|
39 | differences between host platforms. Some GUI related issues are
|
---|
40 | also host specific.</para>
|
---|
41 | </listitem>
|
---|
42 |
|
---|
43 | <listitem>
|
---|
44 | <para>Is the problem specific to certain host hardware? This
|
---|
45 | category of issues is typically related to the host CPU. Because
|
---|
46 | of significant differences between VT-x and AMD-V, problems may be
|
---|
47 | specific to one or the other technology. The exact CPU model may
|
---|
48 | also make a difference (even for software virtualization) because
|
---|
49 | different CPUs support different features, which may affect
|
---|
50 | certain aspects of guest CPU operation.</para>
|
---|
51 | </listitem>
|
---|
52 |
|
---|
53 | <listitem>
|
---|
54 | <para>Is the problem specific to a certain virtualization mode?
|
---|
55 | Some problems may only occur in software virtualization mode,
|
---|
56 | others may be specific to hardware virtualization.</para>
|
---|
57 | </listitem>
|
---|
58 |
|
---|
59 | <listitem>
|
---|
60 | <para>Is the problem specific to guest SMP? That is, is it related
|
---|
61 | to the number of virtual CPUs (VCPUs) in the guest? Using more
|
---|
62 | than one CPU usually significantly affects the internal operation
|
---|
63 | of a guest OS.</para>
|
---|
64 | </listitem>
|
---|
65 |
|
---|
66 | <listitem>
|
---|
67 | <para>Is the problem specific to the Guest Additions? In some
|
---|
68 | cases, this is a given (e.g., a shared folders problem), in other
|
---|
69 | cases it may be less obvious (for example, display problems). And
|
---|
70 | if the problem is Guest Additions specific, is it also specific to
|
---|
71 | a certain version of the Additions?</para>
|
---|
72 | </listitem>
|
---|
73 |
|
---|
74 | <listitem>
|
---|
75 | <para>Is the problem specific to a certain environment? Some
|
---|
76 | problems are related to a particular environment external to the
|
---|
77 | VM; this usually involves network setup. Certain configurations of
|
---|
78 | external servers such as DHCP or PXE may expose problems which do
|
---|
79 | not occur with other, similar servers.</para>
|
---|
80 | </listitem>
|
---|
81 |
|
---|
82 | <listitem>
|
---|
83 | <para>Is the problem a regression? Knowing that an issue is a
|
---|
84 | regression usually makes it significantly easier to find the
|
---|
85 | solution. In this case, it is crucial to know which version is
|
---|
86 | affected and which is not.</para>
|
---|
87 | </listitem>
|
---|
88 | </orderedlist></para>
|
---|
89 | </sect2>
|
---|
90 |
|
---|
91 | <sect2>
|
---|
92 | <title>Collecting debugging information</title>
|
---|
93 |
|
---|
94 | <para>For problem determination, it is often important to collect
|
---|
95 | debugging information which can be analyzed by VirtualBox support. This
|
---|
96 | section contains information about what kind of information can be
|
---|
97 | obtained.</para>
|
---|
98 |
|
---|
99 | <para>Every time VirtualBox starts up a VM, a so-called <emphasis
|
---|
100 | role="bold">"release log file"</emphasis> is created containing lots of
|
---|
101 | information about the VM configuration and runtime events. The log file
|
---|
102 | is called <computeroutput><literal>VBox.log</literal></computeroutput>
|
---|
103 | and resides in the VM log file folder. Typically this will be a
|
---|
104 | directory like this:<screen>$HOME/VirtualBox VMs/{machinename}/Logs</screen></para>
|
---|
105 |
|
---|
106 | <para>When starting a VM, the configuration file of the last run will be
|
---|
107 | renamed to <computeroutput>.1</computeroutput>, up to
|
---|
108 | <computeroutput>.3</computeroutput>. Sometimes when there is a problem,
|
---|
109 | it is useful to have a look at the logs. Also when requesting support
|
---|
110 | for VirtualBox, supplying the corresponding log file is
|
---|
111 | mandatory.</para>
|
---|
112 |
|
---|
113 | <para>For convenience, for each virtual machine, the VirtualBox main
|
---|
114 | window can show these logs in a window. To access it, select a virtual
|
---|
115 | machine from the list on the left and select "Show logs..." from the
|
---|
116 | "Machine" window.</para>
|
---|
117 |
|
---|
118 | <para>The release log file (VBox.log) contains a wealth of diagnostic
|
---|
119 | information, such as Host OS type and version, VirtualBox version and
|
---|
120 | build (32-bit or 64-bit), a complete dump of the guest's configuration
|
---|
121 | (CFGM), detailed information about the host CPU type and supported
|
---|
122 | features, whether hardware virtualization is enabled, information about
|
---|
123 | VT-x/AMD-V setup, state transitions (creating, running, paused,
|
---|
124 | stopping, etc.), guest BIOS messages, Guest Additions messages,
|
---|
125 | device-specific log entries and, at the end of execution, final guest
|
---|
126 | state and condensed statistics.</para>
|
---|
127 |
|
---|
128 | <para>In case of crashes, it is very important to collect <emphasis
|
---|
129 | role="bold">crash dumps</emphasis>. This is true for both host and guest
|
---|
130 | crashes. For information about enabling core dumps on Linux, Solaris,
|
---|
131 | and OS X systems, refer to the core dump article on the VirtualBox
|
---|
132 | website.<footnote>
|
---|
133 | <para><ulink
|
---|
134 | url="http://www.virtualbox.org/wiki/Core_dump">http://www.virtualbox.org/wiki/Core_dump</ulink>.</para>
|
---|
135 | </footnote></para>
|
---|
136 |
|
---|
137 | <para>You can also use <computeroutput>VBoxManage
|
---|
138 | debugvm</computeroutput> to create a dump of a complete virtual machine;
|
---|
139 | see <xref linkend="vboxmanage-debugvm" />.</para>
|
---|
140 |
|
---|
141 | <para>For network related problems, it is often helpful to capture a
|
---|
142 | trace of network traffic. If the traffic is routed through an adapter on
|
---|
143 | the host, it is possible to use Wireshark or a similar tool to capture
|
---|
144 | the traffic there. However, this often also includes a lot of traffic
|
---|
145 | unrelated to the VM.</para>
|
---|
146 |
|
---|
147 | <para>VirtualBox provides an ability to capture network traffic only on
|
---|
148 | a specific VM's network adapter. Refer to the network tracing article on
|
---|
149 | the VirtualBox website<footnote>
|
---|
150 | <para><ulink
|
---|
151 | url="http://www.virtualbox.org/wiki/Network_tips">http://www.virtualbox.org/wiki/Network_tips</ulink>.</para>
|
---|
152 | </footnote> for information on enabling this capture. The trace files
|
---|
153 | created by VirtualBox are in <computeroutput>.pcap</computeroutput>
|
---|
154 | format and can be easily analyzed with Wireshark.</para>
|
---|
155 | </sect2>
|
---|
156 |
|
---|
157 | <sect2>
|
---|
158 | <title id="debugger">The built-in VM debugger</title>
|
---|
159 |
|
---|
160 | <para>VirtualBox includes a built-in VM debugger, which advanced users
|
---|
161 | may find useful. This debugger allows for examining and, to some extent,
|
---|
162 | controlling the VM state.<warning>
|
---|
163 | <para>Use the VM debugger at your own risk. There is no support for
|
---|
164 | it, and the following documentation is only made available for
|
---|
165 | advanced users with a very high level of familiarity with the
|
---|
166 | x86/AMD64 machine instruction set, as well as detailed knowledge of
|
---|
167 | the PC architecture. A degree of familiarity with the internals of
|
---|
168 | the guest OS in question may also be very helpful.</para>
|
---|
169 | </warning></para>
|
---|
170 |
|
---|
171 | <para>The VM debugger is available in all regular production versions of
|
---|
172 | VirtualBox, but it is disabled by default because the average user will
|
---|
173 | have little use for it. There are two ways to access the
|
---|
174 | debugger:<itemizedlist>
|
---|
175 | <listitem>
|
---|
176 | <para>A debugger console window displayed alongside the VM</para>
|
---|
177 | </listitem>
|
---|
178 |
|
---|
179 | <listitem>
|
---|
180 | <para>Via the <computeroutput>telnet</computeroutput> protocol at
|
---|
181 | port 5000</para>
|
---|
182 | </listitem>
|
---|
183 | </itemizedlist></para>
|
---|
184 |
|
---|
185 | <para>The debugger can be enabled in three ways:<itemizedlist>
|
---|
186 | <listitem>
|
---|
187 | <para>Start the VM directly using <computeroutput>VirtualBox
|
---|
188 | --startvm</computeroutput>, with an additional
|
---|
189 | <computeroutput>--dbg</computeroutput>,
|
---|
190 | <computeroutput>--debug</computeroutput>, or
|
---|
191 | <computeroutput>--debug-command-line</computeroutput> argument.
|
---|
192 | See the VirtualBox usage help for details.</para>
|
---|
193 | </listitem>
|
---|
194 |
|
---|
195 | <listitem>
|
---|
196 | <para>Set the
|
---|
197 | <computeroutput>VBOX_GUI_DBG_ENABLED</computeroutput> or
|
---|
198 | <computeroutput>VBOX_GUI_DBG_AUTO_SHOW</computeroutput>
|
---|
199 | environment variable to <computeroutput>true</computeroutput>
|
---|
200 | before launching the VirtualBox process. Setting these variables
|
---|
201 | (only their presence is checked) is effective even when the first
|
---|
202 | VirtualBox process is the VM selector window. VMs subsequently
|
---|
203 | launched from the selector will have the debugger enabled.</para>
|
---|
204 | </listitem>
|
---|
205 |
|
---|
206 | <listitem>
|
---|
207 | <para>Set the <computeroutput>GUI/Dbg/Enabled</computeroutput>
|
---|
208 | extra data item to <computeroutput>true</computeroutput> before
|
---|
209 | launching the VM. This can be set globally or on a per VM
|
---|
210 | basis.</para>
|
---|
211 | </listitem>
|
---|
212 | </itemizedlist></para>
|
---|
213 |
|
---|
214 | <para>A new 'Debug' menu entry will be added to the VirtualBox
|
---|
215 | application. This menu allows the user to open the debugger
|
---|
216 | console.</para>
|
---|
217 |
|
---|
218 | <para>The VM debugger command syntax is loosely modeled on Microsoft and
|
---|
219 | IBM debuggers used on DOS, OS/2 and Windows. Users familiar with symdeb,
|
---|
220 | CodeView, or the OS/2 kernel debugger will find the VirtualBox VM
|
---|
221 | debugger familiar.</para>
|
---|
222 |
|
---|
223 | <para>The most important command is
|
---|
224 | <computeroutput>help</computeroutput>. This will print brief usage help
|
---|
225 | for all debugger commands. The set of commands supported by the VM
|
---|
226 | debugger changes frequently and the
|
---|
227 | <computeroutput>help</computeroutput> command is always
|
---|
228 | up-to-date.</para>
|
---|
229 |
|
---|
230 | <para>A brief summary of frequently used commands follows:<itemizedlist>
|
---|
231 | <listitem>
|
---|
232 | <para><computeroutput>stop</computeroutput> -- stops the VM
|
---|
233 | execution and enables single stepping</para>
|
---|
234 | </listitem>
|
---|
235 |
|
---|
236 | <listitem>
|
---|
237 | <para><computeroutput>g</computeroutput> -- continue VM
|
---|
238 | execution</para>
|
---|
239 | </listitem>
|
---|
240 |
|
---|
241 | <listitem>
|
---|
242 | <para><computeroutput>t</computeroutput> -- single step an
|
---|
243 | instruction</para>
|
---|
244 | </listitem>
|
---|
245 |
|
---|
246 | <listitem>
|
---|
247 | <para><computeroutput>rg/rh/r</computeroutput> -- print the
|
---|
248 | guest/hypervisor/current registers</para>
|
---|
249 | </listitem>
|
---|
250 |
|
---|
251 | <listitem>
|
---|
252 | <para><computeroutput>kg/kh/k</computeroutput> -- print the
|
---|
253 | guest/hypervisor/current call stack</para>
|
---|
254 | </listitem>
|
---|
255 |
|
---|
256 | <listitem>
|
---|
257 | <para><computeroutput>da/db/dw/dd/dq</computeroutput> -- print
|
---|
258 | memory contents as ASCII/bytes/words/dwords/qwords</para>
|
---|
259 | </listitem>
|
---|
260 |
|
---|
261 | <listitem>
|
---|
262 | <para><computeroutput>u</computeroutput> -- unassemble
|
---|
263 | memory</para>
|
---|
264 | </listitem>
|
---|
265 |
|
---|
266 | <listitem>
|
---|
267 | <para><computeroutput>dg</computeroutput> -- print the guest's
|
---|
268 | GDT</para>
|
---|
269 | </listitem>
|
---|
270 |
|
---|
271 | <listitem>
|
---|
272 | <para><computeroutput>di</computeroutput> -- print the guest's
|
---|
273 | IDT</para>
|
---|
274 | </listitem>
|
---|
275 |
|
---|
276 | <listitem>
|
---|
277 | <para><computeroutput>dl</computeroutput> -- print the guest's
|
---|
278 | LDT</para>
|
---|
279 | </listitem>
|
---|
280 |
|
---|
281 | <listitem>
|
---|
282 | <para><computeroutput>dt</computeroutput> -- print the guest's
|
---|
283 | TSS</para>
|
---|
284 | </listitem>
|
---|
285 |
|
---|
286 | <listitem>
|
---|
287 | <para><computeroutput>dp*</computeroutput> -- print the guest's
|
---|
288 | page table structures</para>
|
---|
289 | </listitem>
|
---|
290 |
|
---|
291 | <listitem>
|
---|
292 | <para><computeroutput>bp/br</computeroutput> -- set a
|
---|
293 | normal/recompiler breakpoint</para>
|
---|
294 | </listitem>
|
---|
295 |
|
---|
296 | <listitem>
|
---|
297 | <para><computeroutput>bl</computeroutput> -- list
|
---|
298 | breakpoints</para>
|
---|
299 | </listitem>
|
---|
300 |
|
---|
301 | <listitem>
|
---|
302 | <para><computeroutput>bc</computeroutput> -- clear a
|
---|
303 | breakpoint</para>
|
---|
304 | </listitem>
|
---|
305 |
|
---|
306 | <listitem>
|
---|
307 | <para><computeroutput>writecore</computeroutput> -- writes a VM
|
---|
308 | core file to disk, refer <xref linkend="guestcoreformat" /></para>
|
---|
309 | </listitem>
|
---|
310 | </itemizedlist></para>
|
---|
311 |
|
---|
312 | <para>See the built-in <computeroutput>help</computeroutput> for other
|
---|
313 | available commands.</para>
|
---|
314 |
|
---|
315 | <para>The VM debugger supports symbolic debugging, although symbols for
|
---|
316 | guest code are often not available. For Solaris guests, the
|
---|
317 | <computeroutput>detect</computeroutput> command automatically determines
|
---|
318 | the guest OS version and locates kernel symbols in guest's memory.
|
---|
319 | Symbolic debugging is then available. For Linux guests, the
|
---|
320 | <computeroutput>detect</computeroutput> commands also determines the
|
---|
321 | guest OS version, but there are no symbols in the guest's memory. Kernel
|
---|
322 | symbols are available in the file
|
---|
323 | <computeroutput>/proc/kallsyms</computeroutput> on Linux guests. This
|
---|
324 | file must be copied to the host, for example using
|
---|
325 | <computeroutput>scp</computeroutput>. The
|
---|
326 | <computeroutput>loadmap</computeroutput> debugger command can be used to
|
---|
327 | make the symbol information available to the VM debugger. Note that the
|
---|
328 | <computeroutput>kallsyms</computeroutput> file contains the symbols for
|
---|
329 | the currently loaded modules; if the guest's configuration changes, the
|
---|
330 | symbols will change as well and must be updated.</para>
|
---|
331 |
|
---|
332 | <para>For all guests, a simple way to verify that the correct symbols
|
---|
333 | are loaded is the <computeroutput>k</computeroutput> command. The guest
|
---|
334 | is normally idling and it should be clear from the symbolic information
|
---|
335 | that the guest operating system's idle loop is being executed.</para>
|
---|
336 |
|
---|
337 | <para>Another group of debugger commands is the set of
|
---|
338 | <computeroutput>info</computeroutput> commands. Running
|
---|
339 | <computeroutput>info help</computeroutput> provides complete usage
|
---|
340 | information. The information commands provide ad-hoc data pertinent to
|
---|
341 | various emulated devices and aspects of the VMM. There is no general
|
---|
342 | guideline for using the <computeroutput>info</computeroutput> commands,
|
---|
343 | the right command to use depends entirely on the problem being
|
---|
344 | investigated. Some of the info commands are:<itemizedlist>
|
---|
345 | <listitem>
|
---|
346 | <para><computeroutput>cfgm</computeroutput> -- print a branch of
|
---|
347 | the configuration tree</para>
|
---|
348 | </listitem>
|
---|
349 |
|
---|
350 | <listitem>
|
---|
351 | <para><computeroutput>cpuid</computeroutput> -- display the guest
|
---|
352 | CPUID leaves</para>
|
---|
353 | </listitem>
|
---|
354 |
|
---|
355 | <listitem>
|
---|
356 | <para><computeroutput>ioport</computeroutput> -- print registered
|
---|
357 | I/O port ranges</para>
|
---|
358 | </listitem>
|
---|
359 |
|
---|
360 | <listitem>
|
---|
361 | <para><computeroutput>mmio</computeroutput> -- print registered
|
---|
362 | MMIO ranges</para>
|
---|
363 | </listitem>
|
---|
364 |
|
---|
365 | <listitem>
|
---|
366 | <para><computeroutput>mode</computeroutput> -- print the current
|
---|
367 | paging mode</para>
|
---|
368 | </listitem>
|
---|
369 |
|
---|
370 | <listitem>
|
---|
371 | <para><computeroutput>pit</computeroutput> -- print the i8254 PIT
|
---|
372 | state</para>
|
---|
373 | </listitem>
|
---|
374 |
|
---|
375 | <listitem>
|
---|
376 | <para><computeroutput>pic</computeroutput> -- print the i8259A PIC
|
---|
377 | state</para>
|
---|
378 | </listitem>
|
---|
379 |
|
---|
380 | <listitem>
|
---|
381 | <para><computeroutput>ohci/ehci</computeroutput> -- print a subset
|
---|
382 | of the OHCI/EHCI USB controller state</para>
|
---|
383 | </listitem>
|
---|
384 |
|
---|
385 | <listitem>
|
---|
386 | <para><computeroutput>pcnet0</computeroutput> -- print the PCnet
|
---|
387 | state</para>
|
---|
388 | </listitem>
|
---|
389 |
|
---|
390 | <listitem>
|
---|
391 | <para><computeroutput>vgatext</computeroutput> -- print the
|
---|
392 | contents of the VGA framebuffer formatted as standard text
|
---|
393 | mode</para>
|
---|
394 | </listitem>
|
---|
395 |
|
---|
396 | <listitem>
|
---|
397 | <para><computeroutput>timers</computeroutput> -- print all VM
|
---|
398 | timers</para>
|
---|
399 | </listitem>
|
---|
400 | </itemizedlist></para>
|
---|
401 |
|
---|
402 | <para>The output of the <computeroutput>info</computeroutput> commands
|
---|
403 | generally requires in-depth knowledge of the emulated device and/or
|
---|
404 | VirtualBox VMM internals. However, when used properly, the information
|
---|
405 | provided can be invaluable.</para>
|
---|
406 | </sect2>
|
---|
407 |
|
---|
408 | <sect2 id="guestcoreformat">
|
---|
409 | <title>VM core format</title>
|
---|
410 |
|
---|
411 | <para>VirtualBox uses the 64-bit ELF format for its VM core files
|
---|
412 | created by <computeroutput>VBoxManage debugvm</computeroutput>; see
|
---|
413 | <xref linkend="vboxmanage-debugvm" />. The VM core file contain the
|
---|
414 | memory and CPU dumps of the VM and can be useful for debugging your
|
---|
415 | guest OS. The 64-bit ELF object format specficiation can be obtained
|
---|
416 | here: <literal><ulink
|
---|
417 | url="http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf">http://downloads.openwatcom.org/ftp/devel/docs/elf-64-gen.pdf</ulink></literal>.</para>
|
---|
418 |
|
---|
419 | <para>The overall layout of the VM core format is as follows:</para>
|
---|
420 |
|
---|
421 | <para><screen>[ ELF 64 Header]
|
---|
422 | [ Program Header, type PT_NOTE ]
|
---|
423 | -> offset to COREDESCRIPTOR
|
---|
424 | [ Program Header, type PT_LOAD ] - one for each contiguous physical memory range
|
---|
425 | -> Memory offset of range
|
---|
426 | -> File offset
|
---|
427 | [ Note Header, type NT_VBOXCORE ]
|
---|
428 | [ COREDESCRIPTOR ]
|
---|
429 | -> Magic
|
---|
430 | -> VM core file version
|
---|
431 | -> VBox version
|
---|
432 | -> Number of vCPUs etc.
|
---|
433 | [ Note Header, type NT_VBOXCPU ] - one for each vCPU
|
---|
434 | [ vCPU 1 Note Header ]
|
---|
435 | [ CPUMCTX - vCPU 1 dump ]
|
---|
436 | [ Additional Notes + Data ] - currently unused
|
---|
437 | [ Memory dump ]</screen></para>
|
---|
438 |
|
---|
439 | <para>The memory descriptors contain physical addresses relative to the
|
---|
440 | guest and not virtual addresses. Regions of memory such as MMIO regions
|
---|
441 | are not included in the core file.</para>
|
---|
442 |
|
---|
443 | <para>The relevant data structures and definitions can be found in the
|
---|
444 | VirtualBox sources under the following header files:
|
---|
445 | <computeroutput>include/VBox/dbgfcorefmt.h</computeroutput>,
|
---|
446 | <computeroutput>include/VBox/cpumctx.h</computeroutput> and
|
---|
447 | <computeroutput>src/VBox/Runtime/include/internal/ldrELFCommon.h</computeroutput>.</para>
|
---|
448 |
|
---|
449 | <para>The VM core file can be inspected using
|
---|
450 | <computeroutput>elfdump</computeroutput> and GNU
|
---|
451 | <computeroutput>readelf</computeroutput> or other similar
|
---|
452 | utilities.</para>
|
---|
453 | </sect2>
|
---|
454 | </sect1>
|
---|
455 |
|
---|
456 | <sect1>
|
---|
457 | <title>General</title>
|
---|
458 |
|
---|
459 | <sect2 id="configPeriodicFlush">
|
---|
460 | <title>Guest shows IDE/SATA errors for file-based images on slow host
|
---|
461 | file system</title>
|
---|
462 |
|
---|
463 | <para>Occasionally, some host file systems provide very poor writing
|
---|
464 | performance and as a consequence cause the guest to time out IDE/SATA
|
---|
465 | commands. This is normal behavior and should normally cause no real
|
---|
466 | problems, as the guest should repeat commands that have timed out.
|
---|
467 | However, some guests (e.g. some Linux versions) have severe problems if a
|
---|
468 | write to an image file takes longer than about 15 seconds. Some file
|
---|
469 | systems however require more than a minute to complete a single write,
|
---|
470 | if the host cache contains a large amount of data that needs to be
|
---|
471 | written.</para>
|
---|
472 |
|
---|
473 | <para>The symptom for this problem is that the guest can no longer
|
---|
474 | access its files during large write or copying operations, usually
|
---|
475 | leading to an immediate hang of the guest.</para>
|
---|
476 |
|
---|
477 | <para>In order to work around this problem (the true fix is to use a
|
---|
478 | faster file system that doesn't exhibit such unacceptable write
|
---|
479 | performance), it is possible to flush the image file after a certain
|
---|
480 | amount of data has been written. This interval is normally infinite, but
|
---|
481 | can be configured individually for each disk of a VM.</para>
|
---|
482 |
|
---|
483 | <para>For IDE disks use the following command:</para>
|
---|
484 |
|
---|
485 | <screen>VBoxManage setextradata "VM name"
|
---|
486 | "VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/FlushInterval" [b]</screen>
|
---|
487 |
|
---|
488 | <para>For SATA disks use the following command:</para>
|
---|
489 |
|
---|
490 | <screen>VBoxManage setextradata "VM name"
|
---|
491 | "VBoxInternal/Devices/ahci/0/LUN#[x]/Config/FlushInterval" [b]</screen>
|
---|
492 |
|
---|
493 | <para>The value [x] that selects the disk for IDE is 0 for the master
|
---|
494 | device on the first channel, 1 for the slave device on the first
|
---|
495 | channel, 2 for the master device on the second channel or 3 for the
|
---|
496 | master device on the second channel. For SATA use values between 0 and
|
---|
497 | 29. Only disks support this configuration option; it must not be set for
|
---|
498 | CD/DVD drives.</para>
|
---|
499 |
|
---|
500 | <para>The unit of the interval [b] is the number of bytes written since
|
---|
501 | the last flush. The value for it must be selected so that the occasional
|
---|
502 | long write delays do not occur. Since the proper flush interval depends
|
---|
503 | on the performance of the host and the host filesystem, finding the
|
---|
504 | optimal value that makes the problem disappear requires some
|
---|
505 | experimentation. Values between 1000000 and 10000000 (1 to 10 megabytes)
|
---|
506 | are a good starting point. Decreasing the interval both decreases the
|
---|
507 | probability of the problem and the write performance of the guest.
|
---|
508 | Setting the value unnecessarily low will cost performance without
|
---|
509 | providing any benefits. An interval of 1 will cause a flush for each
|
---|
510 | write operation and should solve the problem in any case, but has a
|
---|
511 | severe write performance penalty.</para>
|
---|
512 |
|
---|
513 | <para>Providing a value of 0 for [b] is treated as an infinite flush
|
---|
514 | interval, effectively disabling this workaround. Removing the extra data
|
---|
515 | key by specifying no value for [b] has the same effect.</para>
|
---|
516 | </sect2>
|
---|
517 |
|
---|
518 | <sect2>
|
---|
519 | <title>Responding to guest IDE/SATA flush requests</title>
|
---|
520 |
|
---|
521 | <para>If desired, the virtual disk images can be flushed when the guest
|
---|
522 | issues the IDE FLUSH CACHE command. Normally these requests are ignored
|
---|
523 | for improved performance. The parameters below are only accepted for
|
---|
524 | disk drives. They must not be set for DVD drives.</para>
|
---|
525 |
|
---|
526 | <para>To enable flushing for IDE disks, issue the following
|
---|
527 | command:</para>
|
---|
528 |
|
---|
529 | <screen>VBoxManage setextradata "VM name" "VBoxInternal/Devices/piix3ide/0/LUN#[x]/Config/IgnoreFlush" 0</screen>
|
---|
530 |
|
---|
531 | <para>The value [x] that selects the disk is 0 for the master device on
|
---|
532 | the first channel, 1 for the slave device on the first channel, 2 for
|
---|
533 | the master device on the second channel or 3 for the master device on
|
---|
534 | the second channel.</para>
|
---|
535 |
|
---|
536 | <para>To enable flushing for SATA disks, issue the following
|
---|
537 | command:</para>
|
---|
538 |
|
---|
539 | <screen>VBoxManage setextradata "VM name" "VBoxInternal/Devices/ahci/0/LUN#[x]/Config/IgnoreFlush" 0</screen>
|
---|
540 |
|
---|
541 | <para>The value [x] that selects the disk can be a value between 0 and
|
---|
542 | 29.</para>
|
---|
543 |
|
---|
544 | <para>Note that this doesn't affect the flushes performed according to
|
---|
545 | the configuration described in <xref linkend="configPeriodicFlush"
|
---|
546 | xrefstyle="template: %n" />. Restoring the default of ignoring flush
|
---|
547 | commands is possible by setting the value to 1 or by removing the
|
---|
548 | key.</para>
|
---|
549 | </sect2>
|
---|
550 |
|
---|
551 | <sect2 id="hostPowerMgmt">
|
---|
552 | <title>Poor performance caused by host power management</title>
|
---|
553 |
|
---|
554 | <para>On some hardware platforms and operating systems, virtualization
|
---|
555 | performance is negatively affected by host CPU power management. The
|
---|
556 | symptoms may be choppy audio in the guest or erratic guest clock
|
---|
557 | behavior.</para>
|
---|
558 |
|
---|
559 | <para>Some of the problems may be caused by firmware and/or host
|
---|
560 | operating system bugs. Therefore, updating the firmware and applying
|
---|
561 | operating systems fixes is recommended.</para>
|
---|
562 |
|
---|
563 | <para>For optimal virtualization performance, the C1E power state
|
---|
564 | support in the system's BIOS should be disabled, if such a setting is
|
---|
565 | available (not all systems support the C1E power state). Disabling other
|
---|
566 | power management settings may also improve performance. However, a
|
---|
567 | balance between performance and power consumption must always be
|
---|
568 | considered.</para>
|
---|
569 | </sect2>
|
---|
570 |
|
---|
571 | <sect2 id="gui2D_grayedout">
|
---|
572 | <title>GUI: 2D Video Acceleration option is grayed out</title>
|
---|
573 |
|
---|
574 | <para>To use 2D Video Acceleration within VirtualBox, your host's video
|
---|
575 | card should support certain OpenGL extensions. On startup, VirtualBox
|
---|
576 | checks for those extensions, and, if the test fails, this option is
|
---|
577 | silently grayed out.</para>
|
---|
578 |
|
---|
579 | <para>To find out why it has failed, you can manually execute the
|
---|
580 | following command:</para>
|
---|
581 |
|
---|
582 | <screen>VBoxTestOGL --log "log_file_name" --test 2D</screen>
|
---|
583 |
|
---|
584 | <para>It will list the required OpenGL extensions one by one and will
|
---|
585 | show you which one failed the test. This usually means that you are
|
---|
586 | running an outdated or misconfigured OpenGL driver on your host. It can
|
---|
587 | also mean that your video chip is lacking required functionality.</para>
|
---|
588 | </sect2>
|
---|
589 | </sect1>
|
---|
590 |
|
---|
591 | <sect1>
|
---|
592 | <title>Windows guests</title>
|
---|
593 |
|
---|
594 | <sect2>
|
---|
595 | <title>Windows bluescreens after changing VM configuration</title>
|
---|
596 |
|
---|
597 | <para>Changing certain virtual machine settings can cause Windows guests
|
---|
598 | to fail during start up with a bluescreen. This may happen if you change
|
---|
599 | VM settings after installing Windows, or if you copy a disk image with
|
---|
600 | an already installed Windows to a newly created VM which has settings
|
---|
601 | that differ from the original machine.</para>
|
---|
602 |
|
---|
603 | <para>This applies in particular to the following settings:<itemizedlist>
|
---|
604 | <listitem>
|
---|
605 | <para>The ACPI and I/O APIC settings should never be changed after
|
---|
606 | installing Windows. Depending on the presence of these hardware
|
---|
607 | features, the Windows installation program chooses special kernel
|
---|
608 | and device driver versions and will fail to startup should these
|
---|
609 | hardware features be removed. (Enabling them for a Windows VM
|
---|
610 | which was installed without them does not cause any harm. However,
|
---|
611 | Windows will not use these features in this case.)</para>
|
---|
612 | </listitem>
|
---|
613 |
|
---|
614 | <listitem>
|
---|
615 | <para>Changing the storage controller hardware will cause bootup
|
---|
616 | failures as well. This might also apply to you if you copy a disk
|
---|
617 | image from an older version of VirtualBox to a virtual machine
|
---|
618 | created with a newer VirtualBox version; the default subtype of
|
---|
619 | IDE controller hardware was changed from PIIX3 to PIIX4 with
|
---|
620 | VirtualBox 2.2. Make sure these settings are identical.</para>
|
---|
621 | </listitem>
|
---|
622 | </itemizedlist></para>
|
---|
623 | </sect2>
|
---|
624 |
|
---|
625 | <sect2>
|
---|
626 | <title>Windows 0x101 bluescreens with SMP enabled (IPI timeout)</title>
|
---|
627 |
|
---|
628 | <para>If a VM is configured to have more than one processor (symmetrical
|
---|
629 | multiprocessing, SMP), some configurations of Windows guests crash with
|
---|
630 | an 0x101 error message, indicating a timeout for inter-processor
|
---|
631 | interrupts (IPIs). These interrupts synchronize memory management
|
---|
632 | between processors.</para>
|
---|
633 |
|
---|
634 | <para>According to Microsoft, this is due to a race condition in
|
---|
635 | Windows. A hotfix is available.<footnote>
|
---|
636 | <para>See <ulink
|
---|
637 | url="http://support.microsoft.com/kb/955076">http://support.microsoft.com/kb/955076</ulink>.</para>
|
---|
638 | </footnote> If this does not help, please reduce the number of virtual
|
---|
639 | processors to 1.</para>
|
---|
640 | </sect2>
|
---|
641 |
|
---|
642 | <sect2>
|
---|
643 | <title>Windows 2000 installation failures</title>
|
---|
644 |
|
---|
645 | <para>When installing Windows 2000 guests, you might run into one of the
|
---|
646 | following issues:</para>
|
---|
647 |
|
---|
648 | <itemizedlist>
|
---|
649 | <listitem>
|
---|
650 | <para>Installation reboots, usually during component
|
---|
651 | registration.</para>
|
---|
652 | </listitem>
|
---|
653 |
|
---|
654 | <listitem>
|
---|
655 | <para>Installation fills the whole hard disk with empty log
|
---|
656 | files.</para>
|
---|
657 | </listitem>
|
---|
658 |
|
---|
659 | <listitem>
|
---|
660 | <para>Installation complains about a failure installing
|
---|
661 | <literal>msgina.dll</literal>.</para>
|
---|
662 | </listitem>
|
---|
663 | </itemizedlist>
|
---|
664 |
|
---|
665 | <para>These problems are all caused by a bug in the hard disk driver of
|
---|
666 | Windows 2000. After issuing a hard disk request, there is a race
|
---|
667 | condition in the Windows driver code which leads to corruption if the
|
---|
668 | operation completes too fast, i.e. the hardware interrupt from the IDE
|
---|
669 | controller arrives too soon. With physical hardware, there is a
|
---|
670 | guaranteed delay in most systems so the problem is usually hidden there
|
---|
671 | (however it should be possible to reproduce it on physical hardware as
|
---|
672 | well). In a virtual environment, it is possible for the operation to be
|
---|
673 | done immediately (especially on very fast systems with multiple CPUs)
|
---|
674 | and the interrupt is signaled sooner than on a physical system. The
|
---|
675 | solution is to introduce an artificial delay before delivering such
|
---|
676 | interrupts. This delay can be configured for a VM using the following
|
---|
677 | command:</para>
|
---|
678 |
|
---|
679 | <screen>VBoxManage setextradata "VM name" "VBoxInternal/Devices/piix3ide/0/Config/IRQDelay" 1</screen>
|
---|
680 |
|
---|
681 | <para>This sets the delay to one millisecond. In case this doesn't help,
|
---|
682 | increase it to a value between 1 and 5 milliseconds. Please note that
|
---|
683 | this slows down disk performance. After installation, you should be able
|
---|
684 | to remove the key (or set it to 0).</para>
|
---|
685 | </sect2>
|
---|
686 |
|
---|
687 | <sect2>
|
---|
688 | <title>How to record bluescreen information from Windows guests</title>
|
---|
689 |
|
---|
690 | <para>When Windows guests run into a kernel crash, they display the
|
---|
691 | infamous bluescreen. Depending on how Windows is configured, the
|
---|
692 | information will remain on the screen until the machine is restarted or
|
---|
693 | it will reboot automatically. During installation, Windows is usually
|
---|
694 | configured to reboot automatically. With automatic reboots, there is no
|
---|
695 | chance to record the bluescreen information which might be important for
|
---|
696 | problem determination.</para>
|
---|
697 |
|
---|
698 | <para>VirtualBox provides a method of halting a guest when it wants to
|
---|
699 | perform a reset. In order to enable this feature, issue the following
|
---|
700 | command:</para>
|
---|
701 |
|
---|
702 | <para><screen>VBoxManage setextradata "VM name" "VBoxInternal/PDM/HaltOnReset" 1</screen></para>
|
---|
703 | </sect2>
|
---|
704 |
|
---|
705 | <sect2>
|
---|
706 | <title>No networking in Windows Vista guests</title>
|
---|
707 |
|
---|
708 | <para>With Windows Vista, Microsoft dropped support for the AMD PCNet
|
---|
709 | card that VirtualBox used to provide as the default virtual network card
|
---|
710 | before version 1.6.0. For Windows Vista guests, VirtualBox now uses an
|
---|
711 | Intel E1000 card by default.</para>
|
---|
712 |
|
---|
713 | <para>If, for some reason, you still want to use the AMD card, you need
|
---|
714 | to download the PCNet driver from the AMD website (available for 32-bit
|
---|
715 | Windows only). You can transfer it into the virtual machine using a
|
---|
716 | shared folder, see (see <xref linkend="sharedfolders" />).</para>
|
---|
717 | </sect2>
|
---|
718 |
|
---|
719 | <sect2>
|
---|
720 | <title>Windows guests may cause a high CPU load</title>
|
---|
721 |
|
---|
722 | <para>Several background applications of Windows guests, especially
|
---|
723 | virus scanners, are known to increases the CPU load notably even if the
|
---|
724 | guest appears to be idle. We recommend to deactivate virus scanners
|
---|
725 | within virtualized guests if possible.</para>
|
---|
726 | </sect2>
|
---|
727 |
|
---|
728 | <sect2>
|
---|
729 | <title>Long delays when accessing shared folders</title>
|
---|
730 |
|
---|
731 | <para>The performance for accesses to shared folders from a Windows
|
---|
732 | guest might be decreased due to delays during the resolution of the
|
---|
733 | VirtualBox shared folders name service. To fix these delays, add the
|
---|
734 | following entries to the file
|
---|
735 | <computeroutput>\windows\system32\drivers\etc\lmhosts</computeroutput>
|
---|
736 | of the Windows guest:</para>
|
---|
737 |
|
---|
738 | <screen>255.255.255.255 VBOXSVR #PRE
|
---|
739 | 255.255.255.255 VBOXSRV #PRE</screen>
|
---|
740 |
|
---|
741 | <para>After doing this change, a reboot of the guest is required.</para>
|
---|
742 | </sect2>
|
---|
743 |
|
---|
744 | <sect2>
|
---|
745 | <title>USB tablet coordinates wrong in Windows 98 guests</title>
|
---|
746 |
|
---|
747 | <para>If a Windows 98 VM is configured to use the emulated USB tablet
|
---|
748 | (absolute pointing device), the coordinate translation may be incorrect
|
---|
749 | and the pointer is restricted to the upper left quarter of the guest's
|
---|
750 | screen.
|
---|
751 | </para>
|
---|
752 |
|
---|
753 | <para>The USB HID (Human Interface Device) drivers in Windows 98 are very
|
---|
754 | old and do not handle tablets the same way all more recent operating
|
---|
755 | systems do (Windows 2000 and later, Mac OS X, Solaris). To
|
---|
756 | work around the problem, issue the following command:
|
---|
757 | </para>
|
---|
758 |
|
---|
759 | <para><screen>VBoxManage setextradata "VM name" "VBoxInternal/USB/HidMouse/0/Config/CoordShift" 0</screen></para>
|
---|
760 |
|
---|
761 | <para>To restore the default behavior, remove the key or set its value
|
---|
762 | to 1.
|
---|
763 | </para>
|
---|
764 | </sect2>
|
---|
765 |
|
---|
766 | <sect2>
|
---|
767 | <title>Windows guests are removed from an Active Directory domain after
|
---|
768 | restoring a snapshot</title>
|
---|
769 |
|
---|
770 | <para>If a Windows guest is a member of an Active Directory domain and
|
---|
771 | the snapshot feature of VirtualBox is used, it could happen it loses
|
---|
772 | this status after you restore an older snapshot.
|
---|
773 | </para>
|
---|
774 |
|
---|
775 | <para>The reason is the automatic machine password changing performed by
|
---|
776 | Windows in regular intervals for security purposes. You can disable
|
---|
777 | this feature by following the instruction of this <ulink
|
---|
778 | url="http://support.microsoft.com/kb/154501">http://support.microsoft.com/kb/154501</ulink>
|
---|
779 | article from Microsoft.
|
---|
780 | </para>
|
---|
781 | </sect2>
|
---|
782 |
|
---|
783 | <sect2>
|
---|
784 | <title>Restoring d3d8.dll and d3d9.dll</title>
|
---|
785 |
|
---|
786 | <para>VirtualBox Guest Additions for Windows prior to 4.1.8 did not properly
|
---|
787 | back up the original d3d8.dll and d3d9.dll system files when selecting
|
---|
788 | and installing the experimental Direct3D support. This process replaces
|
---|
789 | both system files with files from the VirtualBox Guest Additions so that
|
---|
790 | Direct3D calls can be handled correctly. Although this issue was fixed
|
---|
791 | with VirtualBox 4.1.8, there is no way the Windows Guest Additions
|
---|
792 | installer can repair these files.</para>
|
---|
793 |
|
---|
794 | <para>Corruption of these files has no implications in case 3D acceleration
|
---|
795 | is enabled and basic Direct3D support is installed, that is, without WDDM
|
---|
796 | (on Windows Vista or higher) or on older Windows systems like Windows XP.
|
---|
797 | With the basic Direct3D support all Direct3D 8.0 and Direct3D 9.0
|
---|
798 | applications will utilize VirtualBox Direct3D files directly and thus
|
---|
799 | will run as expected.</para>
|
---|
800 |
|
---|
801 | <para>For WDDM Direct3D support however, the originally shipped d3d8.dll and
|
---|
802 | d3d9.dll files are required in order to run Direct3D 8.0
|
---|
803 | and Direct3D 9.0 applications. As a result of the above mentioned system
|
---|
804 | files corruption these applications will not work anymore. See below for
|
---|
805 | a step-by-step guide for restoring the original d3d8.dll and d3d9.dll
|
---|
806 | system files in case the VirtualBox Guest Additions installer warned
|
---|
807 | about those incorrect files or when having trouble running Direct3D
|
---|
808 | applications.</para>
|
---|
809 |
|
---|
810 | <note><para>Starting at Windows 7 the 3D desktop (aka Aero) uses DirectX 10
|
---|
811 | for rendering so that corrupted d3d8.dll and d3d9.dll system files will
|
---|
812 | have no effect on the actual rendering. Taken this into account such a
|
---|
813 | detected file corruption will not be considered as fatal for the basic
|
---|
814 | Direct3D and WDDM Direct3D installation on Windows 7 and later guests.</para></note>
|
---|
815 |
|
---|
816 | <para>Extracting d3d8 and d3d9.dll from a Windows XP installation CD:</para>
|
---|
817 |
|
---|
818 | <orderedlist>
|
---|
819 | <listitem>
|
---|
820 | <para>Download and install the latest version of 7-Zip File Manager <ulink
|
---|
821 | url="http//www.7-zip.org">http//www.7-zip.org</ulink></para>
|
---|
822 | </listitem>
|
---|
823 |
|
---|
824 | <listitem>
|
---|
825 | <para>Browse into installation CD for example E:\i386 (or AMD64 for 64bit version)</para>
|
---|
826 | </listitem>
|
---|
827 |
|
---|
828 | <listitem>
|
---|
829 | <para>Locate file d3d8.dl_ and d3d9.dl_, double click on it and Extract d3d8.dll and d3d9.dll</para>
|
---|
830 | </listitem>
|
---|
831 |
|
---|
832 | <listitem>
|
---|
833 | <para>Reboot Windows in Safe mode</para>
|
---|
834 | </listitem>
|
---|
835 |
|
---|
836 | <listitem>
|
---|
837 | <para>Copy extracted d3d8.dll and d3d9.dll to C:\Windows\system32 and C:\Windows\system32\dllcache</para>
|
---|
838 | </listitem>
|
---|
839 |
|
---|
840 | <listitem>
|
---|
841 | <para>Reboot</para>
|
---|
842 | </listitem>
|
---|
843 | </orderedlist>
|
---|
844 |
|
---|
845 | <para>Extracting d3d8 and d3d9.dll from Windows XP Service pack </para>
|
---|
846 |
|
---|
847 | <orderedlist>
|
---|
848 | <listitem>
|
---|
849 | <para>1, 3-6 Same as installation CD</para>
|
---|
850 | </listitem>
|
---|
851 | <listitem>
|
---|
852 | <para>Use 'Open inside' to open WindowsXP-KB936929-SP3-x86.exe as archive and browse i386 directory.</para>
|
---|
853 | </listitem>
|
---|
854 | </orderedlist>
|
---|
855 |
|
---|
856 | <para>Extracting d3d8 and d3d9.dll from Vista/Windows7 installation CD or Service Pack iso</para>
|
---|
857 |
|
---|
858 | <orderedlist>
|
---|
859 | <listitem>
|
---|
860 | <para>Download and install the latest version of 7-Zip File Manager <ulink
|
---|
861 | url="http//www.7-zip.org">http//www.7-zip.org</ulink></para>
|
---|
862 | </listitem>
|
---|
863 |
|
---|
864 | <listitem>
|
---|
865 | <para>Browse into installation CD for example E:\sources</para>
|
---|
866 | </listitem>
|
---|
867 |
|
---|
868 | <listitem>
|
---|
869 | <para>Locate file install.wim and double click it. After 7-Zip utility opens the file, you'll get a few numbered folders. Each numeric subfolder represents a different version of Windows (Starter, Home Basic, and so on)</para>
|
---|
870 | </listitem>
|
---|
871 |
|
---|
872 | <listitem>
|
---|
873 | <para>After entering into the one of the numeric folders, browse into Windows\System32 (or C:\Windows\SysWOW64 for 64 bit version) directory locate d3d8.dll and d3d9.dll and extract</para>
|
---|
874 | </listitem>
|
---|
875 |
|
---|
876 | <listitem>
|
---|
877 | <para>Copy extracted d3d8.dll and d3d9.dll to C:\Windows\system32 or C:\Windows\SysWOW64 (files from system32 should go to system32, from SysWOW64 to SysWOW64)</para>
|
---|
878 | </listitem>
|
---|
879 |
|
---|
880 | <listitem>
|
---|
881 | <para>Reboot</para>
|
---|
882 | </listitem>
|
---|
883 | </orderedlist>
|
---|
884 | </sect2>
|
---|
885 |
|
---|
886 | </sect1>
|
---|
887 |
|
---|
888 | <sect1>
|
---|
889 | <title>Linux and X11 guests</title>
|
---|
890 |
|
---|
891 | <sect2>
|
---|
892 | <title>Linux guests may cause a high CPU load</title>
|
---|
893 |
|
---|
894 | <para>Some Linux guests may cause a high CPU load even if the guest
|
---|
895 | system appears to be idle. This can be caused by a high timer frequency
|
---|
896 | of the guest kernel. Some Linux distributions, for example Fedora, ship
|
---|
897 | a Linux kernel configured for a timer frequency of <emphasis
|
---|
898 | role="bold"> 1000Hz</emphasis>. We recommend to recompile the guest
|
---|
899 | kernel and to select a timer frequency of 100Hz.</para>
|
---|
900 |
|
---|
901 | <para>Linux kernels shipped with Red Hat Enterprise Linux (RHEL) as of
|
---|
902 | release 4.7 and 5.1 as well as kernels of related Linux distributions
|
---|
903 | (for instance CentOS and Oracle Enterprise Linux) support a kernel
|
---|
904 | parameter <emphasis>divider=N</emphasis>. Hence, such kernels support a
|
---|
905 | lower timer frequency without recompilation. We suggest to add the
|
---|
906 | kernel parameter <emphasis>divider=10</emphasis> to select a guest
|
---|
907 | kernel timer frequency of 100Hz.</para>
|
---|
908 | </sect2>
|
---|
909 |
|
---|
910 | <sect2>
|
---|
911 | <title>AMD Barcelona CPUs</title>
|
---|
912 |
|
---|
913 | <para>Most Linux-based guests will fail with AMD Phenoms or
|
---|
914 | Barcelona-level Opterons due to a bug in the Linux kernel. Enable the
|
---|
915 | I/O-APIC to work around the problem (see <xref
|
---|
916 | linkend="settings-system" />).</para>
|
---|
917 | </sect2>
|
---|
918 |
|
---|
919 | <sect2 id="trouble-linux-buggy">
|
---|
920 | <title>Buggy Linux 2.6 kernel versions</title>
|
---|
921 |
|
---|
922 | <para>The following bugs in Linux kernels prevent them from executing
|
---|
923 | correctly in VirtualBox, causing VM boot crashes:<itemizedlist>
|
---|
924 | <listitem>
|
---|
925 | <para>The Linux kernel version 2.6.18 (and some 2.6.17 versions)
|
---|
926 | introduced a race condition that can cause boot crashes in
|
---|
927 | VirtualBox. Please use a kernel version 2.6.19 or later.</para>
|
---|
928 | </listitem>
|
---|
929 |
|
---|
930 | <listitem>
|
---|
931 | <para>With hardware virtualization and the I/O APIC enabled,
|
---|
932 | kernels before 2.6.24-rc6 may panic on boot with the following
|
---|
933 | message:<screen>Kernel panic - not syncing: IO-APIC + timer doesn't work! Boot with
|
---|
934 | apic=debug and send a report. Then try booting with the 'noapic' option</screen></para>
|
---|
935 |
|
---|
936 | <para>If you see this message, either disable hardware
|
---|
937 | virtualization or the I/O APIC (see <xref
|
---|
938 | linkend="settings-system" />), or upgrade the guest to a newer
|
---|
939 | kernel.<footnote>
|
---|
940 | <para>See <ulink
|
---|
941 | url="http://www.mail-archive.com/[email protected]/msg30813.html">http://www.mail-archive.com/[email protected]/msg30813.html</ulink>
|
---|
942 | for details about the kernel fix.</para>
|
---|
943 | </footnote></para>
|
---|
944 | </listitem>
|
---|
945 | </itemizedlist></para>
|
---|
946 | </sect2>
|
---|
947 |
|
---|
948 | <sect2>
|
---|
949 | <title>Shared clipboard, auto-resizing and seamless desktop in X11
|
---|
950 | guests</title>
|
---|
951 |
|
---|
952 | <para>Guest desktop services in guests running the X11 window system
|
---|
953 | (Solaris, Linux and others) are provided by a guest service called
|
---|
954 | <computeroutput>VBoxClient</computeroutput>, which runs under the ID of
|
---|
955 | the user who started the desktop session and is automatically started
|
---|
956 | using the following command lines <screen>VBoxClient --clipboard
|
---|
957 | VBoxClient --display
|
---|
958 | VBoxClient --seamless</screen> when your X11 user session is started if you
|
---|
959 | are using a common desktop environment (Gnome, KDE and others). If a
|
---|
960 | particular desktop service is not working correctly, it is worth
|
---|
961 | checking whether the process which should provide it is running.</para>
|
---|
962 |
|
---|
963 | <para>The <computeroutput>VBoxClient</computeroutput> processes create
|
---|
964 | files in the user's home directory with names of the form
|
---|
965 | <computeroutput>.vboxclient-*.pid</computeroutput> when they are running
|
---|
966 | in order to prevent a given service from being started twice. It can
|
---|
967 | happen due to misconfiguration that these files are created owned by
|
---|
968 | root and not deleted when the services are stopped, which will prevent
|
---|
969 | them from being started in future sessions. If the services cannot be
|
---|
970 | started, you may wish to check whether these files still exist.</para>
|
---|
971 | </sect2>
|
---|
972 | </sect1>
|
---|
973 |
|
---|
974 | <sect1>
|
---|
975 | <title>Solaris guests</title>
|
---|
976 |
|
---|
977 | <sect2>
|
---|
978 | <title>Older Solaris 10 releases hang in 64-bit mode</title>
|
---|
979 |
|
---|
980 | <para>Solaris 10 releases up to and including Solaris 10 8/07 ("S10U4")
|
---|
981 | incorrectly detect newer Intel processors produced since 2007. This
|
---|
982 | problem leads to the 64-bit Solaris kernel hanging or crashing almost
|
---|
983 | immediately during startup, in both virtualized and physical
|
---|
984 | environments.
|
---|
985 | </para>
|
---|
986 | <para>
|
---|
987 | The recommended solution is upgrading to at least Solaris 10 5/08
|
---|
988 | ("S10U5"). Alternative solutions include forcing Solaris to always
|
---|
989 | boot the 32-bit kernel or applying a patch for bug 6574102 (while
|
---|
990 | Solaris is using the 32-bit kernel).
|
---|
991 | </para>
|
---|
992 |
|
---|
993 | </sect2>
|
---|
994 | </sect1>
|
---|
995 |
|
---|
996 | <sect1>
|
---|
997 | <title>Windows hosts</title>
|
---|
998 |
|
---|
999 | <sect2>
|
---|
1000 | <title>VBoxSVC out-of-process COM server issues</title>
|
---|
1001 |
|
---|
1002 | <para>VirtualBox makes use of the Microsoft Component Object Model (COM)
|
---|
1003 | for inter- and intra-process communication. This allows VirtualBox to
|
---|
1004 | share a common configuration among different virtual machine processes
|
---|
1005 | and provide several user interface options based on a common
|
---|
1006 | architecture. All global status information and configuration is
|
---|
1007 | maintained by the process <computeroutput>VBoxSVC.exe</computeroutput>,
|
---|
1008 | which is an out-of-process COM server. Whenever a VirtualBox process is
|
---|
1009 | started, it requests access to the COM server and Windows automatically
|
---|
1010 | starts the process. Note that it should never be started by the end
|
---|
1011 | user.</para>
|
---|
1012 |
|
---|
1013 | <para>When the last process disconnects from the COM server, it will
|
---|
1014 | terminate itself after some seconds. The VirtualBox configuration (XML
|
---|
1015 | files) is maintained and owned by the COM server and the files are
|
---|
1016 | locked whenever the server runs.</para>
|
---|
1017 |
|
---|
1018 | <para>In some cases - such as when a virtual machine is terminated
|
---|
1019 | unexpectedly - the COM server will not notice that the client is
|
---|
1020 | disconnected and stay active for a longer period (10 minutes or so)
|
---|
1021 | keeping the configuration files locked. In other rare cases the COM
|
---|
1022 | server might experience an internal error and subsequently other
|
---|
1023 | processes fail to initialize it. In these situations, it is recommended
|
---|
1024 | to use the Windows task manager to kill the process
|
---|
1025 | <computeroutput>VBoxSVC.exe</computeroutput>.</para>
|
---|
1026 | </sect2>
|
---|
1027 |
|
---|
1028 | <sect2>
|
---|
1029 | <title>CD/DVD changes not recognized</title>
|
---|
1030 |
|
---|
1031 | <para>In case you have assigned a physical CD/DVD drive to a guest and
|
---|
1032 | the guest does not notice when the medium changes, make sure that the
|
---|
1033 | Windows media change notification (MCN) feature is not turned off. This
|
---|
1034 | is represented by the following key in the Windows registry:<screen><literal>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Cdrom\Autorun</literal></screen>Certain
|
---|
1035 | applications may disable this key against Microsoft's advice. If it is
|
---|
1036 | set to 0, change it to 1 and reboot your system. VirtualBox relies on
|
---|
1037 | Windows notifying it of media changes.</para>
|
---|
1038 | </sect2>
|
---|
1039 |
|
---|
1040 | <sect2>
|
---|
1041 | <title>Sluggish response when using Microsoft RDP client</title>
|
---|
1042 |
|
---|
1043 | <para>If connecting to a Virtual Machine via the Microsoft RDP client
|
---|
1044 | (called Remote Desktop Connection), there can be large delays between
|
---|
1045 | input (moving the mouse over a menu is the most obvious situation) and
|
---|
1046 | output. This is because this RDP client collects input for a certain
|
---|
1047 | time before sending it to the RDP server.</para>
|
---|
1048 |
|
---|
1049 | <para>The interval can be decreased by setting a Windows registry key to
|
---|
1050 | smaller values than the default of 100. The key does not exist initially
|
---|
1051 | and must be of type DWORD. The unit for its values is milliseconds.
|
---|
1052 | Values around 20 are suitable for low-bandwidth connections between the
|
---|
1053 | RDP client and server. Values around 4 can be used for a gigabit
|
---|
1054 | Ethernet connection. Generally values below 10 achieve a performance
|
---|
1055 | that is very close to that of the local input devices and screen of the
|
---|
1056 | host on which the Virtual Machine is running.</para>
|
---|
1057 |
|
---|
1058 | <para>Depending whether the setting should be changed for an individual
|
---|
1059 | user or for the system, either</para>
|
---|
1060 |
|
---|
1061 | <screen>HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Min Send Interval</screen>
|
---|
1062 |
|
---|
1063 | <para>or</para>
|
---|
1064 |
|
---|
1065 | <screen>HKEY_LOCAL_MACHINE\Software\Microsoft\Terminal Server Client\Min Send Interval</screen>
|
---|
1066 |
|
---|
1067 | <para>can be set appropriately.</para>
|
---|
1068 | </sect2>
|
---|
1069 |
|
---|
1070 | <sect2>
|
---|
1071 | <title>Running an iSCSI initiator and target on a single system</title>
|
---|
1072 |
|
---|
1073 | <para>Deadlocks can occur on a Windows host when attempting to access an
|
---|
1074 | iSCSI target running in a guest virtual machine with an iSCSI initiator
|
---|
1075 | (e.g. Microsoft iSCSI Initiator) that is running on the host. This is
|
---|
1076 | caused by a flaw in the Windows cache manager component, and causes
|
---|
1077 | sluggish host system response for several minutes, followed by a
|
---|
1078 | "Delayed Write Failed" error message in the system tray or in a separate
|
---|
1079 | message window. The guest is blocked during that period and may show
|
---|
1080 | error messages or become unstable.</para>
|
---|
1081 |
|
---|
1082 | <para>Setting the environment variable
|
---|
1083 | <computeroutput>VBOX_DISABLE_HOST_DISK_CACHE</computeroutput> to 1 will
|
---|
1084 | enable a workaround for this problem until Microsoft addresses the
|
---|
1085 | issue. For example, open a command prompt window and start VirtualBox
|
---|
1086 | like this:</para>
|
---|
1087 |
|
---|
1088 | <screen>set VBOX_DISABLE_HOST_DISK_CACHE=1
|
---|
1089 | VirtualBox</screen>
|
---|
1090 |
|
---|
1091 | <para>While this will decrease guest disk performance (especially
|
---|
1092 | writes), it does not affect the performance of other applications
|
---|
1093 | running on the host.</para>
|
---|
1094 | </sect2>
|
---|
1095 |
|
---|
1096 | <sect2>
|
---|
1097 | <title>Bridged networking adapters missing</title>
|
---|
1098 |
|
---|
1099 | <para>If no bridged adapters show up in the "Networking" section of the
|
---|
1100 | VM settings, this typically means that the bridged networking driver was
|
---|
1101 | not installed properly on your host. This could be due to the following
|
---|
1102 | reasons: <itemizedlist>
|
---|
1103 | <listitem>
|
---|
1104 | <para>The maximum allowed filter count was reached on the host. In
|
---|
1105 | this case, the MSI log would mention the
|
---|
1106 | <computeroutput>0x8004a029</computeroutput> error code returned on
|
---|
1107 | NetFlt network component install:<screen>VBoxNetCfgWinInstallComponent: Install failed, hr (0x8004a029)</screen></para>
|
---|
1108 |
|
---|
1109 | <para>You can try to increase the maximum filter count in the
|
---|
1110 | Windows registry at the following key:<screen>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Network\MaxNumFilters</screen>The
|
---|
1111 | maximum number allowed is 14. After a reboot, try to re-install
|
---|
1112 | VirtualBox.</para>
|
---|
1113 | </listitem>
|
---|
1114 |
|
---|
1115 | <listitem>
|
---|
1116 | <para>The INF cache is corrupt. In this case, the install log
|
---|
1117 | (<computeroutput>%windir%\inf\setupapi.log</computeroutput> on XP
|
---|
1118 | or <computeroutput>%windir%\inf\setupapi.dev.log</computeroutput>
|
---|
1119 | on Vista or later) would typically mention the failure to find a
|
---|
1120 | suitable driver package for either the
|
---|
1121 | <computeroutput>sun_VBoxNetFlt</computeroutput> or
|
---|
1122 | <computeroutput>sun_VBoxNetFltmp</computeroutput> components. The
|
---|
1123 | solution then is to uninstall VirtualBox, remove the INF cache
|
---|
1124 | (<computeroutput>%windir%\inf\INFCACHE.1</computeroutput>), reboot
|
---|
1125 | and try to re-install VirtualBox</para>
|
---|
1126 | </listitem>
|
---|
1127 | </itemizedlist></para>
|
---|
1128 | </sect2>
|
---|
1129 |
|
---|
1130 | <sect2>
|
---|
1131 | <title>Host-only networking adapters cannot be created</title>
|
---|
1132 |
|
---|
1133 | <para>If host-only adapter cannot be created (either via the Manager or
|
---|
1134 | VBoxManage), then the INF cache is probably corrupt. In this case, the
|
---|
1135 | install log (<computeroutput>%windir%\inf\setupapi.log</computeroutput>
|
---|
1136 | on XP or <computeroutput>%windir%\inf\setupapi.dev.log</computeroutput>
|
---|
1137 | on Vista or later) would typically mention the failure to find a
|
---|
1138 | suitable driver package for the
|
---|
1139 | <computeroutput>sun_VBoxNetAdp</computeroutput> component. Again, as
|
---|
1140 | with the bridged networking problem described above, the solution is to
|
---|
1141 | uninstall VirtualBox, remove the INF cache
|
---|
1142 | (<computeroutput>%windir%\inf\INFCACHE.1</computeroutput>), reboot and
|
---|
1143 | try to re-install VirtualBox.</para>
|
---|
1144 | </sect2>
|
---|
1145 | </sect1>
|
---|
1146 |
|
---|
1147 | <sect1>
|
---|
1148 | <title>Linux hosts</title>
|
---|
1149 |
|
---|
1150 | <sect2 id="linuxkernelmodulefailstoload">
|
---|
1151 | <title>Linux kernel module refuses to load</title>
|
---|
1152 |
|
---|
1153 | <para>If the VirtualBox kernel module
|
---|
1154 | (<computeroutput>vboxdrv</computeroutput>) refuses to load, i.e. you get
|
---|
1155 | an "Error inserting vboxdrv: Invalid argument", check (as root) the
|
---|
1156 | output of the <computeroutput>dmesg</computeroutput> command to find out
|
---|
1157 | why the load failed. Most probably the kernel disagrees with the version
|
---|
1158 | of the gcc used to compile the module. Make sure that you use the same
|
---|
1159 | compiler as used to build the kernel.</para>
|
---|
1160 | </sect2>
|
---|
1161 |
|
---|
1162 | <sect2>
|
---|
1163 | <title>Linux host CD/DVD drive not found</title>
|
---|
1164 |
|
---|
1165 | <para>If you have configured a virtual machine to use the host's CD/DVD
|
---|
1166 | drive, but this does not appear to work, make sure that the current user
|
---|
1167 | has permission to access the corresponding Linux device file
|
---|
1168 | (<computeroutput>/dev/hdc</computeroutput> or
|
---|
1169 | <computeroutput>/dev/scd0</computeroutput> or
|
---|
1170 | <computeroutput>/dev/cdrom</computeroutput> or similar). On most
|
---|
1171 | distributions, the user must be added to a corresponding group (usually
|
---|
1172 | called <computeroutput>cdrom</computeroutput> or
|
---|
1173 | <computeroutput>cdrw</computeroutput>).</para>
|
---|
1174 | </sect2>
|
---|
1175 |
|
---|
1176 | <sect2>
|
---|
1177 | <title>Linux host CD/DVD drive not found (older distributions)</title>
|
---|
1178 |
|
---|
1179 | <para>On older Linux distributions, if your CD/DVD device has a
|
---|
1180 | different name, VirtualBox may be unable to find it. On older Linux
|
---|
1181 | hosts, VirtualBox performs the following steps to locate your CD/DVD
|
---|
1182 | drives:</para>
|
---|
1183 |
|
---|
1184 | <para><orderedlist>
|
---|
1185 | <listitem>
|
---|
1186 | <para>VirtualBox examines if the environment variable
|
---|
1187 | <computeroutput>VBOX_CDROM</computeroutput> is defined (see
|
---|
1188 | below). If so, VirtualBox omits all the following checks.</para>
|
---|
1189 | </listitem>
|
---|
1190 |
|
---|
1191 | <listitem>
|
---|
1192 | <para>VirtualBox tests if
|
---|
1193 | <computeroutput>/dev/cdrom</computeroutput> works.</para>
|
---|
1194 | </listitem>
|
---|
1195 |
|
---|
1196 | <listitem>
|
---|
1197 | <para>In addition, VirtualBox checks if any CD/DVD drives are
|
---|
1198 | currently mounted by checking
|
---|
1199 | <computeroutput>/etc/mtab</computeroutput>.</para>
|
---|
1200 | </listitem>
|
---|
1201 |
|
---|
1202 | <listitem>
|
---|
1203 | <para>In addition, VirtualBox checks if any of the entries in
|
---|
1204 | <computeroutput>/etc/fstab</computeroutput> point to CD/DVD
|
---|
1205 | devices.</para>
|
---|
1206 | </listitem>
|
---|
1207 | </orderedlist></para>
|
---|
1208 |
|
---|
1209 | <para>In other words, you can try to set VBOX_CDROM to contain a list of
|
---|
1210 | your CD/DVD devices, separated by colons, for example as follows:</para>
|
---|
1211 |
|
---|
1212 | <para><screen>export VBOX_CDROM='/dev/cdrom0:/dev/cdrom1'</screen>On
|
---|
1213 | modern Linux distributions, VirtualBox uses the hardware abstraction
|
---|
1214 | layer (hal) to locate CD and DVD hardware.</para>
|
---|
1215 | </sect2>
|
---|
1216 |
|
---|
1217 | <sect2>
|
---|
1218 | <title>Linux host floppy not found</title>
|
---|
1219 |
|
---|
1220 | <para>The previous instructions (for CD and DVD drives) apply
|
---|
1221 | accordingly to floppy disks, except that on older distributions
|
---|
1222 | VirtualBox tests for <computeroutput>/dev/fd*</computeroutput> devices
|
---|
1223 | by default, and this can be overridden with the
|
---|
1224 | <computeroutput>VBOX_FLOPPY</computeroutput> environment
|
---|
1225 | variable.</para>
|
---|
1226 | </sect2>
|
---|
1227 |
|
---|
1228 | <sect2>
|
---|
1229 | <title>Strange guest IDE error messages when writing to CD/DVD</title>
|
---|
1230 |
|
---|
1231 | <para>If the experimental CD/DVD writer support is enabled with an
|
---|
1232 | incorrect VirtualBox, host or guest configuration, it is possible that
|
---|
1233 | any attempt to access the CD/DVD writer fails and simply results in
|
---|
1234 | guest kernel error messages (for Linux guests) or application error
|
---|
1235 | messages (for Windows guests). VirtualBox performs the usual consistency
|
---|
1236 | checks when a VM is powered up (in particular it aborts with an error
|
---|
1237 | message if the device for the CD/DVD writer is not writable by the user
|
---|
1238 | starting the VM), but it cannot detect all misconfigurations. The
|
---|
1239 | necessary host and guest OS configuration is not specific for
|
---|
1240 | VirtualBox, but a few frequent problems are listed here which occurred
|
---|
1241 | in connection with VirtualBox.</para>
|
---|
1242 |
|
---|
1243 | <para>Special care must be taken to use the correct device. The
|
---|
1244 | configured host CD/DVD device file name (in most cases
|
---|
1245 | <literal>/dev/cdrom</literal>) must point to the device that allows
|
---|
1246 | writing to the CD/DVD unit. For CD/DVD writer units connected to a SCSI
|
---|
1247 | controller or to a IDE controller that interfaces to the Linux SCSI
|
---|
1248 | subsystem (common for some SATA controllers), this must refer to the
|
---|
1249 | SCSI device node (e.g. <literal>/dev/scd0</literal>). Even for IDE
|
---|
1250 | CD/DVD writer units this must refer to the appropriate SCSI CD-ROM
|
---|
1251 | device node (e.g. <literal>/dev/scd0</literal>) if the
|
---|
1252 | <literal>ide-scsi</literal> kernel module is loaded. This module is
|
---|
1253 | required for CD/DVD writer support with all Linux 2.4 kernels and some
|
---|
1254 | early 2.6 kernels. Many Linux distributions load this module whenever a
|
---|
1255 | CD/DVD writer is detected in the system, even if the kernel would
|
---|
1256 | support CD/DVD writers without the module. VirtualBox supports the use
|
---|
1257 | of IDE device files (e.g. <literal>/dev/hdc</literal>), provided the
|
---|
1258 | kernel supports this and the <literal>ide-scsi</literal> module is not
|
---|
1259 | loaded.</para>
|
---|
1260 |
|
---|
1261 | <para>Similar rules (except that within the guest the CD/DVD writer is
|
---|
1262 | always an IDE device) apply to the guest configuration. Since this setup
|
---|
1263 | is very common, it is likely that the default configuration of the guest
|
---|
1264 | works as expected.</para>
|
---|
1265 | </sect2>
|
---|
1266 |
|
---|
1267 | <sect2>
|
---|
1268 | <title>VBoxSVC IPC issues</title>
|
---|
1269 |
|
---|
1270 | <para>On Linux, VirtualBox makes use of a custom version of Mozilla
|
---|
1271 | XPCOM (cross platform component object model) for inter- and
|
---|
1272 | intra-process communication (IPC). The process
|
---|
1273 | <computeroutput>VBoxSVC</computeroutput> serves as a communication hub
|
---|
1274 | between different VirtualBox processes and maintains the global
|
---|
1275 | configuration, i.e. the XML database. When starting a VirtualBox
|
---|
1276 | component, the processes <computeroutput>VBoxSVC</computeroutput> and
|
---|
1277 | <computeroutput>VirtualBoxXPCOMIPCD</computeroutput> are started
|
---|
1278 | automatically. They are only accessible from the user account they are
|
---|
1279 | running under. <computeroutput>VBoxSVC</computeroutput> owns the
|
---|
1280 | VirtualBox configuration database which normally resides in
|
---|
1281 | <computeroutput>~/.VirtualBox</computeroutput>. While it is running, the
|
---|
1282 | configuration files are locked. Communication between the various
|
---|
1283 | VirtualBox components and <computeroutput>VBoxSVC</computeroutput> is
|
---|
1284 | performed through a local domain socket residing in
|
---|
1285 | <computeroutput>/tmp/.vbox-<username>-ipc</computeroutput>. In
|
---|
1286 | case there are communication problems (i.e. a VirtualBox application
|
---|
1287 | cannot communicate with <computeroutput>VBoxSVC</computeroutput>),
|
---|
1288 | terminate the daemons and remove the local domain socket
|
---|
1289 | directory.</para>
|
---|
1290 | </sect2>
|
---|
1291 |
|
---|
1292 | <sect2 id="usb_linux">
|
---|
1293 | <title>USB not working</title>
|
---|
1294 |
|
---|
1295 | <para>If USB is not working on your Linux host, make sure that the
|
---|
1296 | current user is a member of the
|
---|
1297 | <computeroutput>vboxusers</computeroutput> group. On older hosts, you
|
---|
1298 | need to make sure that the user has permission to access the USB
|
---|
1299 | filesystem (<computeroutput>usbfs</computeroutput>), which VirtualBox
|
---|
1300 | relies on to retrieve valid information about your host's USB devices.
|
---|
1301 | The rest of this section only applies to those older systems.</para>
|
---|
1302 |
|
---|
1303 | <para>As <computeroutput>usbfs</computeroutput> is a virtual filesystem,
|
---|
1304 | a <computeroutput>chmod</computeroutput> on
|
---|
1305 | <computeroutput>/proc/bus/usb</computeroutput> has no effect. The
|
---|
1306 | permissions for <computeroutput>usbfs</computeroutput> can therefore
|
---|
1307 | <emphasis>only</emphasis> be changed by editing the
|
---|
1308 | <computeroutput>/etc/fstab</computeroutput> file.</para>
|
---|
1309 |
|
---|
1310 | <para>For example, most Linux distributions have a user group called
|
---|
1311 | <computeroutput>usb</computeroutput> or similar, of which the current
|
---|
1312 | user must be a member. To give all users of that group access to usbfs,
|
---|
1313 | make sure the following line is present:<screen># 85 is the USB group
|
---|
1314 | none /proc/bus/usb usbfs devgid=85,devmode=664 0 0</screen>Replace
|
---|
1315 | 85 with the group ID that matches your system (search
|
---|
1316 | <computeroutput>/etc/group</computeroutput> for "usb" or similar).
|
---|
1317 | Alternatively, if you don't mind the security hole, give all users
|
---|
1318 | access to USB by changing "664" to "666".</para>
|
---|
1319 |
|
---|
1320 | <para>The various distributions are very creative from which script the
|
---|
1321 | <computeroutput>usbfs</computeroutput> filesystem is mounted. Sometimes
|
---|
1322 | the command is hidden in unexpected places. For SuSE 10.0 the mount
|
---|
1323 | command is part of the udev configuration file
|
---|
1324 | <computeroutput>/etc/udev/rules.d/50-udev.rules</computeroutput>. As
|
---|
1325 | this distribution has no user group called
|
---|
1326 | <computeroutput>usb</computeroutput>, you may e.g. use the
|
---|
1327 | <computeroutput>vboxusers</computeroutput> group which was created by
|
---|
1328 | the VirtualBox installer. Since group numbers are allocated dynamically,
|
---|
1329 | the following example uses 85 as a placeholder. Modify the line
|
---|
1330 | containing (a linebreak has been inserted to improve
|
---|
1331 | readability)<screen>DEVPATH="/module/usbcore", ACTION=="add",
|
---|
1332 | RUN+="/bin/mount -t usbfs usbfs /proc/bus/usb"</screen> and add the
|
---|
1333 | necessary options (make sure that everything is in a single
|
---|
1334 | line):<screen>DEVPATH="/module/usbcore", ACTION=="add",
|
---|
1335 | RUN+="/bin/mount -t usbfs usbfs /proc/bus/usb -o devgid=85,devmode=664"</screen></para>
|
---|
1336 |
|
---|
1337 | <para>Debian Etch has the mount command in
|
---|
1338 | <computeroutput>/etc/init.d/mountkernfs.sh</computeroutput>. Since that
|
---|
1339 | distribution has no group <computeroutput>usb</computeroutput>, it is
|
---|
1340 | also the easiest solution to allow all members of the group
|
---|
1341 | <computeroutput>vboxusers</computeroutput> to access the USB subsystem.
|
---|
1342 | Modify the line <screen>domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev</screen>
|
---|
1343 | so that it contains <screen>domount usbfs usbdevfs /proc/bus/usb -onoexec,nosuid,nodev,devgid=85,devmode=664</screen>
|
---|
1344 | As usual, replace the 85 with the actual group number which should get
|
---|
1345 | access to USB devices.</para>
|
---|
1346 |
|
---|
1347 | <para>Other distributions do similar operations in scripts stored in the
|
---|
1348 | <computeroutput>/etc/init.d</computeroutput> directory.</para>
|
---|
1349 | </sect2>
|
---|
1350 |
|
---|
1351 | <sect2>
|
---|
1352 | <title>PAX/grsec kernels</title>
|
---|
1353 |
|
---|
1354 | <para>Linux kernels including the grsec patch (see <literal><ulink
|
---|
1355 | url="http://www.grsecurity.net/">http://www.grsecurity.net/</ulink></literal>)
|
---|
1356 | and derivates have to disable PAX_MPROTECT for the VBox binaries to be
|
---|
1357 | able to start a VM. The reason is that VBox has to create executable
|
---|
1358 | code on anonymous memory.</para>
|
---|
1359 | </sect2>
|
---|
1360 |
|
---|
1361 | <sect2>
|
---|
1362 | <title>Linux kernel vmalloc pool exhausted</title>
|
---|
1363 |
|
---|
1364 | <para>When running a large number of VMs with a lot of RAM on a Linux
|
---|
1365 | system (say 20 VMs with 1GB of RAM each), additional VMs might fail to
|
---|
1366 | start with a kernel error saying that the vmalloc pool is exhausted and
|
---|
1367 | should be extended. The error message also tells you to specify
|
---|
1368 | <computeroutput>vmalloc=256MB</computeroutput> in your kernel parameter
|
---|
1369 | list. If adding this parameter to your GRUB or LILO configuration makes
|
---|
1370 | the kernel fail to boot (with a weird error message such as "failed to
|
---|
1371 | mount the root partition"), then you have probably run into a memory
|
---|
1372 | conflict of your kernel and initial RAM disk. This can be solved by
|
---|
1373 | adding the following parameter to your GRUB configuration:</para>
|
---|
1374 |
|
---|
1375 | <screen>uppermem 524288</screen>
|
---|
1376 | </sect2>
|
---|
1377 | </sect1>
|
---|
1378 |
|
---|
1379 | <sect1>
|
---|
1380 | <title>Solaris hosts</title>
|
---|
1381 |
|
---|
1382 | <sect2>
|
---|
1383 | <title>Cannot start VM, not enough contiguous memory</title>
|
---|
1384 |
|
---|
1385 | <para>The ZFS file system is known to use all available RAM as cache if
|
---|
1386 | the default system settings are not changed. This may lead to a heavy
|
---|
1387 | fragmentation of the host memory preventing VirtualBox VMs from being
|
---|
1388 | started. We recommend to limit the ZFS cache by adding a line<screen>set zfs:zfs_arc_max = xxxx</screen>
|
---|
1389 | to /etc/system where <computeroutput>xxxx</computeroutput> bytes is the
|
---|
1390 | amount of memory usable for the ZFS cache.</para>
|
---|
1391 | </sect2>
|
---|
1392 |
|
---|
1393 | <sect2>
|
---|
1394 | <title>VM aborts with out of memory errors on Solaris 10 hosts</title>
|
---|
1395 |
|
---|
1396 | <para>32-bit Solaris 10 hosts (bug 1225025) require swap space equal to,
|
---|
1397 | or greater than the host's physical memory size. For example, 8 GB
|
---|
1398 | physical memory would require at least 8 GB swap. This can be configured
|
---|
1399 | during a Solaris 10 install by choosing a 'custom install' and changing
|
---|
1400 | the default partitions.</para>
|
---|
1401 |
|
---|
1402 | <note>
|
---|
1403 | <para>This restriction applies only to 32-bit Solaris hosts, 64-bit
|
---|
1404 | hosts are not affected!</para>
|
---|
1405 | </note>
|
---|
1406 |
|
---|
1407 | <para>For existing Solaris 10 installs, an additional swap image needs
|
---|
1408 | to be mounted and used as swap. Hence if you have 1 GB swap and 8 GB of
|
---|
1409 | physical memory, you require to add 7 GB more swap. This can be done as
|
---|
1410 | follows:</para>
|
---|
1411 |
|
---|
1412 | <para>For ZFS (as root user):</para>
|
---|
1413 |
|
---|
1414 | <para><screen>zfs create -V 8gb /_<ZFS volume>_/swap
|
---|
1415 | swap -a /dev/zvol/dsk/_<ZFS volume>_/swap</screen></para>
|
---|
1416 |
|
---|
1417 | <para>To mount if after reboot, add the following line to
|
---|
1418 | /etc/vfstab:</para>
|
---|
1419 |
|
---|
1420 | <screen>/dev/zvol/dsk/_<ZFS volume>_/swap - - swap - no -</screen>
|
---|
1421 |
|
---|
1422 | <para>Alternatively, you could grow the existing swap using:</para>
|
---|
1423 |
|
---|
1424 | <screen>zfs set volsize=8G rpool/swap</screen>
|
---|
1425 |
|
---|
1426 | <para>And reboot the system for the changes to take effect.</para>
|
---|
1427 |
|
---|
1428 | <para>For UFS (as root user):</para>
|
---|
1429 |
|
---|
1430 | <screen>mkfile 7g /path/to/swapfile.img
|
---|
1431 | swap -a /path/to/swapfile.img</screen>
|
---|
1432 |
|
---|
1433 | <para>To mount it after reboot, add the following line to
|
---|
1434 | /etc/vfstab:</para>
|
---|
1435 |
|
---|
1436 | <screen>/path/to/swap.img - - swap - no -</screen>
|
---|
1437 | </sect2>
|
---|
1438 | </sect1>
|
---|
1439 | </chapter>
|
---|