source: postlfs/virtualization/qemu.xml@ 492ca50f

10.0 10.1 11.0 11.1 11.2 11.3 12.0 12.1 7.10 7.5 7.6 7.6-blfs 7.6-systemd 7.7 7.8 7.9 8.0 8.1 8.2 8.3 8.4 9.0 9.1 basic bdubbs/svn elogind gnome kde5-13430 kde5-14269 kde5-14686 kea ken/TL2024 ken/inkscape-core-mods ken/tuningfonts krejzi/svn lazarus lxqt nosym perl-modules plabs/newcss plabs/python-mods python3.11 qt5new rahul/power-profiles-daemon renodr/vulkan-addition systemd-11177 systemd-13485 trunk upgradedb xry111/intltool xry111/llvm18 xry111/soup3 xry111/test-20220226 xry111/xf86-video-removal
Last change on this file since 492ca50f was 492ca50f, checked in by Bruce Dubbs <bdubbs@…>, 10 years ago

Remove custom libexecdir from qemu

git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@12812 af4574ff-66df-0310-9fd7-8a98e5e911e0

  • Property mode set to 100644
File size: 14.9 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../../general.ent">
5 %general-entities;
6
7 <!ENTITY qemu-download-http "http://wiki.qemu.org/download/qemu-&qemu-version;.tar.bz2">
8 <!ENTITY qemu-download-ftp " ">
9 <!ENTITY qemu-md5sum "32893941d40d052a5e649efcf06aca06">
10 <!ENTITY qemu-size "12 MB">
11 <!ENTITY qemu-buildsize "215 MB">
12 <!ENTITY qemu-time "1.7 SBU">
13]>
14
15<sect1 id="qemu" xreflabel="qemu-&qemu-version;">
16 <?dbhtml filename="qemu.html"?>
17
18 <sect1info>
19 <othername>$LastChangedBy$</othername>
20 <date>$Date$</date>
21 </sect1info>
22
23 <title>qemu-&qemu-version;</title>
24
25 <indexterm zone="qemu">
26 <primary sortas="a-qemu">qemu</primary>
27 </indexterm>
28
29 <sect2 role="package">
30 <title>Introduction to qemu</title>
31
32 <para><application>qemu</application> is a full virtualization solution
33 for Linux on x86 hardware containing virtualization extensions (Intel VT or
34 AMD-V).</para>
35
36 &lfs75_checked;
37
38 <bridgehead renderas="sect3">Package Information</bridgehead>
39 <itemizedlist spacing="compact">
40 <listitem>
41 <para>Download (HTTP): <ulink url="&qemu-download-http;"/></para>
42 </listitem>
43 <listitem>
44 <para>Download (FTP): <ulink url="&qemu-download-ftp;"/></para>
45 </listitem>
46 <listitem>
47 <para>Download MD5 sum: &qemu-md5sum;</para>
48 </listitem>
49 <listitem>
50 <para>Download size: &qemu-size;</para>
51 </listitem>
52 <listitem>
53 <para>Estimated disk space required: &qemu-buildsize;</para>
54 </listitem>
55 <listitem>
56 <para>Estimated build time: &qemu-time;</para>
57 </listitem>
58 </itemizedlist>
59
60 <bridgehead renderas="sect3">Qemu Dependencies</bridgehead>
61
62 <bridgehead renderas="sect4">Required</bridgehead>
63 <para role="required">
64 <xref linkend="glib2"/>,
65 <xref linkend="python2"/>,
66 <xref linkend="sdl"/>, and
67 <xref linkend="x-window-system"/>
68 </para>
69
70 <bridgehead renderas="sect4">Optional</bridgehead>
71 <para role="optional">
72 <xref linkend="alsa"/>,
73 <xref linkend="attr"/>,
74 <xref linkend="check"/>,
75 <xref linkend="curl"/>,
76 <xref linkend="mesalib"/>, and
77 <xref linkend="cyrus-sasl"/>
78 </para>
79
80 <note>
81 <para>
82 This optional dependencies list is not comprehensive. See the output of
83 <command>./configure --help</command> for a more complete list.
84 </para>
85 </note>
86
87 <para condition="html" role="usernotes">User Notes:
88 <ulink url="&blfs-wiki;/qemu"/></para>
89
90 </sect2>
91
92 <sect2 id='qemu-prereq'>
93 <title>KVM Prerequisites</title>
94
95 <para>Before building <application>qemu</application>, check to see if
96 your processor supports Virtualization Technology (VT):</para>
97
98 <screen><userinput>egrep '^flags.*(vmx|svm)' /proc/cpuinfo</userinput></screen>
99
100 <para>If you get any output, you have VT technology (vmx for Intel
101 processors and svm for AMD processors). You then need to go into your
102 system BIOS and ensure it is enabled. After enabing, reboot back to your
103 LFS instance.</para>
104
105 </sect2>
106
107 <sect2 role="kernel" id='qemu-kernel'>
108 <title>Kernel Configuration</title>
109
110 <para>Enable the following options in the kernel configuration
111 and recompile the kernel if necessary:</para>
112
113<screen><literal>Virtualization: ---&gt;
114 Kernel-based Virtual Machine (KVM) support: Y or M
115 KVM for Intel processors support: Y or M
116 KVM for AMD processors support: Y or M</literal></screen>
117
118 <indexterm zone="qemu qemu-kernel">
119 <primary sortas="d-qemu">qemu</primary>
120 </indexterm>
121
122 <para>The Intel or AMD settings are not both required, but the one matching
123 your system processor is required.</para>
124
125 <para>For networking, check that <xref linkend='bridgeutils'/> is installed
126 and the following options in the kernel configuration are enabled:</para>
127
128<screen><literal>Networking support ---&gt;
129 Networking options ---&gt;
130 802.1d Ethernet Bridging: Y or M
131Device Drivers ---&gt;
132 Network device support ---&gt;
133 Universal TUN/TAP device driver support: Y or M</literal></screen>
134
135 </sect2>
136
137 <sect2 role="installation">
138 <title>Installation of qemu</title>
139
140 <para>If <application>xorg</application> is not installed in
141 <filename class='directory'>/usr</filename>, then the linker needs to
142 be told where it is. For example:</para>
143
144<screen><userinput>export LIBRARY_PATH=/opt/xorg/lib</userinput></screen>
145
146 <para>Install <application>qemu</application> by running the following
147 commands:</para>
148
149<screen><userinput>sed -e '/#include &lt;sys\/capability.h&gt;/ d' \
150 -e '/#include "virtio-9p-marshal.h"/ i#include &lt;sys\/capability.h&gt;' \
151 -i fsdev/virtfs-proxy-helper.c &amp;&amp;
152
153./configure --prefix=/usr \
154 --sysconfdir=/etc \
155 --docdir=/usr/share/doc/qemu-&qemu-version; \
156 --target-list=x86_64-softmmu &amp;&amp;
157make</userinput></screen>
158
159 <para>To run the built in tests, run <command>make V=1 check</command>.</para>
160
161 <para>Now, as the <systemitem class="username">root</systemitem> user:</para>
162
163<screen role="root"><userinput>make install &amp;&amp;
164[ -e /usr/lib/libcacard.so ] &amp;&amp; chmod -v 755 /usr/lib/libcacard.so</userinput></screen>
165
166 <para>
167 You will need a dedicated group that will contain users (other than root)
168 allowed to access the KVM device. Add the group by running the following
169 command as the <systemitem class="username">root</systemitem> user:
170 </para>
171
172<screen role="root"><userinput>groupadd -g 61 kvm</userinput></screen>
173
174 <para>
175 Add any users that might use the KVM device to that group:
176 </para>
177
178<screen role="root"><userinput>usermod -a -G kvm <replaceable>&lt;username&gt;</replaceable></userinput></screen>
179
180 <para>
181 You will also need to add a Udev rule so that the KVM device gets correct
182 permissions:
183 </para>
184
185<screen role="root"><userinput>cat > /lib/udev/rules.d/65-kvm.rules &lt;&lt; "EOF"
186<literal>KERNEL=="kvm", NAME="%k", GROUP="kvm", MODE="0660"</literal>
187EOF</userinput></screen>
188
189 <note><!--<para>The main program <command>qemu-system-x86_64</command> doesn't
190 make a distinction between i386 and x86_64 so even on an i386 system you
191 should use <emphasis>qemu-system-x86_64</emphasis></para>
192 -->
193
194 <para>For convenience you may want to create a symbolic link to run
195 <command>qemu-system-x86_64</command>:</para>
196
197 <screen><userinput>ln -sv qemu-system-x86_64 /usr/bin/qemu</userinput></screen>
198 </note>
199
200 </sect2>
201
202 <sect2 role="commands">
203 <title>Command Explanations</title>
204
205 <para><command>sed -e '/#include ... fsdev/virtfs-proxy-helper.c</command>:
206 Fixes <application>qemu-&qemu-version;</application> to build with
207 <application>libcap-&libcap-version;</application>.</para>
208
209 <para><parameter>--target-list=x86_64-softmmu</parameter>: This switch
210 limits the build target to the x86_64 architecture. For other
211 hardware emulation see the --target-list list in <command>configure</command>'s
212 help output. Omitting this option will build all architectures.</para>
213
214 <para>
215 <option>--audio-drv-list=alsa</option>: This switch sets the audio driver
216 to ALSA. For other drivers see the --audio-drv-list list in
217 <command>configure</command>'s help output. The default audio driver is
218 OSS.
219 </para>
220
221 </sect2>
222
223 <sect2 role="configuration">
224 <title>Configuring qemu</title>
225
226 <para>To generate an image, run:</para>
227
228 <screen><userinput>qemu-img create -f qcow2 vdisk.img 10G</userinput></screen>
229
230 <para>Adjust the virtual disk size and image filename as desired. The
231 actual size of the file will be less than specified, but will expand as it
232 is used.</para>
233
234 <note><para>The following instructions assume you have created the optional
235 symbolic link, <userinput>qemu</userinput>. Additionally, you must run
236 <userinput>qemu</userinput> from an X Window System based terminal.</para></note>
237
238 <para>To install an operating system, download an iso of your choice or use
239 a pre-intalled cdrom device. For the purposes of this example, use
240 Fedora 16 that is downloaded as
241 <filename>Fedora-16-x86_64-Live-LXDE.iso</filename> in the current
242 directory. Run the following:</para>
243
244<screen><userinput>qemu -enable-kvm -hda vdisk.img \
245 -cdrom Fedora-16-x86_64-Live-LXDE.iso \
246 -boot d \
247 -m 384</userinput></screen>
248
249 <para>Follow the normal installation procedures for the chosen
250 distribution. The -boot option specifies the boot order of drives as a
251 string of drive letters. Valid drive letters are: a, b (floppy 1 and 2), c
252 (first hard disk), d (first CD-ROM). The -m option is the amount of memory
253 to use for the virtual machine. If you have sufficient memory (2G or
254 more), 1G is a reasonable value. For computers with 512MB of RAM it's safe
255 to use -m 192, or even -m 128 (the default). The -enable-kvm option allows
256 for hardware acceleeration. Without this switch, the emulation is
257 relatively slow.</para>
258
259 <para>To run the newly installed operating system, run:</para>
260
261<screen><userinput>qemu -enable-kvm vdisk.img -m 384</userinput></screen>
262
263 <para>To add networking to the instance add "-net nic -net user" to the
264 command above. qemu provides a DHCP server for the VM and, depending on
265 the client system, sets up networking though the host.</para>
266
267 <para>One problem with the above networking solution is that it does not
268 provide the ability to connect with the local network. To do that, there are
269 several additional steps that need to be done, all as the <systemitem
270 class="username">root</systemitem> user:</para>
271
272 <itemizedlist spacing="compact">
273 <listitem>
274 <para>Set up bridging with <xref linkend='bridgeutils'/>.</para>
275 </listitem>
276
277 <listitem>
278 <para>Allow the host system to forward IP packets.</para>
279
280<screen><userinput>sysctl -w net.ipv4.ip_forward=1</userinput></screen>
281
282 <para>To make this permanent, add the command to
283 <filename>/etc/syssysctl.conf:</filename></para>
284
285<screen><userinput>cat &gt;&gt; /etc/sysctl.conf &lt;&lt; EOF
286net.ipv4.ip_forward=1
287EOF</userinput></screen>
288
289 </listitem>
290
291 <listitem>
292 <para>Create scripts for qemu to attach the client network
293 device, usually visible as tap0, to the host bridge.</para>
294
295<screen><userinput>cat &gt; /etc/qemu-ifup &lt;&lt; EOF
296#!/bin/bash
297
298switch=br0
299
300if [ -n "\$1" ]; then
301 # Add new tap0 interface to bridge
302 /sbin/ip link set \$1 up
303 sleep 0.5s
304 /usr/sbin/brctl addif \$switch \$1
305else
306 echo "Error: no interface specified"
307 exit 1
308fi
309
310exit 0
311EOF
312
313chmod +x /etc/qemu-ifup</userinput></screen>
314
315<screen><userinput>cat &gt; /etc/qemu-ifdown &lt;&lt; EOF
316#!/bin/bash
317
318switch=br0
319
320if [ -n "\$1" ]; then
321 # Remove tap0 interface from bridge
322 /usr/sbin/brctl delif \$switch \$1
323else
324 echo "Error: no interface specified"
325 exit 1
326fi
327
328exit 0
329EOF
330
331chmod +x /etc/qemu-ifdown</userinput></screen>
332
333 </listitem>
334 </itemizedlist>
335
336 <note><para>The backslashes in the above script are for convenience
337 for cut/paste operations. The backslashes should <emphasis>not</emphasis>
338 appear in the final scripts.</para></note>
339
340 <itemizedlist spacing="compact">
341 <listitem>
342 <para>Start qemu with "-net nic -net tap" options. </para>
343 </listitem>
344
345 <listitem>
346 <para>If a connection, such as ssh, from the local network to the
347 client VM is desired, the client should probably be configured
348 with a static IP address.</para>
349 </listitem>
350
351 </itemizedlist>
352
353 </sect2>
354
355 <sect2 role="content">
356 <title>Contents</title>
357
358 <segmentedlist>
359 <segtitle>Installed Programs</segtitle>
360 <segtitle>Installed Library</segtitle>
361 <segtitle>Installed Directories</segtitle>
362
363 <seglistitem>
364 <seg>
365 qemu-ga,
366 qemu-img,
367 qemu-io,
368 qemu-nbd,
369 qemu-system-x86_64,
370 virtfs-proxy-helper, and
371 vscclient
372 </seg>
373 <seg>libcacard.so</seg>
374 <seg>
375 /etc/qemu,
376 /usr/include/cacard,
377 /usr/lib/qemu,
378 /usr/share/qemu, and
379 /usr/share/doc/qemu-&qemu-version;
380 </seg>
381 </seglistitem>
382 </segmentedlist>
383
384 <variablelist>
385 <bridgehead renderas="sect3">Short Description</bridgehead>
386 <?dbfo list-presentation="list"?>
387 <?dbhtml list-presentation="table"?>
388
389 <varlistentry id="qemu-ga">
390 <term><command>qemu-ga</command></term>
391 <listitem>
392 <para>implements support for QMP (QEMU Monitor Protocol) commands and
393 events that terminate and originate respectively within the guest
394 using an agent built as part of QEMU.</para>
395 <indexterm zone="qemu qemu-ga">
396 <primary sortas="b-qemu-ga">qemu-ga</primary>
397 </indexterm>
398 </listitem>
399 </varlistentry>
400
401 <varlistentry id="qemu-img">
402 <term><command>qemu-img</command></term>
403 <listitem>
404 <para>provides commands to manage QEMU disk images.</para>
405 <indexterm zone="qemu qemu-img">
406 <primary sortas="b-qemu-img">qemu-img</primary>
407 </indexterm>
408 </listitem>
409 </varlistentry>
410
411 <varlistentry id="qemu-io">
412 <term><command>qemu-io</command></term>
413 <listitem>
414 <para>is a diagnostic and manipulation program for (virtual) memory
415 media. It is still at an early stage of development.</para>
416 <indexterm zone="qemu qemu-io">
417 <primary sortas="b-qemu-io">qemu-io</primary>
418 </indexterm>
419 </listitem>
420 </varlistentry>
421
422 <varlistentry id="qemu-nbd">
423 <term><command>qemu-nbd</command></term>
424 <listitem>
425 <para>exports Qemu disk images using the QEMU Disk Network Block
426 Device (NBD) protocol.</para>
427 <indexterm zone="qemu qemu-nbd">
428 <primary sortas="b-qemu-nbd">qemu-nbd</primary>
429 </indexterm>
430 </listitem>
431 </varlistentry>
432
433 <varlistentry id="qemu-system">
434 <term><command>qemu-system-x86_64</command></term>
435 <listitem>
436 <para>is the QEMU PC System emulator.</para>
437 <indexterm zone="qemu qemu-system">
438 <primary sortas="b-qemu-system">qemu-system-x86_64</primary>
439 </indexterm>
440 </listitem>
441 </varlistentry>
442
443 <varlistentry id="libcacard">
444 <term><filename class="libraryfile">libcacard.so</filename></term>
445 <listitem>
446 <para>is the Virtual Smart Card Emulator library.</para>
447 <indexterm zone="qemu libcacard">
448 <primary sortas="c-libcacard">libcacard.so</primary>
449 </indexterm>
450 </listitem>
451 </varlistentry>
452
453 </variablelist>
454
455 </sect2>
456
457</sect1>
Note: See TracBrowser for help on using the repository browser.