]> git.proxmox.com Git - qemu.git/blame_incremental - qemu-doc.texi
qapi: modify visitor code generation for list iteration
[qemu.git] / qemu-doc.texi
... / ...
CommitLineData
1\input texinfo @c -*- texinfo -*-
2@c %**start of header
3@setfilename qemu-doc.info
4
5@documentlanguage en
6@documentencoding UTF-8
7
8@settitle QEMU Emulator User Documentation
9@exampleindent 0
10@paragraphindent 0
11@c %**end of header
12
13@ifinfo
14@direntry
15* QEMU: (qemu-doc). The QEMU Emulator User Documentation.
16@end direntry
17@end ifinfo
18
19@iftex
20@titlepage
21@sp 7
22@center @titlefont{QEMU Emulator}
23@sp 1
24@center @titlefont{User Documentation}
25@sp 3
26@end titlepage
27@end iftex
28
29@ifnottex
30@node Top
31@top
32
33@menu
34* Introduction::
35* Installation::
36* QEMU PC System emulator::
37* QEMU System emulator for non PC targets::
38* QEMU User space emulator::
39* compilation:: Compilation from the sources
40* License::
41* Index::
42@end menu
43@end ifnottex
44
45@contents
46
47@node Introduction
48@chapter Introduction
49
50@menu
51* intro_features:: Features
52@end menu
53
54@node intro_features
55@section Features
56
57QEMU is a FAST! processor emulator using dynamic translation to
58achieve good emulation speed.
59
60QEMU has two operating modes:
61
62@itemize
63@cindex operating modes
64
65@item
66@cindex system emulation
67Full system emulation. In this mode, QEMU emulates a full system (for
68example a PC), including one or several processors and various
69peripherals. It can be used to launch different Operating Systems
70without rebooting the PC or to debug system code.
71
72@item
73@cindex user mode emulation
74User mode emulation. In this mode, QEMU can launch
75processes compiled for one CPU on another CPU. It can be used to
76launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
77to ease cross-compilation and cross-debugging.
78
79@end itemize
80
81QEMU can run without an host kernel driver and yet gives acceptable
82performance.
83
84For system emulation, the following hardware targets are supported:
85@itemize
86@cindex emulated target systems
87@cindex supported target systems
88@item PC (x86 or x86_64 processor)
89@item ISA PC (old style PC without PCI bus)
90@item PREP (PowerPC processor)
91@item G3 Beige PowerMac (PowerPC processor)
92@item Mac99 PowerMac (PowerPC processor, in progress)
93@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
94@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
95@item Malta board (32-bit and 64-bit MIPS processors)
96@item MIPS Magnum (64-bit MIPS processor)
97@item ARM Integrator/CP (ARM)
98@item ARM Versatile baseboard (ARM)
99@item ARM RealView Emulation/Platform baseboard (ARM)
100@item Spitz, Akita, Borzoi, Terrier and Tosa PDAs (PXA270 processor)
101@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
102@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
103@item Freescale MCF5208EVB (ColdFire V2).
104@item Arnewsh MCF5206 evaluation board (ColdFire V2).
105@item Palm Tungsten|E PDA (OMAP310 processor)
106@item N800 and N810 tablets (OMAP2420 processor)
107@item MusicPal (MV88W8618 ARM processor)
108@item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
109@item Siemens SX1 smartphone (OMAP310 processor)
110@item Syborg SVP base model (ARM Cortex-A8).
111@item AXIS-Devboard88 (CRISv32 ETRAX-FS).
112@item Petalogix Spartan 3aDSP1800 MMU ref design (MicroBlaze).
113@end itemize
114
115@cindex supported user mode targets
116For user emulation, x86 (32 and 64 bit), PowerPC (32 and 64 bit),
117ARM, MIPS (32 bit only), Sparc (32 and 64 bit),
118Alpha, ColdFire(m68k), CRISv32 and MicroBlaze CPUs are supported.
119
120@node Installation
121@chapter Installation
122
123If you want to compile QEMU yourself, see @ref{compilation}.
124
125@menu
126* install_linux:: Linux
127* install_windows:: Windows
128* install_mac:: Macintosh
129@end menu
130
131@node install_linux
132@section Linux
133@cindex installation (Linux)
134
135If a precompiled package is available for your distribution - you just
136have to install it. Otherwise, see @ref{compilation}.
137
138@node install_windows
139@section Windows
140@cindex installation (Windows)
141
142Download the experimental binary installer at
143@url{http://www.free.oszoo.org/@/download.html}.
144TODO (no longer available)
145
146@node install_mac
147@section Mac OS X
148
149Download the experimental binary installer at
150@url{http://www.free.oszoo.org/@/download.html}.
151TODO (no longer available)
152
153@node QEMU PC System emulator
154@chapter QEMU PC System emulator
155@cindex system emulation (PC)
156
157@menu
158* pcsys_introduction:: Introduction
159* pcsys_quickstart:: Quick Start
160* sec_invocation:: Invocation
161* pcsys_keys:: Keys
162* pcsys_monitor:: QEMU Monitor
163* disk_images:: Disk Images
164* pcsys_network:: Network emulation
165* pcsys_other_devs:: Other Devices
166* direct_linux_boot:: Direct Linux Boot
167* pcsys_usb:: USB emulation
168* vnc_security:: VNC security
169* gdb_usage:: GDB usage
170* pcsys_os_specific:: Target OS specific information
171@end menu
172
173@node pcsys_introduction
174@section Introduction
175
176@c man begin DESCRIPTION
177
178The QEMU PC System emulator simulates the
179following peripherals:
180
181@itemize @minus
182@item
183i440FX host PCI bridge and PIIX3 PCI to ISA bridge
184@item
185Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
186extensions (hardware level, including all non standard modes).
187@item
188PS/2 mouse and keyboard
189@item
1902 PCI IDE interfaces with hard disk and CD-ROM support
191@item
192Floppy disk
193@item
194PCI and ISA network adapters
195@item
196Serial ports
197@item
198Creative SoundBlaster 16 sound card
199@item
200ENSONIQ AudioPCI ES1370 sound card
201@item
202Intel 82801AA AC97 Audio compatible sound card
203@item
204Intel HD Audio Controller and HDA codec
205@item
206Adlib (OPL2) - Yamaha YM3812 compatible chip
207@item
208Gravis Ultrasound GF1 sound card
209@item
210CS4231A compatible sound card
211@item
212PCI UHCI USB controller and a virtual USB hub.
213@end itemize
214
215SMP is supported with up to 255 CPUs.
216
217Note that adlib, gus and cs4231a are only available when QEMU was
218configured with --audio-card-list option containing the name(s) of
219required card(s).
220
221QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
222VGA BIOS.
223
224QEMU uses YM3812 emulation by Tatsuyuki Satoh.
225
226QEMU uses GUS emulation (GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
227by Tibor "TS" Schütz.
228
229Not that, by default, GUS shares IRQ(7) with parallel ports and so
230qemu must be told to not have parallel ports to have working GUS
231
232@example
233qemu dos.img -soundhw gus -parallel none
234@end example
235
236Alternatively:
237@example
238qemu dos.img -device gus,irq=5
239@end example
240
241Or some other unclaimed IRQ.
242
243CS4231A is the chip used in Windows Sound System and GUSMAX products
244
245@c man end
246
247@node pcsys_quickstart
248@section Quick Start
249@cindex quick start
250
251Download and uncompress the linux image (@file{linux.img}) and type:
252
253@example
254qemu linux.img
255@end example
256
257Linux should boot and give you a prompt.
258
259@node sec_invocation
260@section Invocation
261
262@example
263@c man begin SYNOPSIS
264usage: qemu [options] [@var{disk_image}]
265@c man end
266@end example
267
268@c man begin OPTIONS
269@var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
270targets do not need a disk image.
271
272@include qemu-options.texi
273
274@c man end
275
276@node pcsys_keys
277@section Keys
278
279@c man begin OPTIONS
280
281During the graphical emulation, you can use special key combinations to change
282modes. The default key mappings are shown below, but if you use @code{-alt-grab}
283then the modifier is Ctrl-Alt-Shift (instead of Ctrl-Alt) and if you use
284@code{-ctrl-grab} then the modifier is the right Ctrl key (instead of Ctrl-Alt):
285
286@table @key
287@item Ctrl-Alt-f
288@kindex Ctrl-Alt-f
289Toggle full screen
290
291@item Ctrl-Alt-+
292@kindex Ctrl-Alt-+
293Enlarge the screen
294
295@item Ctrl-Alt--
296@kindex Ctrl-Alt--
297Shrink the screen
298
299@item Ctrl-Alt-u
300@kindex Ctrl-Alt-u
301Restore the screen's un-scaled dimensions
302
303@item Ctrl-Alt-n
304@kindex Ctrl-Alt-n
305Switch to virtual console 'n'. Standard console mappings are:
306@table @emph
307@item 1
308Target system display
309@item 2
310Monitor
311@item 3
312Serial port
313@end table
314
315@item Ctrl-Alt
316@kindex Ctrl-Alt
317Toggle mouse and keyboard grab.
318@end table
319
320@kindex Ctrl-Up
321@kindex Ctrl-Down
322@kindex Ctrl-PageUp
323@kindex Ctrl-PageDown
324In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
325@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
326
327@kindex Ctrl-a h
328During emulation, if you are using the @option{-nographic} option, use
329@key{Ctrl-a h} to get terminal commands:
330
331@table @key
332@item Ctrl-a h
333@kindex Ctrl-a h
334@item Ctrl-a ?
335@kindex Ctrl-a ?
336Print this help
337@item Ctrl-a x
338@kindex Ctrl-a x
339Exit emulator
340@item Ctrl-a s
341@kindex Ctrl-a s
342Save disk data back to file (if -snapshot)
343@item Ctrl-a t
344@kindex Ctrl-a t
345Toggle console timestamps
346@item Ctrl-a b
347@kindex Ctrl-a b
348Send break (magic sysrq in Linux)
349@item Ctrl-a c
350@kindex Ctrl-a c
351Switch between console and monitor
352@item Ctrl-a Ctrl-a
353@kindex Ctrl-a a
354Send Ctrl-a
355@end table
356@c man end
357
358@ignore
359
360@c man begin SEEALSO
361The HTML documentation of QEMU for more precise information and Linux
362user mode emulator invocation.
363@c man end
364
365@c man begin AUTHOR
366Fabrice Bellard
367@c man end
368
369@end ignore
370
371@node pcsys_monitor
372@section QEMU Monitor
373@cindex QEMU monitor
374
375The QEMU monitor is used to give complex commands to the QEMU
376emulator. You can use it to:
377
378@itemize @minus
379
380@item
381Remove or insert removable media images
382(such as CD-ROM or floppies).
383
384@item
385Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
386from a disk file.
387
388@item Inspect the VM state without an external debugger.
389
390@end itemize
391
392@subsection Commands
393
394The following commands are available:
395
396@include qemu-monitor.texi
397
398@subsection Integer expressions
399
400The monitor understands integers expressions for every integer
401argument. You can use register names to get the value of specifics
402CPU registers by prefixing them with @emph{$}.
403
404@node disk_images
405@section Disk Images
406
407Since version 0.6.1, QEMU supports many disk image formats, including
408growable disk images (their size increase as non empty sectors are
409written), compressed and encrypted disk images. Version 0.8.3 added
410the new qcow2 disk image format which is essential to support VM
411snapshots.
412
413@menu
414* disk_images_quickstart:: Quick start for disk image creation
415* disk_images_snapshot_mode:: Snapshot mode
416* vm_snapshots:: VM snapshots
417* qemu_img_invocation:: qemu-img Invocation
418* qemu_nbd_invocation:: qemu-nbd Invocation
419* host_drives:: Using host drives
420* disk_images_fat_images:: Virtual FAT disk images
421* disk_images_nbd:: NBD access
422* disk_images_sheepdog:: Sheepdog disk images
423@end menu
424
425@node disk_images_quickstart
426@subsection Quick start for disk image creation
427
428You can create a disk image with the command:
429@example
430qemu-img create myimage.img mysize
431@end example
432where @var{myimage.img} is the disk image filename and @var{mysize} is its
433size in kilobytes. You can add an @code{M} suffix to give the size in
434megabytes and a @code{G} suffix for gigabytes.
435
436See @ref{qemu_img_invocation} for more information.
437
438@node disk_images_snapshot_mode
439@subsection Snapshot mode
440
441If you use the option @option{-snapshot}, all disk images are
442considered as read only. When sectors in written, they are written in
443a temporary file created in @file{/tmp}. You can however force the
444write back to the raw disk images by using the @code{commit} monitor
445command (or @key{C-a s} in the serial console).
446
447@node vm_snapshots
448@subsection VM snapshots
449
450VM snapshots are snapshots of the complete virtual machine including
451CPU state, RAM, device state and the content of all the writable
452disks. In order to use VM snapshots, you must have at least one non
453removable and writable block device using the @code{qcow2} disk image
454format. Normally this device is the first virtual hard drive.
455
456Use the monitor command @code{savevm} to create a new VM snapshot or
457replace an existing one. A human readable name can be assigned to each
458snapshot in addition to its numerical ID.
459
460Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
461a VM snapshot. @code{info snapshots} lists the available snapshots
462with their associated information:
463
464@example
465(qemu) info snapshots
466Snapshot devices: hda
467Snapshot list (from hda):
468ID TAG VM SIZE DATE VM CLOCK
4691 start 41M 2006-08-06 12:38:02 00:00:14.954
4702 40M 2006-08-06 12:43:29 00:00:18.633
4713 msys 40M 2006-08-06 12:44:04 00:00:23.514
472@end example
473
474A VM snapshot is made of a VM state info (its size is shown in
475@code{info snapshots}) and a snapshot of every writable disk image.
476The VM state info is stored in the first @code{qcow2} non removable
477and writable block device. The disk image snapshots are stored in
478every disk image. The size of a snapshot in a disk image is difficult
479to evaluate and is not shown by @code{info snapshots} because the
480associated disk sectors are shared among all the snapshots to save
481disk space (otherwise each snapshot would need a full copy of all the
482disk images).
483
484When using the (unrelated) @code{-snapshot} option
485(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
486but they are deleted as soon as you exit QEMU.
487
488VM snapshots currently have the following known limitations:
489@itemize
490@item
491They cannot cope with removable devices if they are removed or
492inserted after a snapshot is done.
493@item
494A few device drivers still have incomplete snapshot support so their
495state is not saved or restored properly (in particular USB).
496@end itemize
497
498@node qemu_img_invocation
499@subsection @code{qemu-img} Invocation
500
501@include qemu-img.texi
502
503@node qemu_nbd_invocation
504@subsection @code{qemu-nbd} Invocation
505
506@include qemu-nbd.texi
507
508@node host_drives
509@subsection Using host drives
510
511In addition to disk image files, QEMU can directly access host
512devices. We describe here the usage for QEMU version >= 0.8.3.
513
514@subsubsection Linux
515
516On Linux, you can directly use the host device filename instead of a
517disk image filename provided you have enough privileges to access
518it. For example, use @file{/dev/cdrom} to access to the CDROM or
519@file{/dev/fd0} for the floppy.
520
521@table @code
522@item CD
523You can specify a CDROM device even if no CDROM is loaded. QEMU has
524specific code to detect CDROM insertion or removal. CDROM ejection by
525the guest OS is supported. Currently only data CDs are supported.
526@item Floppy
527You can specify a floppy device even if no floppy is loaded. Floppy
528removal is currently not detected accurately (if you change floppy
529without doing floppy access while the floppy is not loaded, the guest
530OS will think that the same floppy is loaded).
531@item Hard disks
532Hard disks can be used. Normally you must specify the whole disk
533(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
534see it as a partitioned disk. WARNING: unless you know what you do, it
535is better to only make READ-ONLY accesses to the hard disk otherwise
536you may corrupt your host data (use the @option{-snapshot} command
537line option or modify the device permissions accordingly).
538@end table
539
540@subsubsection Windows
541
542@table @code
543@item CD
544The preferred syntax is the drive letter (e.g. @file{d:}). The
545alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
546supported as an alias to the first CDROM drive.
547
548Currently there is no specific code to handle removable media, so it
549is better to use the @code{change} or @code{eject} monitor commands to
550change or eject media.
551@item Hard disks
552Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
553where @var{N} is the drive number (0 is the first hard disk).
554
555WARNING: unless you know what you do, it is better to only make
556READ-ONLY accesses to the hard disk otherwise you may corrupt your
557host data (use the @option{-snapshot} command line so that the
558modifications are written in a temporary file).
559@end table
560
561
562@subsubsection Mac OS X
563
564@file{/dev/cdrom} is an alias to the first CDROM.
565
566Currently there is no specific code to handle removable media, so it
567is better to use the @code{change} or @code{eject} monitor commands to
568change or eject media.
569
570@node disk_images_fat_images
571@subsection Virtual FAT disk images
572
573QEMU can automatically create a virtual FAT disk image from a
574directory tree. In order to use it, just type:
575
576@example
577qemu linux.img -hdb fat:/my_directory
578@end example
579
580Then you access access to all the files in the @file{/my_directory}
581directory without having to copy them in a disk image or to export
582them via SAMBA or NFS. The default access is @emph{read-only}.
583
584Floppies can be emulated with the @code{:floppy:} option:
585
586@example
587qemu linux.img -fda fat:floppy:/my_directory
588@end example
589
590A read/write support is available for testing (beta stage) with the
591@code{:rw:} option:
592
593@example
594qemu linux.img -fda fat:floppy:rw:/my_directory
595@end example
596
597What you should @emph{never} do:
598@itemize
599@item use non-ASCII filenames ;
600@item use "-snapshot" together with ":rw:" ;
601@item expect it to work when loadvm'ing ;
602@item write to the FAT directory on the host system while accessing it with the guest system.
603@end itemize
604
605@node disk_images_nbd
606@subsection NBD access
607
608QEMU can access directly to block device exported using the Network Block Device
609protocol.
610
611@example
612qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
613@end example
614
615If the NBD server is located on the same host, you can use an unix socket instead
616of an inet socket:
617
618@example
619qemu linux.img -hdb nbd:unix:/tmp/my_socket
620@end example
621
622In this case, the block device must be exported using qemu-nbd:
623
624@example
625qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
626@end example
627
628The use of qemu-nbd allows to share a disk between several guests:
629@example
630qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
631@end example
632
633and then you can use it with two guests:
634@example
635qemu linux1.img -hdb nbd:unix:/tmp/my_socket
636qemu linux2.img -hdb nbd:unix:/tmp/my_socket
637@end example
638
639If the nbd-server uses named exports (since NBD 2.9.18), you must use the
640"exportname" option:
641@example
642qemu -cdrom nbd:localhost:exportname=debian-500-ppc-netinst
643qemu -cdrom nbd:localhost:exportname=openSUSE-11.1-ppc-netinst
644@end example
645
646@node disk_images_sheepdog
647@subsection Sheepdog disk images
648
649Sheepdog is a distributed storage system for QEMU. It provides highly
650available block level storage volumes that can be attached to
651QEMU-based virtual machines.
652
653You can create a Sheepdog disk image with the command:
654@example
655qemu-img create sheepdog:@var{image} @var{size}
656@end example
657where @var{image} is the Sheepdog image name and @var{size} is its
658size.
659
660To import the existing @var{filename} to Sheepdog, you can use a
661convert command.
662@example
663qemu-img convert @var{filename} sheepdog:@var{image}
664@end example
665
666You can boot from the Sheepdog disk image with the command:
667@example
668qemu sheepdog:@var{image}
669@end example
670
671You can also create a snapshot of the Sheepdog image like qcow2.
672@example
673qemu-img snapshot -c @var{tag} sheepdog:@var{image}
674@end example
675where @var{tag} is a tag name of the newly created snapshot.
676
677To boot from the Sheepdog snapshot, specify the tag name of the
678snapshot.
679@example
680qemu sheepdog:@var{image}:@var{tag}
681@end example
682
683You can create a cloned image from the existing snapshot.
684@example
685qemu-img create -b sheepdog:@var{base}:@var{tag} sheepdog:@var{image}
686@end example
687where @var{base} is a image name of the source snapshot and @var{tag}
688is its tag name.
689
690If the Sheepdog daemon doesn't run on the local host, you need to
691specify one of the Sheepdog servers to connect to.
692@example
693qemu-img create sheepdog:@var{hostname}:@var{port}:@var{image} @var{size}
694qemu sheepdog:@var{hostname}:@var{port}:@var{image}
695@end example
696
697@node pcsys_network
698@section Network emulation
699
700QEMU can simulate several network cards (PCI or ISA cards on the PC
701target) and can connect them to an arbitrary number of Virtual Local
702Area Networks (VLANs). Host TAP devices can be connected to any QEMU
703VLAN. VLAN can be connected between separate instances of QEMU to
704simulate large networks. For simpler usage, a non privileged user mode
705network stack can replace the TAP device to have a basic network
706connection.
707
708@subsection VLANs
709
710QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
711connection between several network devices. These devices can be for
712example QEMU virtual Ethernet cards or virtual Host ethernet devices
713(TAP devices).
714
715@subsection Using TAP network interfaces
716
717This is the standard way to connect QEMU to a real network. QEMU adds
718a virtual network device on your host (called @code{tapN}), and you
719can then configure it as if it was a real ethernet card.
720
721@subsubsection Linux host
722
723As an example, you can download the @file{linux-test-xxx.tar.gz}
724archive and copy the script @file{qemu-ifup} in @file{/etc} and
725configure properly @code{sudo} so that the command @code{ifconfig}
726contained in @file{qemu-ifup} can be executed as root. You must verify
727that your host kernel supports the TAP network interfaces: the
728device @file{/dev/net/tun} must be present.
729
730See @ref{sec_invocation} to have examples of command lines using the
731TAP network interfaces.
732
733@subsubsection Windows host
734
735There is a virtual ethernet driver for Windows 2000/XP systems, called
736TAP-Win32. But it is not included in standard QEMU for Windows,
737so you will need to get it separately. It is part of OpenVPN package,
738so download OpenVPN from : @url{http://openvpn.net/}.
739
740@subsection Using the user mode network stack
741
742By using the option @option{-net user} (default configuration if no
743@option{-net} option is specified), QEMU uses a completely user mode
744network stack (you don't need root privilege to use the virtual
745network). The virtual network configuration is the following:
746
747@example
748
749 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
750 | (10.0.2.2)
751 |
752 ----> DNS server (10.0.2.3)
753 |
754 ----> SMB server (10.0.2.4)
755@end example
756
757The QEMU VM behaves as if it was behind a firewall which blocks all
758incoming connections. You can use a DHCP client to automatically
759configure the network in the QEMU VM. The DHCP server assign addresses
760to the hosts starting from 10.0.2.15.
761
762In order to check that the user mode network is working, you can ping
763the address 10.0.2.2 and verify that you got an address in the range
76410.0.2.x from the QEMU virtual DHCP server.
765
766Note that @code{ping} is not supported reliably to the internet as it
767would require root privileges. It means you can only ping the local
768router (10.0.2.2).
769
770When using the built-in TFTP server, the router is also the TFTP
771server.
772
773When using the @option{-redir} option, TCP or UDP connections can be
774redirected from the host to the guest. It allows for example to
775redirect X11, telnet or SSH connections.
776
777@subsection Connecting VLANs between QEMU instances
778
779Using the @option{-net socket} option, it is possible to make VLANs
780that span several QEMU instances. See @ref{sec_invocation} to have a
781basic example.
782
783@node pcsys_other_devs
784@section Other Devices
785
786@subsection Inter-VM Shared Memory device
787
788With KVM enabled on a Linux host, a shared memory device is available. Guests
789map a POSIX shared memory region into the guest as a PCI device that enables
790zero-copy communication to the application level of the guests. The basic
791syntax is:
792
793@example
794qemu -device ivshmem,size=<size in format accepted by -m>[,shm=<shm name>]
795@end example
796
797If desired, interrupts can be sent between guest VMs accessing the same shared
798memory region. Interrupt support requires using a shared memory server and
799using a chardev socket to connect to it. The code for the shared memory server
800is qemu.git/contrib/ivshmem-server. An example syntax when using the shared
801memory server is:
802
803@example
804qemu -device ivshmem,size=<size in format accepted by -m>[,chardev=<id>]
805 [,msi=on][,ioeventfd=on][,vectors=n][,role=peer|master]
806qemu -chardev socket,path=<path>,id=<id>
807@end example
808
809When using the server, the guest will be assigned a VM ID (>=0) that allows guests
810using the same server to communicate via interrupts. Guests can read their
811VM ID from a device register (see example code). Since receiving the shared
812memory region from the server is asynchronous, there is a (small) chance the
813guest may boot before the shared memory is attached. To allow an application
814to ensure shared memory is attached, the VM ID register will return -1 (an
815invalid VM ID) until the memory is attached. Once the shared memory is
816attached, the VM ID will return the guest's valid VM ID. With these semantics,
817the guest application can check to ensure the shared memory is attached to the
818guest before proceeding.
819
820The @option{role} argument can be set to either master or peer and will affect
821how the shared memory is migrated. With @option{role=master}, the guest will
822copy the shared memory on migration to the destination host. With
823@option{role=peer}, the guest will not be able to migrate with the device attached.
824With the @option{peer} case, the device should be detached and then reattached
825after migration using the PCI hotplug support.
826
827@node direct_linux_boot
828@section Direct Linux Boot
829
830This section explains how to launch a Linux kernel inside QEMU without
831having to make a full bootable image. It is very useful for fast Linux
832kernel testing.
833
834The syntax is:
835@example
836qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
837@end example
838
839Use @option{-kernel} to provide the Linux kernel image and
840@option{-append} to give the kernel command line arguments. The
841@option{-initrd} option can be used to provide an INITRD image.
842
843When using the direct Linux boot, a disk image for the first hard disk
844@file{hda} is required because its boot sector is used to launch the
845Linux kernel.
846
847If you do not need graphical output, you can disable it and redirect
848the virtual serial port and the QEMU monitor to the console with the
849@option{-nographic} option. The typical command line is:
850@example
851qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
852 -append "root=/dev/hda console=ttyS0" -nographic
853@end example
854
855Use @key{Ctrl-a c} to switch between the serial console and the
856monitor (@pxref{pcsys_keys}).
857
858@node pcsys_usb
859@section USB emulation
860
861QEMU emulates a PCI UHCI USB controller. You can virtually plug
862virtual USB devices or real host USB devices (experimental, works only
863on Linux hosts). Qemu will automatically create and connect virtual USB hubs
864as necessary to connect multiple USB devices.
865
866@menu
867* usb_devices::
868* host_usb_devices::
869@end menu
870@node usb_devices
871@subsection Connecting USB devices
872
873USB devices can be connected with the @option{-usbdevice} commandline option
874or the @code{usb_add} monitor command. Available devices are:
875
876@table @code
877@item mouse
878Virtual Mouse. This will override the PS/2 mouse emulation when activated.
879@item tablet
880Pointer device that uses absolute coordinates (like a touchscreen).
881This means qemu is able to report the mouse position without having
882to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
883@item disk:@var{file}
884Mass storage device based on @var{file} (@pxref{disk_images})
885@item host:@var{bus.addr}
886Pass through the host device identified by @var{bus.addr}
887(Linux only)
888@item host:@var{vendor_id:product_id}
889Pass through the host device identified by @var{vendor_id:product_id}
890(Linux only)
891@item wacom-tablet
892Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
893above but it can be used with the tslib library because in addition to touch
894coordinates it reports touch pressure.
895@item keyboard
896Standard USB keyboard. Will override the PS/2 keyboard (if present).
897@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
898Serial converter. This emulates an FTDI FT232BM chip connected to host character
899device @var{dev}. The available character devices are the same as for the
900@code{-serial} option. The @code{vendorid} and @code{productid} options can be
901used to override the default 0403:6001. For instance,
902@example
903usb_add serial:productid=FA00:tcp:192.168.0.2:4444
904@end example
905will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
906serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
907@item braille
908Braille device. This will use BrlAPI to display the braille output on a real
909or fake device.
910@item net:@var{options}
911Network adapter that supports CDC ethernet and RNDIS protocols. @var{options}
912specifies NIC options as with @code{-net nic,}@var{options} (see description).
913For instance, user-mode networking can be used with
914@example
915qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
916@end example
917Currently this cannot be used in machines that support PCI NICs.
918@item bt[:@var{hci-type}]
919Bluetooth dongle whose type is specified in the same format as with
920the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}. If
921no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
922This USB device implements the USB Transport Layer of HCI. Example
923usage:
924@example
925qemu [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
926@end example
927@end table
928
929@node host_usb_devices
930@subsection Using host USB devices on a Linux host
931
932WARNING: this is an experimental feature. QEMU will slow down when
933using it. USB devices requiring real time streaming (i.e. USB Video
934Cameras) are not supported yet.
935
936@enumerate
937@item If you use an early Linux 2.4 kernel, verify that no Linux driver
938is actually using the USB device. A simple way to do that is simply to
939disable the corresponding kernel module by renaming it from @file{mydriver.o}
940to @file{mydriver.o.disabled}.
941
942@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
943@example
944ls /proc/bus/usb
945001 devices drivers
946@end example
947
948@item Since only root can access to the USB devices directly, you can either launch QEMU as root or change the permissions of the USB devices you want to use. For testing, the following suffices:
949@example
950chown -R myuid /proc/bus/usb
951@end example
952
953@item Launch QEMU and do in the monitor:
954@example
955info usbhost
956 Device 1.2, speed 480 Mb/s
957 Class 00: USB device 1234:5678, USB DISK
958@end example
959You should see the list of the devices you can use (Never try to use
960hubs, it won't work).
961
962@item Add the device in QEMU by using:
963@example
964usb_add host:1234:5678
965@end example
966
967Normally the guest OS should report that a new USB device is
968plugged. You can use the option @option{-usbdevice} to do the same.
969
970@item Now you can try to use the host USB device in QEMU.
971
972@end enumerate
973
974When relaunching QEMU, you may have to unplug and plug again the USB
975device to make it work again (this is a bug).
976
977@node vnc_security
978@section VNC security
979
980The VNC server capability provides access to the graphical console
981of the guest VM across the network. This has a number of security
982considerations depending on the deployment scenarios.
983
984@menu
985* vnc_sec_none::
986* vnc_sec_password::
987* vnc_sec_certificate::
988* vnc_sec_certificate_verify::
989* vnc_sec_certificate_pw::
990* vnc_sec_sasl::
991* vnc_sec_certificate_sasl::
992* vnc_generate_cert::
993* vnc_setup_sasl::
994@end menu
995@node vnc_sec_none
996@subsection Without passwords
997
998The simplest VNC server setup does not include any form of authentication.
999For this setup it is recommended to restrict it to listen on a UNIX domain
1000socket only. For example
1001
1002@example
1003qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1004@end example
1005
1006This ensures that only users on local box with read/write access to that
1007path can access the VNC server. To securely access the VNC server from a
1008remote machine, a combination of netcat+ssh can be used to provide a secure
1009tunnel.
1010
1011@node vnc_sec_password
1012@subsection With passwords
1013
1014The VNC protocol has limited support for password based authentication. Since
1015the protocol limits passwords to 8 characters it should not be considered
1016to provide high security. The password can be fairly easily brute-forced by
1017a client making repeat connections. For this reason, a VNC server using password
1018authentication should be restricted to only listen on the loopback interface
1019or UNIX domain sockets. Password authentication is requested with the @code{password}
1020option, and then once QEMU is running the password is set with the monitor. Until
1021the monitor is used to set the password all clients will be rejected.
1022
1023@example
1024qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1025(qemu) change vnc password
1026Password: ********
1027(qemu)
1028@end example
1029
1030@node vnc_sec_certificate
1031@subsection With x509 certificates
1032
1033The QEMU VNC server also implements the VeNCrypt extension allowing use of
1034TLS for encryption of the session, and x509 certificates for authentication.
1035The use of x509 certificates is strongly recommended, because TLS on its
1036own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1037support provides a secure session, but no authentication. This allows any
1038client to connect, and provides an encrypted session.
1039
1040@example
1041qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1042@end example
1043
1044In the above example @code{/etc/pki/qemu} should contain at least three files,
1045@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
1046users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
1047NB the @code{server-key.pem} file should be protected with file mode 0600 to
1048only be readable by the user owning it.
1049
1050@node vnc_sec_certificate_verify
1051@subsection With x509 certificates and client verification
1052
1053Certificates can also provide a means to authenticate the client connecting.
1054The server will request that the client provide a certificate, which it will
1055then validate against the CA certificate. This is a good choice if deploying
1056in an environment with a private internal certificate authority.
1057
1058@example
1059qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1060@end example
1061
1062
1063@node vnc_sec_certificate_pw
1064@subsection With x509 certificates, client verification and passwords
1065
1066Finally, the previous method can be combined with VNC password authentication
1067to provide two layers of authentication for clients.
1068
1069@example
1070qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1071(qemu) change vnc password
1072Password: ********
1073(qemu)
1074@end example
1075
1076
1077@node vnc_sec_sasl
1078@subsection With SASL authentication
1079
1080The SASL authentication method is a VNC extension, that provides an
1081easily extendable, pluggable authentication method. This allows for
1082integration with a wide range of authentication mechanisms, such as
1083PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
1084The strength of the authentication depends on the exact mechanism
1085configured. If the chosen mechanism also provides a SSF layer, then
1086it will encrypt the datastream as well.
1087
1088Refer to the later docs on how to choose the exact SASL mechanism
1089used for authentication, but assuming use of one supporting SSF,
1090then QEMU can be launched with:
1091
1092@example
1093qemu [...OPTIONS...] -vnc :1,sasl -monitor stdio
1094@end example
1095
1096@node vnc_sec_certificate_sasl
1097@subsection With x509 certificates and SASL authentication
1098
1099If the desired SASL authentication mechanism does not supported
1100SSF layers, then it is strongly advised to run it in combination
1101with TLS and x509 certificates. This provides securely encrypted
1102data stream, avoiding risk of compromising of the security
1103credentials. This can be enabled, by combining the 'sasl' option
1104with the aforementioned TLS + x509 options:
1105
1106@example
1107qemu [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
1108@end example
1109
1110
1111@node vnc_generate_cert
1112@subsection Generating certificates for VNC
1113
1114The GNU TLS packages provides a command called @code{certtool} which can
1115be used to generate certificates and keys in PEM format. At a minimum it
1116is necessary to setup a certificate authority, and issue certificates to
1117each server. If using certificates for authentication, then each client
1118will also need to be issued a certificate. The recommendation is for the
1119server to keep its certificates in either @code{/etc/pki/qemu} or for
1120unprivileged users in @code{$HOME/.pki/qemu}.
1121
1122@menu
1123* vnc_generate_ca::
1124* vnc_generate_server::
1125* vnc_generate_client::
1126@end menu
1127@node vnc_generate_ca
1128@subsubsection Setup the Certificate Authority
1129
1130This step only needs to be performed once per organization / organizational
1131unit. First the CA needs a private key. This key must be kept VERY secret
1132and secure. If this key is compromised the entire trust chain of the certificates
1133issued with it is lost.
1134
1135@example
1136# certtool --generate-privkey > ca-key.pem
1137@end example
1138
1139A CA needs to have a public certificate. For simplicity it can be a self-signed
1140certificate, or one issue by a commercial certificate issuing authority. To
1141generate a self-signed certificate requires one core piece of information, the
1142name of the organization.
1143
1144@example
1145# cat > ca.info <<EOF
1146cn = Name of your organization
1147ca
1148cert_signing_key
1149EOF
1150# certtool --generate-self-signed \
1151 --load-privkey ca-key.pem
1152 --template ca.info \
1153 --outfile ca-cert.pem
1154@end example
1155
1156The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1157TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1158
1159@node vnc_generate_server
1160@subsubsection Issuing server certificates
1161
1162Each server (or host) needs to be issued with a key and certificate. When connecting
1163the certificate is sent to the client which validates it against the CA certificate.
1164The core piece of information for a server certificate is the hostname. This should
1165be the fully qualified hostname that the client will connect with, since the client
1166will typically also verify the hostname in the certificate. On the host holding the
1167secure CA private key:
1168
1169@example
1170# cat > server.info <<EOF
1171organization = Name of your organization
1172cn = server.foo.example.com
1173tls_www_server
1174encryption_key
1175signing_key
1176EOF
1177# certtool --generate-privkey > server-key.pem
1178# certtool --generate-certificate \
1179 --load-ca-certificate ca-cert.pem \
1180 --load-ca-privkey ca-key.pem \
1181 --load-privkey server server-key.pem \
1182 --template server.info \
1183 --outfile server-cert.pem
1184@end example
1185
1186The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1187to the server for which they were generated. The @code{server-key.pem} is security
1188sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1189
1190@node vnc_generate_client
1191@subsubsection Issuing client certificates
1192
1193If the QEMU VNC server is to use the @code{x509verify} option to validate client
1194certificates as its authentication mechanism, each client also needs to be issued
1195a certificate. The client certificate contains enough metadata to uniquely identify
1196the client, typically organization, state, city, building, etc. On the host holding
1197the secure CA private key:
1198
1199@example
1200# cat > client.info <<EOF
1201country = GB
1202state = London
1203locality = London
1204organiazation = Name of your organization
1205cn = client.foo.example.com
1206tls_www_client
1207encryption_key
1208signing_key
1209EOF
1210# certtool --generate-privkey > client-key.pem
1211# certtool --generate-certificate \
1212 --load-ca-certificate ca-cert.pem \
1213 --load-ca-privkey ca-key.pem \
1214 --load-privkey client-key.pem \
1215 --template client.info \
1216 --outfile client-cert.pem
1217@end example
1218
1219The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1220copied to the client for which they were generated.
1221
1222
1223@node vnc_setup_sasl
1224
1225@subsection Configuring SASL mechanisms
1226
1227The following documentation assumes use of the Cyrus SASL implementation on a
1228Linux host, but the principals should apply to any other SASL impl. When SASL
1229is enabled, the mechanism configuration will be loaded from system default
1230SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
1231unprivileged user, an environment variable SASL_CONF_PATH can be used
1232to make it search alternate locations for the service config.
1233
1234The default configuration might contain
1235
1236@example
1237mech_list: digest-md5
1238sasldb_path: /etc/qemu/passwd.db
1239@end example
1240
1241This says to use the 'Digest MD5' mechanism, which is similar to the HTTP
1242Digest-MD5 mechanism. The list of valid usernames & passwords is maintained
1243in the /etc/qemu/passwd.db file, and can be updated using the saslpasswd2
1244command. While this mechanism is easy to configure and use, it is not
1245considered secure by modern standards, so only suitable for developers /
1246ad-hoc testing.
1247
1248A more serious deployment might use Kerberos, which is done with the 'gssapi'
1249mechanism
1250
1251@example
1252mech_list: gssapi
1253keytab: /etc/qemu/krb5.tab
1254@end example
1255
1256For this to work the administrator of your KDC must generate a Kerberos
1257principal for the server, with a name of 'qemu/somehost.example.com@@EXAMPLE.COM'
1258replacing 'somehost.example.com' with the fully qualified host name of the
1259machine running QEMU, and 'EXAMPLE.COM' with the Kerberos Realm.
1260
1261Other configurations will be left as an exercise for the reader. It should
1262be noted that only Digest-MD5 and GSSAPI provides a SSF layer for data
1263encryption. For all other mechanisms, VNC should always be configured to
1264use TLS and x509 certificates to protect security credentials from snooping.
1265
1266@node gdb_usage
1267@section GDB usage
1268
1269QEMU has a primitive support to work with gdb, so that you can do
1270'Ctrl-C' while the virtual machine is running and inspect its state.
1271
1272In order to use gdb, launch qemu with the '-s' option. It will wait for a
1273gdb connection:
1274@example
1275> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1276 -append "root=/dev/hda"
1277Connected to host network interface: tun0
1278Waiting gdb connection on port 1234
1279@end example
1280
1281Then launch gdb on the 'vmlinux' executable:
1282@example
1283> gdb vmlinux
1284@end example
1285
1286In gdb, connect to QEMU:
1287@example
1288(gdb) target remote localhost:1234
1289@end example
1290
1291Then you can use gdb normally. For example, type 'c' to launch the kernel:
1292@example
1293(gdb) c
1294@end example
1295
1296Here are some useful tips in order to use gdb on system code:
1297
1298@enumerate
1299@item
1300Use @code{info reg} to display all the CPU registers.
1301@item
1302Use @code{x/10i $eip} to display the code at the PC position.
1303@item
1304Use @code{set architecture i8086} to dump 16 bit code. Then use
1305@code{x/10i $cs*16+$eip} to dump the code at the PC position.
1306@end enumerate
1307
1308Advanced debugging options:
1309
1310The default single stepping behavior is step with the IRQs and timer service routines off. It is set this way because when gdb executes a single step it expects to advance beyond the current instruction. With the IRQs and and timer service routines on, a single step might jump into the one of the interrupt or exception vectors instead of executing the current instruction. This means you may hit the same breakpoint a number of times before executing the instruction gdb wants to have executed. Because there are rare circumstances where you want to single step into an interrupt vector the behavior can be controlled from GDB. There are three commands you can query and set the single step behavior:
1311@table @code
1312@item maintenance packet qqemu.sstepbits
1313
1314This will display the MASK bits used to control the single stepping IE:
1315@example
1316(gdb) maintenance packet qqemu.sstepbits
1317sending: "qqemu.sstepbits"
1318received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1319@end example
1320@item maintenance packet qqemu.sstep
1321
1322This will display the current value of the mask used when single stepping IE:
1323@example
1324(gdb) maintenance packet qqemu.sstep
1325sending: "qqemu.sstep"
1326received: "0x7"
1327@end example
1328@item maintenance packet Qqemu.sstep=HEX_VALUE
1329
1330This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1331@example
1332(gdb) maintenance packet Qqemu.sstep=0x5
1333sending: "qemu.sstep=0x5"
1334received: "OK"
1335@end example
1336@end table
1337
1338@node pcsys_os_specific
1339@section Target OS specific information
1340
1341@subsection Linux
1342
1343To have access to SVGA graphic modes under X11, use the @code{vesa} or
1344the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1345color depth in the guest and the host OS.
1346
1347When using a 2.6 guest Linux kernel, you should add the option
1348@code{clock=pit} on the kernel command line because the 2.6 Linux
1349kernels make very strict real time clock checks by default that QEMU
1350cannot simulate exactly.
1351
1352When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1353not activated because QEMU is slower with this patch. The QEMU
1354Accelerator Module is also much slower in this case. Earlier Fedora
1355Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
1356patch by default. Newer kernels don't have it.
1357
1358@subsection Windows
1359
1360If you have a slow host, using Windows 95 is better as it gives the
1361best speed. Windows 2000 is also a good choice.
1362
1363@subsubsection SVGA graphic modes support
1364
1365QEMU emulates a Cirrus Logic GD5446 Video
1366card. All Windows versions starting from Windows 95 should recognize
1367and use this graphic card. For optimal performances, use 16 bit color
1368depth in the guest and the host OS.
1369
1370If you are using Windows XP as guest OS and if you want to use high
1371resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
13721280x1024x16), then you should use the VESA VBE virtual graphic card
1373(option @option{-std-vga}).
1374
1375@subsubsection CPU usage reduction
1376
1377Windows 9x does not correctly use the CPU HLT
1378instruction. The result is that it takes host CPU cycles even when
1379idle. You can install the utility from
1380@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1381problem. Note that no such tool is needed for NT, 2000 or XP.
1382
1383@subsubsection Windows 2000 disk full problem
1384
1385Windows 2000 has a bug which gives a disk full problem during its
1386installation. When installing it, use the @option{-win2k-hack} QEMU
1387option to enable a specific workaround. After Windows 2000 is
1388installed, you no longer need this option (this option slows down the
1389IDE transfers).
1390
1391@subsubsection Windows 2000 shutdown
1392
1393Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1394can. It comes from the fact that Windows 2000 does not automatically
1395use the APM driver provided by the BIOS.
1396
1397In order to correct that, do the following (thanks to Struan
1398Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1399Add/Troubleshoot a device => Add a new device & Next => No, select the
1400hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1401(again) a few times. Now the driver is installed and Windows 2000 now
1402correctly instructs QEMU to shutdown at the appropriate moment.
1403
1404@subsubsection Share a directory between Unix and Windows
1405
1406See @ref{sec_invocation} about the help of the option @option{-smb}.
1407
1408@subsubsection Windows XP security problem
1409
1410Some releases of Windows XP install correctly but give a security
1411error when booting:
1412@example
1413A problem is preventing Windows from accurately checking the
1414license for this computer. Error code: 0x800703e6.
1415@end example
1416
1417The workaround is to install a service pack for XP after a boot in safe
1418mode. Then reboot, and the problem should go away. Since there is no
1419network while in safe mode, its recommended to download the full
1420installation of SP1 or SP2 and transfer that via an ISO or using the
1421vvfat block device ("-hdb fat:directory_which_holds_the_SP").
1422
1423@subsection MS-DOS and FreeDOS
1424
1425@subsubsection CPU usage reduction
1426
1427DOS does not correctly use the CPU HLT instruction. The result is that
1428it takes host CPU cycles even when idle. You can install the utility
1429from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1430problem.
1431
1432@node QEMU System emulator for non PC targets
1433@chapter QEMU System emulator for non PC targets
1434
1435QEMU is a generic emulator and it emulates many non PC
1436machines. Most of the options are similar to the PC emulator. The
1437differences are mentioned in the following sections.
1438
1439@menu
1440* PowerPC System emulator::
1441* Sparc32 System emulator::
1442* Sparc64 System emulator::
1443* MIPS System emulator::
1444* ARM System emulator::
1445* ColdFire System emulator::
1446* Cris System emulator::
1447* Microblaze System emulator::
1448* SH4 System emulator::
1449@end menu
1450
1451@node PowerPC System emulator
1452@section PowerPC System emulator
1453@cindex system emulation (PowerPC)
1454
1455Use the executable @file{qemu-system-ppc} to simulate a complete PREP
1456or PowerMac PowerPC system.
1457
1458QEMU emulates the following PowerMac peripherals:
1459
1460@itemize @minus
1461@item
1462UniNorth or Grackle PCI Bridge
1463@item
1464PCI VGA compatible card with VESA Bochs Extensions
1465@item
14662 PMAC IDE interfaces with hard disk and CD-ROM support
1467@item
1468NE2000 PCI adapters
1469@item
1470Non Volatile RAM
1471@item
1472VIA-CUDA with ADB keyboard and mouse.
1473@end itemize
1474
1475QEMU emulates the following PREP peripherals:
1476
1477@itemize @minus
1478@item
1479PCI Bridge
1480@item
1481PCI VGA compatible card with VESA Bochs Extensions
1482@item
14832 IDE interfaces with hard disk and CD-ROM support
1484@item
1485Floppy disk
1486@item
1487NE2000 network adapters
1488@item
1489Serial port
1490@item
1491PREP Non Volatile RAM
1492@item
1493PC compatible keyboard and mouse.
1494@end itemize
1495
1496QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
1497@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
1498
1499Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
1500for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
1501v2) portable firmware implementation. The goal is to implement a 100%
1502IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
1503
1504@c man begin OPTIONS
1505
1506The following options are specific to the PowerPC emulation:
1507
1508@table @option
1509
1510@item -g @var{W}x@var{H}[x@var{DEPTH}]
1511
1512Set the initial VGA graphic mode. The default is 800x600x15.
1513
1514@item -prom-env @var{string}
1515
1516Set OpenBIOS variables in NVRAM, for example:
1517
1518@example
1519qemu-system-ppc -prom-env 'auto-boot?=false' \
1520 -prom-env 'boot-device=hd:2,\yaboot' \
1521 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1522@end example
1523
1524These variables are not used by Open Hack'Ware.
1525
1526@end table
1527
1528@c man end
1529
1530
1531More information is available at
1532@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
1533
1534@node Sparc32 System emulator
1535@section Sparc32 System emulator
1536@cindex system emulation (Sparc32)
1537
1538Use the executable @file{qemu-system-sparc} to simulate the following
1539Sun4m architecture machines:
1540@itemize @minus
1541@item
1542SPARCstation 4
1543@item
1544SPARCstation 5
1545@item
1546SPARCstation 10
1547@item
1548SPARCstation 20
1549@item
1550SPARCserver 600MP
1551@item
1552SPARCstation LX
1553@item
1554SPARCstation Voyager
1555@item
1556SPARCclassic
1557@item
1558SPARCbook
1559@end itemize
1560
1561The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1562but Linux limits the number of usable CPUs to 4.
1563
1564It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1565SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1566emulators are not usable yet.
1567
1568QEMU emulates the following sun4m/sun4c/sun4d peripherals:
1569
1570@itemize @minus
1571@item
1572IOMMU or IO-UNITs
1573@item
1574TCX Frame buffer
1575@item
1576Lance (Am7990) Ethernet
1577@item
1578Non Volatile RAM M48T02/M48T08
1579@item
1580Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1581and power/reset logic
1582@item
1583ESP SCSI controller with hard disk and CD-ROM support
1584@item
1585Floppy drive (not on SS-600MP)
1586@item
1587CS4231 sound device (only on SS-5, not working yet)
1588@end itemize
1589
1590The number of peripherals is fixed in the architecture. Maximum
1591memory size depends on the machine type, for SS-5 it is 256MB and for
1592others 2047MB.
1593
1594Since version 0.8.2, QEMU uses OpenBIOS
1595@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1596firmware implementation. The goal is to implement a 100% IEEE
15971275-1994 (referred to as Open Firmware) compliant firmware.
1598
1599A sample Linux 2.6 series kernel and ram disk image are available on
1600the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1601some kernel versions work. Please note that currently Solaris kernels
1602don't work probably due to interface issues between OpenBIOS and
1603Solaris.
1604
1605@c man begin OPTIONS
1606
1607The following options are specific to the Sparc32 emulation:
1608
1609@table @option
1610
1611@item -g @var{W}x@var{H}x[x@var{DEPTH}]
1612
1613Set the initial TCX graphic mode. The default is 1024x768x8, currently
1614the only other possible mode is 1024x768x24.
1615
1616@item -prom-env @var{string}
1617
1618Set OpenBIOS variables in NVRAM, for example:
1619
1620@example
1621qemu-system-sparc -prom-env 'auto-boot?=false' \
1622 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1623@end example
1624
1625@item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic] [|SPARCbook|SS-2|SS-1000|SS-2000]
1626
1627Set the emulated machine type. Default is SS-5.
1628
1629@end table
1630
1631@c man end
1632
1633@node Sparc64 System emulator
1634@section Sparc64 System emulator
1635@cindex system emulation (Sparc64)
1636
1637Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
1638(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
1639Niagara (T1) machine. The emulator is not usable for anything yet, but
1640it can launch some kernels.
1641
1642QEMU emulates the following peripherals:
1643
1644@itemize @minus
1645@item
1646UltraSparc IIi APB PCI Bridge
1647@item
1648PCI VGA compatible card with VESA Bochs Extensions
1649@item
1650PS/2 mouse and keyboard
1651@item
1652Non Volatile RAM M48T59
1653@item
1654PC-compatible serial ports
1655@item
16562 PCI IDE interfaces with hard disk and CD-ROM support
1657@item
1658Floppy disk
1659@end itemize
1660
1661@c man begin OPTIONS
1662
1663The following options are specific to the Sparc64 emulation:
1664
1665@table @option
1666
1667@item -prom-env @var{string}
1668
1669Set OpenBIOS variables in NVRAM, for example:
1670
1671@example
1672qemu-system-sparc64 -prom-env 'auto-boot?=false'
1673@end example
1674
1675@item -M [sun4u|sun4v|Niagara]
1676
1677Set the emulated machine type. The default is sun4u.
1678
1679@end table
1680
1681@c man end
1682
1683@node MIPS System emulator
1684@section MIPS System emulator
1685@cindex system emulation (MIPS)
1686
1687Four executables cover simulation of 32 and 64-bit MIPS systems in
1688both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
1689@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
1690Five different machine types are emulated:
1691
1692@itemize @minus
1693@item
1694A generic ISA PC-like machine "mips"
1695@item
1696The MIPS Malta prototype board "malta"
1697@item
1698An ACER Pica "pica61". This machine needs the 64-bit emulator.
1699@item
1700MIPS emulator pseudo board "mipssim"
1701@item
1702A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
1703@end itemize
1704
1705The generic emulation is supported by Debian 'Etch' and is able to
1706install Debian into a virtual disk image. The following devices are
1707emulated:
1708
1709@itemize @minus
1710@item
1711A range of MIPS CPUs, default is the 24Kf
1712@item
1713PC style serial port
1714@item
1715PC style IDE disk
1716@item
1717NE2000 network card
1718@end itemize
1719
1720The Malta emulation supports the following devices:
1721
1722@itemize @minus
1723@item
1724Core board with MIPS 24Kf CPU and Galileo system controller
1725@item
1726PIIX4 PCI/USB/SMbus controller
1727@item
1728The Multi-I/O chip's serial device
1729@item
1730PCI network cards (PCnet32 and others)
1731@item
1732Malta FPGA serial device
1733@item
1734Cirrus (default) or any other PCI VGA graphics card
1735@end itemize
1736
1737The ACER Pica emulation supports:
1738
1739@itemize @minus
1740@item
1741MIPS R4000 CPU
1742@item
1743PC-style IRQ and DMA controllers
1744@item
1745PC Keyboard
1746@item
1747IDE controller
1748@end itemize
1749
1750The mipssim pseudo board emulation provides an environment similiar
1751to what the proprietary MIPS emulator uses for running Linux.
1752It supports:
1753
1754@itemize @minus
1755@item
1756A range of MIPS CPUs, default is the 24Kf
1757@item
1758PC style serial port
1759@item
1760MIPSnet network emulation
1761@end itemize
1762
1763The MIPS Magnum R4000 emulation supports:
1764
1765@itemize @minus
1766@item
1767MIPS R4000 CPU
1768@item
1769PC-style IRQ controller
1770@item
1771PC Keyboard
1772@item
1773SCSI controller
1774@item
1775G364 framebuffer
1776@end itemize
1777
1778
1779@node ARM System emulator
1780@section ARM System emulator
1781@cindex system emulation (ARM)
1782
1783Use the executable @file{qemu-system-arm} to simulate a ARM
1784machine. The ARM Integrator/CP board is emulated with the following
1785devices:
1786
1787@itemize @minus
1788@item
1789ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
1790@item
1791Two PL011 UARTs
1792@item
1793SMC 91c111 Ethernet adapter
1794@item
1795PL110 LCD controller
1796@item
1797PL050 KMI with PS/2 keyboard and mouse.
1798@item
1799PL181 MultiMedia Card Interface with SD card.
1800@end itemize
1801
1802The ARM Versatile baseboard is emulated with the following devices:
1803
1804@itemize @minus
1805@item
1806ARM926E, ARM1136 or Cortex-A8 CPU
1807@item
1808PL190 Vectored Interrupt Controller
1809@item
1810Four PL011 UARTs
1811@item
1812SMC 91c111 Ethernet adapter
1813@item
1814PL110 LCD controller
1815@item
1816PL050 KMI with PS/2 keyboard and mouse.
1817@item
1818PCI host bridge. Note the emulated PCI bridge only provides access to
1819PCI memory space. It does not provide access to PCI IO space.
1820This means some devices (eg. ne2k_pci NIC) are not usable, and others
1821(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
1822mapped control registers.
1823@item
1824PCI OHCI USB controller.
1825@item
1826LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
1827@item
1828PL181 MultiMedia Card Interface with SD card.
1829@end itemize
1830
1831Several variants of the ARM RealView baseboard are emulated,
1832including the EB, PB-A8 and PBX-A9. Due to interactions with the
1833bootloader, only certain Linux kernel configurations work out
1834of the box on these boards.
1835
1836Kernels for the PB-A8 board should have CONFIG_REALVIEW_HIGH_PHYS_OFFSET
1837enabled in the kernel, and expect 512M RAM. Kernels for The PBX-A9 board
1838should have CONFIG_SPARSEMEM enabled, CONFIG_REALVIEW_HIGH_PHYS_OFFSET
1839disabled and expect 1024M RAM.
1840
1841The following devices are emulated:
1842
1843@itemize @minus
1844@item
1845ARM926E, ARM1136, ARM11MPCore, Cortex-A8 or Cortex-A9 MPCore CPU
1846@item
1847ARM AMBA Generic/Distributed Interrupt Controller
1848@item
1849Four PL011 UARTs
1850@item
1851SMC 91c111 or SMSC LAN9118 Ethernet adapter
1852@item
1853PL110 LCD controller
1854@item
1855PL050 KMI with PS/2 keyboard and mouse
1856@item
1857PCI host bridge
1858@item
1859PCI OHCI USB controller
1860@item
1861LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
1862@item
1863PL181 MultiMedia Card Interface with SD card.
1864@end itemize
1865
1866The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
1867and "Terrier") emulation includes the following peripherals:
1868
1869@itemize @minus
1870@item
1871Intel PXA270 System-on-chip (ARM V5TE core)
1872@item
1873NAND Flash memory
1874@item
1875IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
1876@item
1877On-chip OHCI USB controller
1878@item
1879On-chip LCD controller
1880@item
1881On-chip Real Time Clock
1882@item
1883TI ADS7846 touchscreen controller on SSP bus
1884@item
1885Maxim MAX1111 analog-digital converter on I@math{^2}C bus
1886@item
1887GPIO-connected keyboard controller and LEDs
1888@item
1889Secure Digital card connected to PXA MMC/SD host
1890@item
1891Three on-chip UARTs
1892@item
1893WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
1894@end itemize
1895
1896The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
1897following elements:
1898
1899@itemize @minus
1900@item
1901Texas Instruments OMAP310 System-on-chip (ARM 925T core)
1902@item
1903ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
1904@item
1905On-chip LCD controller
1906@item
1907On-chip Real Time Clock
1908@item
1909TI TSC2102i touchscreen controller / analog-digital converter / Audio
1910CODEC, connected through MicroWire and I@math{^2}S busses
1911@item
1912GPIO-connected matrix keypad
1913@item
1914Secure Digital card connected to OMAP MMC/SD host
1915@item
1916Three on-chip UARTs
1917@end itemize
1918
1919Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
1920emulation supports the following elements:
1921
1922@itemize @minus
1923@item
1924Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
1925@item
1926RAM and non-volatile OneNAND Flash memories
1927@item
1928Display connected to EPSON remote framebuffer chip and OMAP on-chip
1929display controller and a LS041y3 MIPI DBI-C controller
1930@item
1931TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
1932driven through SPI bus
1933@item
1934National Semiconductor LM8323-controlled qwerty keyboard driven
1935through I@math{^2}C bus
1936@item
1937Secure Digital card connected to OMAP MMC/SD host
1938@item
1939Three OMAP on-chip UARTs and on-chip STI debugging console
1940@item
1941A Bluetooth(R) transceiver and HCI connected to an UART
1942@item
1943Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
1944TUSB6010 chip - only USB host mode is supported
1945@item
1946TI TMP105 temperature sensor driven through I@math{^2}C bus
1947@item
1948TI TWL92230C power management companion with an RTC on I@math{^2}C bus
1949@item
1950Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
1951through CBUS
1952@end itemize
1953
1954The Luminary Micro Stellaris LM3S811EVB emulation includes the following
1955devices:
1956
1957@itemize @minus
1958@item
1959Cortex-M3 CPU core.
1960@item
196164k Flash and 8k SRAM.
1962@item
1963Timers, UARTs, ADC and I@math{^2}C interface.
1964@item
1965OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
1966@end itemize
1967
1968The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
1969devices:
1970
1971@itemize @minus
1972@item
1973Cortex-M3 CPU core.
1974@item
1975256k Flash and 64k SRAM.
1976@item
1977Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
1978@item
1979OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
1980@end itemize
1981
1982The Freecom MusicPal internet radio emulation includes the following
1983elements:
1984
1985@itemize @minus
1986@item
1987Marvell MV88W8618 ARM core.
1988@item
198932 MB RAM, 256 KB SRAM, 8 MB flash.
1990@item
1991Up to 2 16550 UARTs
1992@item
1993MV88W8xx8 Ethernet controller
1994@item
1995MV88W8618 audio controller, WM8750 CODEC and mixer
1996@item
1997128×64 display with brightness control
1998@item
19992 buttons, 2 navigation wheels with button function
2000@end itemize
2001
2002The Siemens SX1 models v1 and v2 (default) basic emulation.
2003The emulation includes the following elements:
2004
2005@itemize @minus
2006@item
2007Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2008@item
2009ROM and RAM memories (ROM firmware image can be loaded with -pflash)
2010V1
20111 Flash of 16MB and 1 Flash of 8MB
2012V2
20131 Flash of 32MB
2014@item
2015On-chip LCD controller
2016@item
2017On-chip Real Time Clock
2018@item
2019Secure Digital card connected to OMAP MMC/SD host
2020@item
2021Three on-chip UARTs
2022@end itemize
2023
2024The "Syborg" Symbian Virtual Platform base model includes the following
2025elements:
2026
2027@itemize @minus
2028@item
2029ARM Cortex-A8 CPU
2030@item
2031Interrupt controller
2032@item
2033Timer
2034@item
2035Real Time Clock
2036@item
2037Keyboard
2038@item
2039Framebuffer
2040@item
2041Touchscreen
2042@item
2043UARTs
2044@end itemize
2045
2046A Linux 2.6 test image is available on the QEMU web site. More
2047information is available in the QEMU mailing-list archive.
2048
2049@c man begin OPTIONS
2050
2051The following options are specific to the ARM emulation:
2052
2053@table @option
2054
2055@item -semihosting
2056Enable semihosting syscall emulation.
2057
2058On ARM this implements the "Angel" interface.
2059
2060Note that this allows guest direct access to the host filesystem,
2061so should only be used with trusted guest OS.
2062
2063@end table
2064
2065@node ColdFire System emulator
2066@section ColdFire System emulator
2067@cindex system emulation (ColdFire)
2068@cindex system emulation (M68K)
2069
2070Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
2071The emulator is able to boot a uClinux kernel.
2072
2073The M5208EVB emulation includes the following devices:
2074
2075@itemize @minus
2076@item
2077MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2078@item
2079Three Two on-chip UARTs.
2080@item
2081Fast Ethernet Controller (FEC)
2082@end itemize
2083
2084The AN5206 emulation includes the following devices:
2085
2086@itemize @minus
2087@item
2088MCF5206 ColdFire V2 Microprocessor.
2089@item
2090Two on-chip UARTs.
2091@end itemize
2092
2093@c man begin OPTIONS
2094
2095The following options are specific to the ColdFire emulation:
2096
2097@table @option
2098
2099@item -semihosting
2100Enable semihosting syscall emulation.
2101
2102On M68K this implements the "ColdFire GDB" interface used by libgloss.
2103
2104Note that this allows guest direct access to the host filesystem,
2105so should only be used with trusted guest OS.
2106
2107@end table
2108
2109@node Cris System emulator
2110@section Cris System emulator
2111@cindex system emulation (Cris)
2112
2113TODO
2114
2115@node Microblaze System emulator
2116@section Microblaze System emulator
2117@cindex system emulation (Microblaze)
2118
2119TODO
2120
2121@node SH4 System emulator
2122@section SH4 System emulator
2123@cindex system emulation (SH4)
2124
2125TODO
2126
2127@node QEMU User space emulator
2128@chapter QEMU User space emulator
2129
2130@menu
2131* Supported Operating Systems ::
2132* Linux User space emulator::
2133* Mac OS X/Darwin User space emulator ::
2134* BSD User space emulator ::
2135@end menu
2136
2137@node Supported Operating Systems
2138@section Supported Operating Systems
2139
2140The following OS are supported in user space emulation:
2141
2142@itemize @minus
2143@item
2144Linux (referred as qemu-linux-user)
2145@item
2146Mac OS X/Darwin (referred as qemu-darwin-user)
2147@item
2148BSD (referred as qemu-bsd-user)
2149@end itemize
2150
2151@node Linux User space emulator
2152@section Linux User space emulator
2153
2154@menu
2155* Quick Start::
2156* Wine launch::
2157* Command line options::
2158* Other binaries::
2159@end menu
2160
2161@node Quick Start
2162@subsection Quick Start
2163
2164In order to launch a Linux process, QEMU needs the process executable
2165itself and all the target (x86) dynamic libraries used by it.
2166
2167@itemize
2168
2169@item On x86, you can just try to launch any process by using the native
2170libraries:
2171
2172@example
2173qemu-i386 -L / /bin/ls
2174@end example
2175
2176@code{-L /} tells that the x86 dynamic linker must be searched with a
2177@file{/} prefix.
2178
2179@item Since QEMU is also a linux process, you can launch qemu with
2180qemu (NOTE: you can only do that if you compiled QEMU from the sources):
2181
2182@example
2183qemu-i386 -L / qemu-i386 -L / /bin/ls
2184@end example
2185
2186@item On non x86 CPUs, you need first to download at least an x86 glibc
2187(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
2188@code{LD_LIBRARY_PATH} is not set:
2189
2190@example
2191unset LD_LIBRARY_PATH
2192@end example
2193
2194Then you can launch the precompiled @file{ls} x86 executable:
2195
2196@example
2197qemu-i386 tests/i386/ls
2198@end example
2199You can look at @file{scripts/qemu-binfmt-conf.sh} so that
2200QEMU is automatically launched by the Linux kernel when you try to
2201launch x86 executables. It requires the @code{binfmt_misc} module in the
2202Linux kernel.
2203
2204@item The x86 version of QEMU is also included. You can try weird things such as:
2205@example
2206qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2207 /usr/local/qemu-i386/bin/ls-i386
2208@end example
2209
2210@end itemize
2211
2212@node Wine launch
2213@subsection Wine launch
2214
2215@itemize
2216
2217@item Ensure that you have a working QEMU with the x86 glibc
2218distribution (see previous section). In order to verify it, you must be
2219able to do:
2220
2221@example
2222qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2223@end example
2224
2225@item Download the binary x86 Wine install
2226(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
2227
2228@item Configure Wine on your account. Look at the provided script
2229@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
2230@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
2231
2232@item Then you can try the example @file{putty.exe}:
2233
2234@example
2235qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2236 /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
2237@end example
2238
2239@end itemize
2240
2241@node Command line options
2242@subsection Command line options
2243
2244@example
2245usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] [-B offset] [-R size] program [arguments...]
2246@end example
2247
2248@table @option
2249@item -h
2250Print the help
2251@item -L path
2252Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2253@item -s size
2254Set the x86 stack size in bytes (default=524288)
2255@item -cpu model
2256Select CPU model (-cpu ? for list and additional feature selection)
2257@item -ignore-environment
2258Start with an empty environment. Without this option,
2259the initial environment is a copy of the caller's environment.
2260@item -E @var{var}=@var{value}
2261Set environment @var{var} to @var{value}.
2262@item -U @var{var}
2263Remove @var{var} from the environment.
2264@item -B offset
2265Offset guest address by the specified number of bytes. This is useful when
2266the address region required by guest applications is reserved on the host.
2267This option is currently only supported on some hosts.
2268@item -R size
2269Pre-allocate a guest virtual address space of the given size (in bytes).
2270"G", "M", and "k" suffixes may be used when specifying the size.
2271@end table
2272
2273Debug options:
2274
2275@table @option
2276@item -d
2277Activate log (logfile=/tmp/qemu.log)
2278@item -p pagesize
2279Act as if the host page size was 'pagesize' bytes
2280@item -g port
2281Wait gdb connection to port
2282@item -singlestep
2283Run the emulation in single step mode.
2284@end table
2285
2286Environment variables:
2287
2288@table @env
2289@item QEMU_STRACE
2290Print system calls and arguments similar to the 'strace' program
2291(NOTE: the actual 'strace' program will not work because the user
2292space emulator hasn't implemented ptrace). At the moment this is
2293incomplete. All system calls that don't have a specific argument
2294format are printed with information for six arguments. Many
2295flag-style arguments don't have decoders and will show up as numbers.
2296@end table
2297
2298@node Other binaries
2299@subsection Other binaries
2300
2301@cindex user mode (Alpha)
2302@command{qemu-alpha} TODO.
2303
2304@cindex user mode (ARM)
2305@command{qemu-armeb} TODO.
2306
2307@cindex user mode (ARM)
2308@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2309binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2310configurations), and arm-uclinux bFLT format binaries.
2311
2312@cindex user mode (ColdFire)
2313@cindex user mode (M68K)
2314@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2315(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2316coldfire uClinux bFLT format binaries.
2317
2318The binary format is detected automatically.
2319
2320@cindex user mode (Cris)
2321@command{qemu-cris} TODO.
2322
2323@cindex user mode (i386)
2324@command{qemu-i386} TODO.
2325@command{qemu-x86_64} TODO.
2326
2327@cindex user mode (Microblaze)
2328@command{qemu-microblaze} TODO.
2329
2330@cindex user mode (MIPS)
2331@command{qemu-mips} TODO.
2332@command{qemu-mipsel} TODO.
2333
2334@cindex user mode (PowerPC)
2335@command{qemu-ppc64abi32} TODO.
2336@command{qemu-ppc64} TODO.
2337@command{qemu-ppc} TODO.
2338
2339@cindex user mode (SH4)
2340@command{qemu-sh4eb} TODO.
2341@command{qemu-sh4} TODO.
2342
2343@cindex user mode (SPARC)
2344@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
2345
2346@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2347(Sparc64 CPU, 32 bit ABI).
2348
2349@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2350SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2351
2352@node Mac OS X/Darwin User space emulator
2353@section Mac OS X/Darwin User space emulator
2354
2355@menu
2356* Mac OS X/Darwin Status::
2357* Mac OS X/Darwin Quick Start::
2358* Mac OS X/Darwin Command line options::
2359@end menu
2360
2361@node Mac OS X/Darwin Status
2362@subsection Mac OS X/Darwin Status
2363
2364@itemize @minus
2365@item
2366target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2367@item
2368target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2369@item
2370target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
2371@item
2372target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2373@end itemize
2374
2375[1] If you're host commpage can be executed by qemu.
2376
2377@node Mac OS X/Darwin Quick Start
2378@subsection Quick Start
2379
2380In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2381itself and all the target dynamic libraries used by it. If you don't have the FAT
2382libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2383CD or compile them by hand.
2384
2385@itemize
2386
2387@item On x86, you can just try to launch any process by using the native
2388libraries:
2389
2390@example
2391qemu-i386 /bin/ls
2392@end example
2393
2394or to run the ppc version of the executable:
2395
2396@example
2397qemu-ppc /bin/ls
2398@end example
2399
2400@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2401are installed:
2402
2403@example
2404qemu-i386 -L /opt/x86_root/ /bin/ls
2405@end example
2406
2407@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2408@file{/opt/x86_root/usr/bin/dyld}.
2409
2410@end itemize
2411
2412@node Mac OS X/Darwin Command line options
2413@subsection Command line options
2414
2415@example
2416usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
2417@end example
2418
2419@table @option
2420@item -h
2421Print the help
2422@item -L path
2423Set the library root path (default=/)
2424@item -s size
2425Set the stack size in bytes (default=524288)
2426@end table
2427
2428Debug options:
2429
2430@table @option
2431@item -d
2432Activate log (logfile=/tmp/qemu.log)
2433@item -p pagesize
2434Act as if the host page size was 'pagesize' bytes
2435@item -singlestep
2436Run the emulation in single step mode.
2437@end table
2438
2439@node BSD User space emulator
2440@section BSD User space emulator
2441
2442@menu
2443* BSD Status::
2444* BSD Quick Start::
2445* BSD Command line options::
2446@end menu
2447
2448@node BSD Status
2449@subsection BSD Status
2450
2451@itemize @minus
2452@item
2453target Sparc64 on Sparc64: Some trivial programs work.
2454@end itemize
2455
2456@node BSD Quick Start
2457@subsection Quick Start
2458
2459In order to launch a BSD process, QEMU needs the process executable
2460itself and all the target dynamic libraries used by it.
2461
2462@itemize
2463
2464@item On Sparc64, you can just try to launch any process by using the native
2465libraries:
2466
2467@example
2468qemu-sparc64 /bin/ls
2469@end example
2470
2471@end itemize
2472
2473@node BSD Command line options
2474@subsection Command line options
2475
2476@example
2477usage: qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
2478@end example
2479
2480@table @option
2481@item -h
2482Print the help
2483@item -L path
2484Set the library root path (default=/)
2485@item -s size
2486Set the stack size in bytes (default=524288)
2487@item -ignore-environment
2488Start with an empty environment. Without this option,
2489the initial environment is a copy of the caller's environment.
2490@item -E @var{var}=@var{value}
2491Set environment @var{var} to @var{value}.
2492@item -U @var{var}
2493Remove @var{var} from the environment.
2494@item -bsd type
2495Set the type of the emulated BSD Operating system. Valid values are
2496FreeBSD, NetBSD and OpenBSD (default).
2497@end table
2498
2499Debug options:
2500
2501@table @option
2502@item -d
2503Activate log (logfile=/tmp/qemu.log)
2504@item -p pagesize
2505Act as if the host page size was 'pagesize' bytes
2506@item -singlestep
2507Run the emulation in single step mode.
2508@end table
2509
2510@node compilation
2511@chapter Compilation from the sources
2512
2513@menu
2514* Linux/Unix::
2515* Windows::
2516* Cross compilation for Windows with Linux::
2517* Mac OS X::
2518* Make targets::
2519@end menu
2520
2521@node Linux/Unix
2522@section Linux/Unix
2523
2524@subsection Compilation
2525
2526First you must decompress the sources:
2527@example
2528cd /tmp
2529tar zxvf qemu-x.y.z.tar.gz
2530cd qemu-x.y.z
2531@end example
2532
2533Then you configure QEMU and build it (usually no options are needed):
2534@example
2535./configure
2536make
2537@end example
2538
2539Then type as root user:
2540@example
2541make install
2542@end example
2543to install QEMU in @file{/usr/local}.
2544
2545@node Windows
2546@section Windows
2547
2548@itemize
2549@item Install the current versions of MSYS and MinGW from
2550@url{http://www.mingw.org/}. You can find detailed installation
2551instructions in the download section and the FAQ.
2552
2553@item Download
2554the MinGW development library of SDL 1.2.x
2555(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2556@url{http://www.libsdl.org}. Unpack it in a temporary place and
2557edit the @file{sdl-config} script so that it gives the
2558correct SDL directory when invoked.
2559
2560@item Install the MinGW version of zlib and make sure
2561@file{zlib.h} and @file{libz.dll.a} are in
2562MinGW's default header and linker search paths.
2563
2564@item Extract the current version of QEMU.
2565
2566@item Start the MSYS shell (file @file{msys.bat}).
2567
2568@item Change to the QEMU directory. Launch @file{./configure} and
2569@file{make}. If you have problems using SDL, verify that
2570@file{sdl-config} can be launched from the MSYS command line.
2571
2572@item You can install QEMU in @file{Program Files/Qemu} by typing
2573@file{make install}. Don't forget to copy @file{SDL.dll} in
2574@file{Program Files/Qemu}.
2575
2576@end itemize
2577
2578@node Cross compilation for Windows with Linux
2579@section Cross compilation for Windows with Linux
2580
2581@itemize
2582@item
2583Install the MinGW cross compilation tools available at
2584@url{http://www.mingw.org/}.
2585
2586@item Download
2587the MinGW development library of SDL 1.2.x
2588(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
2589@url{http://www.libsdl.org}. Unpack it in a temporary place and
2590edit the @file{sdl-config} script so that it gives the
2591correct SDL directory when invoked. Set up the @code{PATH} environment
2592variable so that @file{sdl-config} can be launched by
2593the QEMU configuration script.
2594
2595@item Install the MinGW version of zlib and make sure
2596@file{zlib.h} and @file{libz.dll.a} are in
2597MinGW's default header and linker search paths.
2598
2599@item
2600Configure QEMU for Windows cross compilation:
2601@example
2602PATH=/usr/i686-pc-mingw32/sys-root/mingw/bin:$PATH ./configure --cross-prefix='i686-pc-mingw32-'
2603@end example
2604The example assumes @file{sdl-config} is installed under @file{/usr/i686-pc-mingw32/sys-root/mingw/bin} and
2605MinGW cross compilation tools have names like @file{i686-pc-mingw32-gcc} and @file{i686-pc-mingw32-strip}.
2606We set the @code{PATH} environment variable to ensure the MinGW version of @file{sdl-config} is used and
2607use --cross-prefix to specify the name of the cross compiler.
2608You can also use --prefix to set the Win32 install path which defaults to @file{c:/Program Files/Qemu}.
2609
2610Under Fedora Linux, you can run:
2611@example
2612yum -y install mingw32-gcc mingw32-SDL mingw32-zlib
2613@end example
2614to get a suitable cross compilation environment.
2615
2616@item You can install QEMU in the installation directory by typing
2617@code{make install}. Don't forget to copy @file{SDL.dll} and @file{zlib1.dll} into the
2618installation directory.
2619
2620@end itemize
2621
2622Wine can be used to launch the resulting qemu.exe compiled for Win32.
2623
2624@node Mac OS X
2625@section Mac OS X
2626
2627The Mac OS X patches are not fully merged in QEMU, so you should look
2628at the QEMU mailing list archive to have all the necessary
2629information.
2630
2631@node Make targets
2632@section Make targets
2633
2634@table @code
2635
2636@item make
2637@item make all
2638Make everything which is typically needed.
2639
2640@item install
2641TODO
2642
2643@item install-doc
2644TODO
2645
2646@item make clean
2647Remove most files which were built during make.
2648
2649@item make distclean
2650Remove everything which was built during make.
2651
2652@item make dvi
2653@item make html
2654@item make info
2655@item make pdf
2656Create documentation in dvi, html, info or pdf format.
2657
2658@item make cscope
2659TODO
2660
2661@item make defconfig
2662(Re-)create some build configuration files.
2663User made changes will be overwritten.
2664
2665@item tar
2666@item tarbin
2667TODO
2668
2669@end table
2670
2671@node License
2672@appendix License
2673
2674QEMU is a trademark of Fabrice Bellard.
2675
2676QEMU is released under the GNU General Public License (TODO: add link).
2677Parts of QEMU have specific licenses, see file LICENSE.
2678
2679TODO (refer to file LICENSE, include it, include the GPL?)
2680
2681@node Index
2682@appendix Index
2683@menu
2684* Concept Index::
2685* Function Index::
2686* Keystroke Index::
2687* Program Index::
2688* Data Type Index::
2689* Variable Index::
2690@end menu
2691
2692@node Concept Index
2693@section Concept Index
2694This is the main index. Should we combine all keywords in one index? TODO
2695@printindex cp
2696
2697@node Function Index
2698@section Function Index
2699This index could be used for command line options and monitor functions.
2700@printindex fn
2701
2702@node Keystroke Index
2703@section Keystroke Index
2704
2705This is a list of all keystrokes which have a special function
2706in system emulation.
2707
2708@printindex ky
2709
2710@node Program Index
2711@section Program Index
2712@printindex pg
2713
2714@node Data Type Index
2715@section Data Type Index
2716
2717This index could be used for qdev device names and options.
2718
2719@printindex tp
2720
2721@node Variable Index
2722@section Variable Index
2723@printindex vr
2724
2725@bye