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