1 | <?xml version='1.0' encoding='UTF-8'?>
|
---|
2 | <!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
|
---|
3 | <topic xml:lang="en-us" id="technical-components">
|
---|
4 | <title>Oracle VM VirtualBox Executables and Components</title>
|
---|
5 |
|
---|
6 | <body>
|
---|
7 | <p>
|
---|
8 | Oracle VM VirtualBox was designed to be modular and flexible. When the
|
---|
9 | Oracle VM VirtualBox graphical user interface (GUI) is opened and a VM
|
---|
10 | is started, at least the following three processes are running:
|
---|
11 | </p>
|
---|
12 | <ul>
|
---|
13 | <li>
|
---|
14 | <p><userinput>VBoxSVC</userinput>, the Oracle VM VirtualBox service process
|
---|
15 | which always runs in the background. This process is started
|
---|
16 | automatically by the first Oracle VM VirtualBox client process and
|
---|
17 | exits a short time after the last client exits. The first
|
---|
18 | Oracle VM VirtualBox service can be VirtualBox Manager,
|
---|
19 | <userinput>VBoxManage</userinput>,
|
---|
20 | <userinput>VBoxHeadless</userinput>, the web service amongst
|
---|
21 | others. The service is responsible for bookkeeping,
|
---|
22 | maintaining the state of all VMs, and for providing
|
---|
23 | communication between Oracle VM VirtualBox components. This
|
---|
24 | communication is implemented using COM/XPCOM.
|
---|
25 | </p>
|
---|
26 | <note>
|
---|
27 | <p>
|
---|
28 | When we refer to <i>clients</i> here, we mean
|
---|
29 | the local clients of a particular <userinput>VBoxSVC</userinput>
|
---|
30 | server process, not clients in a network. Oracle VM VirtualBox
|
---|
31 | employs its own client/server design to allow its processes
|
---|
32 | to cooperate, but all these processes run under the same
|
---|
33 | user account on the host operating system, and this is
|
---|
34 | totally transparent to the user.
|
---|
35 | </p>
|
---|
36 | </note>
|
---|
37 | </li>
|
---|
38 | <li>
|
---|
39 | <p>
|
---|
40 | The GUI process, <userinput>VirtualBoxVM</userinput>, a client
|
---|
41 | application based on the cross-platform Qt library. When
|
---|
42 | started without the <codeph>--startvm</codeph> option, this
|
---|
43 | application acts as VirtualBox Manager, displaying the VMs and their
|
---|
44 | settings. It then communicates settings and state changes to
|
---|
45 | <userinput>VBoxSVC</userinput> and also reflects changes effected
|
---|
46 | through other means, such as the <userinput>VBoxManage</userinput>
|
---|
47 | command.
|
---|
48 | </p>
|
---|
49 | </li>
|
---|
50 | <li>
|
---|
51 | <p>
|
---|
52 | If the <userinput>VirtualBoxVM</userinput> client application is
|
---|
53 | started with the <codeph>--startvm</codeph> argument, it loads
|
---|
54 | the VMM library which includes the actual hypervisor and then
|
---|
55 | runs a virtual machine and provides the input and output for
|
---|
56 | the guest.
|
---|
57 | </p>
|
---|
58 | </li>
|
---|
59 | </ul>
|
---|
60 | <p>
|
---|
61 | Any Oracle VM VirtualBox front-end, or client, will communicate with the
|
---|
62 | service process and can both control and reflect the current
|
---|
63 | state. For example, either the VM selector or the VM window or
|
---|
64 | VBoxManage can be used to pause the running VM, and other
|
---|
65 | components will always reflect the changed state.
|
---|
66 | </p>
|
---|
67 | <p>
|
---|
68 | The Oracle VM VirtualBox GUI application, called VirtualBox Manager, is only one
|
---|
69 | of several available front ends, or clients. The complete list
|
---|
70 | shipped with Oracle VM VirtualBox is as follows:
|
---|
71 | </p>
|
---|
72 | <ul>
|
---|
73 | <li>
|
---|
74 | <p><userinput>VirtualBoxVM</userinput>: The Qt front end implementing
|
---|
75 | VirtualBox Manager and running VMs.
|
---|
76 | </p>
|
---|
77 | </li>
|
---|
78 | <li>
|
---|
79 | <p><userinput>VBoxManage</userinput>: A less user-friendly but more
|
---|
80 | powerful alternative. See <xref href="vboxmanage.dita">VBoxManage</xref>.
|
---|
81 | </p>
|
---|
82 | </li>
|
---|
83 | <li>
|
---|
84 | <p><userinput>VBoxHeadless</userinput>: A VM front end which does not
|
---|
85 | directly provide any video output and keyboard or mouse input,
|
---|
86 | but enables redirection through the VirtualBox Remote Desktop
|
---|
87 | Extension. See <xref href="vboxheadless.dita"/>.
|
---|
88 | </p>
|
---|
89 | </li>
|
---|
90 | <li>
|
---|
91 | <p><userinput>vboxwebsrv</userinput>: The Oracle VM VirtualBox web service
|
---|
92 | process which enables control of an Oracle VM VirtualBox host
|
---|
93 | remotely. This is described in detail in the Oracle VM VirtualBox
|
---|
94 | Software Development Kit (SDK) reference. See
|
---|
95 | <xref href="VirtualBoxAPI.dita"/>.
|
---|
96 | </p>
|
---|
97 | </li>
|
---|
98 | <li>
|
---|
99 | <p>
|
---|
100 | The Oracle VM VirtualBox Python shell: A Python alternative to
|
---|
101 | <userinput>VBoxManage</userinput>. This is also described in the
|
---|
102 | SDK reference.
|
---|
103 | </p>
|
---|
104 | </li>
|
---|
105 | </ul>
|
---|
106 | <p>
|
---|
107 | Internally, Oracle VM VirtualBox consists of many more or less separate
|
---|
108 | components. You may encounter these when analyzing Oracle VM VirtualBox
|
---|
109 | internal error messages or log files. These include the following:
|
---|
110 | </p>
|
---|
111 | <ul>
|
---|
112 | <li>
|
---|
113 | <p>
|
---|
114 | IPRT: A portable runtime library which abstracts file access,
|
---|
115 | threading, and string manipulation. Whenever Oracle VM VirtualBox
|
---|
116 | accesses host operating features, it does so through this
|
---|
117 | library for cross-platform portability.
|
---|
118 | </p>
|
---|
119 | </li>
|
---|
120 | <li>
|
---|
121 | <p>
|
---|
122 | VMM (Virtual Machine Monitor): The heart of the hypervisor.
|
---|
123 | </p>
|
---|
124 | </li>
|
---|
125 | <li>
|
---|
126 | <p>
|
---|
127 | EM (Execution Manager): Controls execution of guest code.
|
---|
128 | </p>
|
---|
129 | </li>
|
---|
130 | <li>
|
---|
131 | <p>
|
---|
132 | TRPM (Trap Manager): Intercepts and processes guest traps and
|
---|
133 | exceptions.
|
---|
134 | </p>
|
---|
135 | </li>
|
---|
136 | <li>
|
---|
137 | <p>
|
---|
138 | HM (Hardware Acceleration Manager): Provides support for VT-x
|
---|
139 | and AMD-V.
|
---|
140 | </p>
|
---|
141 | </li>
|
---|
142 | <li>
|
---|
143 | <p>
|
---|
144 | GIM (Guest Interface Manager): Provides support for various
|
---|
145 | paravirtualization interfaces to the guest.
|
---|
146 | </p>
|
---|
147 | </li>
|
---|
148 | <li>
|
---|
149 | <p>
|
---|
150 | PDM (Pluggable Device Manager): An abstract interface between
|
---|
151 | the VMM and emulated devices which separates device
|
---|
152 | implementations from VMM internals and makes it easy to add
|
---|
153 | new emulated devices. Through PDM, third-party developers can
|
---|
154 | add new virtual devices to Oracle VM VirtualBox without having to
|
---|
155 | change Oracle VM VirtualBox itself.
|
---|
156 | </p>
|
---|
157 | </li>
|
---|
158 | <li>
|
---|
159 | <p>
|
---|
160 | PGM (Page Manager): A component that controls guest paging.
|
---|
161 | </p>
|
---|
162 | </li>
|
---|
163 | <li>
|
---|
164 | <p>
|
---|
165 | TM (Time Manager): Handles timers and all aspects of time
|
---|
166 | inside guests.
|
---|
167 | </p>
|
---|
168 | </li>
|
---|
169 | <li>
|
---|
170 | <p>
|
---|
171 | CFGM (Configuration Manager): Provides a tree structure which
|
---|
172 | holds configuration settings for the VM and all emulated
|
---|
173 | devices.
|
---|
174 | </p>
|
---|
175 | </li>
|
---|
176 | <li>
|
---|
177 | <p>
|
---|
178 | SSM (Saved State Manager): Saves and loads VM state.
|
---|
179 | </p>
|
---|
180 | </li>
|
---|
181 | <li>
|
---|
182 | <p>
|
---|
183 | VUSB (Virtual USB): A USB layer which separates emulated USB
|
---|
184 | controllers from the controllers on the host and from USB
|
---|
185 | devices. This component also enables remote USB.
|
---|
186 | </p>
|
---|
187 | </li>
|
---|
188 | <li>
|
---|
189 | <p>
|
---|
190 | DBGF (Debug Facility): A built-in VM debugger.
|
---|
191 | </p>
|
---|
192 | </li>
|
---|
193 | <li>
|
---|
194 | <p>
|
---|
195 | Oracle VM VirtualBox emulates a number of devices to provide the
|
---|
196 | hardware environment that various guests need. Most of these
|
---|
197 | are standard devices found in many PC compatible machines and
|
---|
198 | widely supported by guest operating systems. For network and
|
---|
199 | storage devices in particular, there are several options for
|
---|
200 | the emulated devices to access the underlying hardware. These
|
---|
201 | devices are managed by PDM.
|
---|
202 | </p>
|
---|
203 | </li>
|
---|
204 | <li>
|
---|
205 | <p>
|
---|
206 | Guest Additions for various guest operating systems. This is
|
---|
207 | code that is installed from within a virtual machine. See
|
---|
208 | <xref href="guestadditions.dita">Guest Additions</xref>.
|
---|
209 | </p>
|
---|
210 | </li>
|
---|
211 | <li>
|
---|
212 | <p>
|
---|
213 | The "Main" component is special. It ties all the above bits
|
---|
214 | together and is the only public API that Oracle VM VirtualBox
|
---|
215 | provides. All the client processes listed above use only this
|
---|
216 | API and never access the hypervisor components directly. As a
|
---|
217 | result, third-party applications that use the Oracle VM VirtualBox
|
---|
218 | Main API can rely on the fact that it is always well-tested
|
---|
219 | and that all capabilities of Oracle VM VirtualBox are fully exposed.
|
---|
220 | It is this API that is described in the Oracle VM VirtualBox SDK.
|
---|
221 | See <xref href="VirtualBoxAPI.dita#VirtualBoxAPI"/>.
|
---|
222 | </p>
|
---|
223 | </li>
|
---|
224 | </ul>
|
---|
225 | </body>
|
---|
226 |
|
---|
227 | </topic>
|
---|