blob: 68a684277b914d02a797b1c0cb946288ff3e6439 [file] [log] [blame]
bellard386405f2003-03-23 21:28:45 +00001\input texinfo @c -*- texinfo -*-
bellarddebc7062006-04-30 21:58:41 +00002@c %**start of header
3@setfilename qemu-doc.info
bellard8f40c382006-09-20 20:28:05 +00004@settitle QEMU Emulator User Documentation
bellarddebc7062006-04-30 21:58:41 +00005@exampleindent 0
6@paragraphindent 0
7@c %**end of header
bellard386405f2003-03-23 21:28:45 +00008
bellard0806e3f2003-10-01 00:15:32 +00009@iftex
bellard386405f2003-03-23 21:28:45 +000010@titlepage
11@sp 7
bellard8f40c382006-09-20 20:28:05 +000012@center @titlefont{QEMU Emulator}
bellarddebc7062006-04-30 21:58:41 +000013@sp 1
14@center @titlefont{User Documentation}
bellard386405f2003-03-23 21:28:45 +000015@sp 3
16@end titlepage
bellard0806e3f2003-10-01 00:15:32 +000017@end iftex
bellard386405f2003-03-23 21:28:45 +000018
bellarddebc7062006-04-30 21:58:41 +000019@ifnottex
20@node Top
21@top
22
23@menu
24* Introduction::
25* Installation::
26* QEMU PC System emulator::
27* QEMU System emulator for non PC targets::
bellard83195232007-02-05 19:42:07 +000028* QEMU User space emulator::
bellarddebc7062006-04-30 21:58:41 +000029* compilation:: Compilation from the sources
30* Index::
31@end menu
32@end ifnottex
33
34@contents
35
36@node Introduction
bellard386405f2003-03-23 21:28:45 +000037@chapter Introduction
38
bellarddebc7062006-04-30 21:58:41 +000039@menu
40* intro_features:: Features
41@end menu
42
43@node intro_features
bellard322d0c62003-06-15 23:29:28 +000044@section Features
bellard386405f2003-03-23 21:28:45 +000045
bellard1f673132004-04-04 15:21:17 +000046QEMU is a FAST! processor emulator using dynamic translation to
47achieve good emulation speed.
bellard1eb20522003-06-25 16:21:49 +000048
49QEMU has two operating modes:
bellard0806e3f2003-10-01 00:15:32 +000050
51@itemize @minus
52
ths5fafdf22007-09-16 21:08:06 +000053@item
bellard1f673132004-04-04 15:21:17 +000054Full system emulation. In this mode, QEMU emulates a full system (for
bellard3f9f3aa2005-12-18 20:11:37 +000055example a PC), including one or several processors and various
56peripherals. It can be used to launch different Operating Systems
57without rebooting the PC or to debug system code.
bellard1eb20522003-06-25 16:21:49 +000058
ths5fafdf22007-09-16 21:08:06 +000059@item
bellard83195232007-02-05 19:42:07 +000060User mode emulation. In this mode, QEMU can launch
61processes compiled for one CPU on another CPU. It can be used to
bellard1f673132004-04-04 15:21:17 +000062launch the Wine Windows API emulator (@url{http://www.winehq.org}) or
63to ease cross-compilation and cross-debugging.
bellard1eb20522003-06-25 16:21:49 +000064
65@end itemize
66
bellard7c3fc842005-02-10 21:46:47 +000067QEMU can run without an host kernel driver and yet gives acceptable
ths5fafdf22007-09-16 21:08:06 +000068performance.
bellard322d0c62003-06-15 23:29:28 +000069
bellard52c00a52004-04-25 21:27:03 +000070For system emulation, the following hardware targets are supported:
71@itemize
bellard9d0a8e62005-07-03 17:34:05 +000072@item PC (x86 or x86_64 processor)
bellard3f9f3aa2005-12-18 20:11:37 +000073@item ISA PC (old style PC without PCI bus)
bellard52c00a52004-04-25 21:27:03 +000074@item PREP (PowerPC processor)
aurel32d45952a2009-01-08 16:01:13 +000075@item G3 Beige PowerMac (PowerPC processor)
bellard9d0a8e62005-07-03 17:34:05 +000076@item Mac99 PowerMac (PowerPC processor, in progress)
blueswir1ee76f822007-12-28 20:59:23 +000077@item Sun4m/Sun4c/Sun4d (32-bit Sparc processor)
blueswir1c7ba2182008-07-22 07:07:34 +000078@item Sun4u/Sun4v (64-bit Sparc processor, in progress)
thsd9aedc32007-12-17 03:47:55 +000079@item Malta board (32-bit and 64-bit MIPS processors)
aurel3288cb0a02008-04-08 05:57:37 +000080@item MIPS Magnum (64-bit MIPS processor)
pbrook9ee6e8b2007-11-11 00:04:49 +000081@item ARM Integrator/CP (ARM)
82@item ARM Versatile baseboard (ARM)
83@item ARM RealView Emulation baseboard (ARM)
balrogef4c3852008-12-15 02:12:20 +000084@item Spitz, Akita, Borzoi, Terrier and Tosa PDAs (PXA270 processor)
pbrook9ee6e8b2007-11-11 00:04:49 +000085@item Luminary Micro LM3S811EVB (ARM Cortex-M3)
86@item Luminary Micro LM3S6965EVB (ARM Cortex-M3)
pbrook707e0112007-06-04 00:50:06 +000087@item Freescale MCF5208EVB (ColdFire V2).
pbrook209a4e62007-05-23 20:16:15 +000088@item Arnewsh MCF5206 evaluation board (ColdFire V2).
balrog02645922007-11-03 12:50:46 +000089@item Palm Tungsten|E PDA (OMAP310 processor)
balrogc30bb262008-05-18 13:01:40 +000090@item N800 and N810 tablets (OMAP2420 processor)
balrog57cd6e92008-05-07 12:23:32 +000091@item MusicPal (MV88W8618 ARM processor)
balrogef4c3852008-12-15 02:12:20 +000092@item Gumstix "Connex" and "Verdex" motherboards (PXA255/270).
93@item Siemens SX1 smartphone (OMAP310 processor)
Paul Brook4af39612009-05-14 23:11:09 +010094@item Syborg SVP base model (ARM Cortex-A8).
Edgar E. Iglesias48c50a62009-05-27 01:34:02 +020095@item AXIS-Devboard88 (CRISv32 ETRAX-FS).
96@item Petalogix Spartan 3aDSP1800 MMU ref design (MicroBlaze).
bellard52c00a52004-04-25 21:27:03 +000097@end itemize
bellard386405f2003-03-23 21:28:45 +000098
Edgar E. Iglesias48c50a62009-05-27 01:34:02 +020099For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64, ColdFire(m68k), CRISv32 and MicroBlaze CPUs are supported.
bellard0806e3f2003-10-01 00:15:32 +0000100
bellarddebc7062006-04-30 21:58:41 +0000101@node Installation
bellard5b9f4572003-10-28 00:49:54 +0000102@chapter Installation
103
bellard15a34c62004-07-08 21:26:26 +0000104If you want to compile QEMU yourself, see @ref{compilation}.
105
bellarddebc7062006-04-30 21:58:41 +0000106@menu
107* install_linux:: Linux
108* install_windows:: Windows
109* install_mac:: Macintosh
110@end menu
111
112@node install_linux
bellard1f673132004-04-04 15:21:17 +0000113@section Linux
114
bellard7c3fc842005-02-10 21:46:47 +0000115If a precompiled package is available for your distribution - you just
116have to install it. Otherwise, see @ref{compilation}.
bellard5b9f4572003-10-28 00:49:54 +0000117
bellarddebc7062006-04-30 21:58:41 +0000118@node install_windows
bellard1f673132004-04-04 15:21:17 +0000119@section Windows
bellard8cd0ac22004-05-12 19:09:16 +0000120
bellard15a34c62004-07-08 21:26:26 +0000121Download the experimental binary installer at
bellarddebc7062006-04-30 21:58:41 +0000122@url{http://www.free.oszoo.org/@/download.html}.
bellardd691f662003-03-24 21:58:34 +0000123
bellarddebc7062006-04-30 21:58:41 +0000124@node install_mac
bellard1f673132004-04-04 15:21:17 +0000125@section Mac OS X
bellardd691f662003-03-24 21:58:34 +0000126
bellard15a34c62004-07-08 21:26:26 +0000127Download the experimental binary installer at
bellarddebc7062006-04-30 21:58:41 +0000128@url{http://www.free.oszoo.org/@/download.html}.
bellarddf0f11a2003-05-28 00:27:57 +0000129
bellarddebc7062006-04-30 21:58:41 +0000130@node QEMU PC System emulator
bellard3f9f3aa2005-12-18 20:11:37 +0000131@chapter QEMU PC System emulator
bellard1eb20522003-06-25 16:21:49 +0000132
bellarddebc7062006-04-30 21:58:41 +0000133@menu
134* pcsys_introduction:: Introduction
135* pcsys_quickstart:: Quick Start
136* sec_invocation:: Invocation
137* pcsys_keys:: Keys
138* pcsys_monitor:: QEMU Monitor
139* disk_images:: Disk Images
140* pcsys_network:: Network emulation
141* direct_linux_boot:: Direct Linux Boot
142* pcsys_usb:: USB emulation
thsf858dca2007-08-25 01:40:37 +0000143* vnc_security:: VNC security
bellarddebc7062006-04-30 21:58:41 +0000144* gdb_usage:: GDB usage
145* pcsys_os_specific:: Target OS specific information
146@end menu
147
148@node pcsys_introduction
bellard0806e3f2003-10-01 00:15:32 +0000149@section Introduction
150
151@c man begin DESCRIPTION
152
bellard3f9f3aa2005-12-18 20:11:37 +0000153The QEMU PC System emulator simulates the
154following peripherals:
bellard0806e3f2003-10-01 00:15:32 +0000155
156@itemize @minus
ths5fafdf22007-09-16 21:08:06 +0000157@item
bellard15a34c62004-07-08 21:26:26 +0000158i440FX host PCI bridge and PIIX3 PCI to ISA bridge
bellard0806e3f2003-10-01 00:15:32 +0000159@item
bellard15a34c62004-07-08 21:26:26 +0000160Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
161extensions (hardware level, including all non standard modes).
bellard0806e3f2003-10-01 00:15:32 +0000162@item
163PS/2 mouse and keyboard
ths5fafdf22007-09-16 21:08:06 +0000164@item
bellard15a34c62004-07-08 21:26:26 +00001652 PCI IDE interfaces with hard disk and CD-ROM support
bellard1f673132004-04-04 15:21:17 +0000166@item
167Floppy disk
ths5fafdf22007-09-16 21:08:06 +0000168@item
Stefan Weil3a2eeac2009-06-06 18:05:58 +0200169PCI and ISA network adapters
bellard0806e3f2003-10-01 00:15:32 +0000170@item
bellard05d58182004-08-24 21:12:04 +0000171Serial ports
172@item
bellardc0fe3822005-11-05 18:55:28 +0000173Creative SoundBlaster 16 sound card
174@item
175ENSONIQ AudioPCI ES1370 sound card
176@item
balroge5c9a132008-01-14 04:27:55 +0000177Intel 82801AA AC97 Audio compatible sound card
178@item
bellardc0fe3822005-11-05 18:55:28 +0000179Adlib(OPL2) - Yamaha YM3812 compatible chip
bellardb389dbf2005-11-06 16:49:55 +0000180@item
balrog26463db2008-01-17 21:47:25 +0000181Gravis Ultrasound GF1 sound card
182@item
malccc53d262008-06-13 10:48:22 +0000183CS4231A compatible sound card
184@item
bellardb389dbf2005-11-06 16:49:55 +0000185PCI UHCI USB controller and a virtual USB hub.
bellard0806e3f2003-10-01 00:15:32 +0000186@end itemize
187
bellard3f9f3aa2005-12-18 20:11:37 +0000188SMP is supported with up to 255 CPUs.
189
malc1d1f8c32009-01-09 10:46:37 +0000190Note that adlib, gus and cs4231a are only available when QEMU was
191configured with --audio-card-list option containing the name(s) of
malce5178e82008-06-28 19:13:02 +0000192required card(s).
bellardc0fe3822005-11-05 18:55:28 +0000193
bellard15a34c62004-07-08 21:26:26 +0000194QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
195VGA BIOS.
196
bellardc0fe3822005-11-05 18:55:28 +0000197QEMU uses YM3812 emulation by Tatsuyuki Satoh.
198
balrog26463db2008-01-17 21:47:25 +0000199QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
200by Tibor "TS" Schütz.
balrog423d65f2008-01-14 22:09:11 +0000201
malccc53d262008-06-13 10:48:22 +0000202CS4231A is the chip used in Windows Sound System and GUSMAX products
203
bellard0806e3f2003-10-01 00:15:32 +0000204@c man end
205
bellarddebc7062006-04-30 21:58:41 +0000206@node pcsys_quickstart
bellard1eb20522003-06-25 16:21:49 +0000207@section Quick Start
208
bellard285dc332003-10-27 23:58:04 +0000209Download and uncompress the linux image (@file{linux.img}) and type:
bellard0806e3f2003-10-01 00:15:32 +0000210
211@example
bellard285dc332003-10-27 23:58:04 +0000212qemu linux.img
bellard0806e3f2003-10-01 00:15:32 +0000213@end example
214
215Linux should boot and give you a prompt.
216
bellard6cc721c2005-07-28 22:27:28 +0000217@node sec_invocation
bellard1f673132004-04-04 15:21:17 +0000218@section Invocation
219
220@example
221@c man begin SYNOPSIS
ths89dfe892007-11-21 22:38:37 +0000222usage: qemu [options] [@var{disk_image}]
bellard1f673132004-04-04 15:21:17 +0000223@c man end
224@end example
225
226@c man begin OPTIONS
blueswir1d2c639d2009-01-24 18:19:25 +0000227@var{disk_image} is a raw hard disk image for IDE hard disk 0. Some
228targets do not need a disk image.
bellard1f673132004-04-04 15:21:17 +0000229
blueswir15824d652009-03-28 06:44:27 +0000230@include qemu-options.texi
bellard1f673132004-04-04 15:21:17 +0000231
bellard3e11db92004-07-14 17:47:14 +0000232@c man end
233
bellarddebc7062006-04-30 21:58:41 +0000234@node pcsys_keys
bellard3e11db92004-07-14 17:47:14 +0000235@section Keys
236
237@c man begin OPTIONS
238
bellarda1b74fe2004-05-08 13:26:35 +0000239During the graphical emulation, you can use the following keys:
240@table @key
bellardf9859312004-10-03 14:33:10 +0000241@item Ctrl-Alt-f
bellarda1b74fe2004-05-08 13:26:35 +0000242Toggle full screen
bellarda0a821a2004-07-14 17:38:57 +0000243
bellardf9859312004-10-03 14:33:10 +0000244@item Ctrl-Alt-n
bellarda0a821a2004-07-14 17:38:57 +0000245Switch to virtual console 'n'. Standard console mappings are:
246@table @emph
247@item 1
248Target system display
249@item 2
250Monitor
251@item 3
252Serial port
bellarda1b74fe2004-05-08 13:26:35 +0000253@end table
254
bellardf9859312004-10-03 14:33:10 +0000255@item Ctrl-Alt
bellarda0a821a2004-07-14 17:38:57 +0000256Toggle mouse and keyboard grab.
257@end table
258
bellard3e11db92004-07-14 17:47:14 +0000259In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
260@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
261
bellarda0a821a2004-07-14 17:38:57 +0000262During emulation, if you are using the @option{-nographic} option, use
263@key{Ctrl-a h} to get terminal commands:
bellard1f673132004-04-04 15:21:17 +0000264
265@table @key
bellarda1b74fe2004-05-08 13:26:35 +0000266@item Ctrl-a h
blueswir1d2c639d2009-01-24 18:19:25 +0000267@item Ctrl-a ?
bellard1f673132004-04-04 15:21:17 +0000268Print this help
ths3b46e622007-09-17 08:09:54 +0000269@item Ctrl-a x
ths366dfc52006-12-11 18:35:08 +0000270Exit emulator
ths3b46e622007-09-17 08:09:54 +0000271@item Ctrl-a s
bellard1f673132004-04-04 15:21:17 +0000272Save disk data back to file (if -snapshot)
ths20d8a3e2007-02-18 17:04:49 +0000273@item Ctrl-a t
blueswir1d2c639d2009-01-24 18:19:25 +0000274Toggle console timestamps
bellarda1b74fe2004-05-08 13:26:35 +0000275@item Ctrl-a b
bellard1f673132004-04-04 15:21:17 +0000276Send break (magic sysrq in Linux)
bellarda1b74fe2004-05-08 13:26:35 +0000277@item Ctrl-a c
bellard1f673132004-04-04 15:21:17 +0000278Switch between console and monitor
bellarda1b74fe2004-05-08 13:26:35 +0000279@item Ctrl-a Ctrl-a
280Send Ctrl-a
bellard1f673132004-04-04 15:21:17 +0000281@end table
282@c man end
283
284@ignore
285
bellard1f673132004-04-04 15:21:17 +0000286@c man begin SEEALSO
287The HTML documentation of QEMU for more precise information and Linux
288user mode emulator invocation.
289@c man end
290
291@c man begin AUTHOR
292Fabrice Bellard
293@c man end
294
295@end ignore
296
bellarddebc7062006-04-30 21:58:41 +0000297@node pcsys_monitor
bellard1f673132004-04-04 15:21:17 +0000298@section QEMU Monitor
299
300The QEMU monitor is used to give complex commands to the QEMU
301emulator. You can use it to:
302
303@itemize @minus
304
305@item
thse5987522007-03-30 18:58:01 +0000306Remove or insert removable media images
ths89dfe892007-11-21 22:38:37 +0000307(such as CD-ROM or floppies).
bellard1f673132004-04-04 15:21:17 +0000308
ths5fafdf22007-09-16 21:08:06 +0000309@item
bellard1f673132004-04-04 15:21:17 +0000310Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
311from a disk file.
312
313@item Inspect the VM state without an external debugger.
314
315@end itemize
316
317@subsection Commands
318
319The following commands are available:
320
Blue Swirl23130862009-06-06 08:22:04 +0000321@include qemu-monitor.texi
bellard1f673132004-04-04 15:21:17 +0000322
323@subsection Integer expressions
324
325The monitor understands integers expressions for every integer
326argument. You can use register names to get the value of specifics
327CPU registers by prefixing them with @emph{$}.
328
329@node disk_images
330@section Disk Images
331
bellardacd935e2004-11-15 22:57:26 +0000332Since version 0.6.1, QEMU supports many disk image formats, including
333growable disk images (their size increase as non empty sectors are
bellard13a2e802006-08-06 14:50:31 +0000334written), compressed and encrypted disk images. Version 0.8.3 added
335the new qcow2 disk image format which is essential to support VM
336snapshots.
bellard1f673132004-04-04 15:21:17 +0000337
bellarddebc7062006-04-30 21:58:41 +0000338@menu
339* disk_images_quickstart:: Quick start for disk image creation
340* disk_images_snapshot_mode:: Snapshot mode
bellard13a2e802006-08-06 14:50:31 +0000341* vm_snapshots:: VM snapshots
bellarddebc7062006-04-30 21:58:41 +0000342* qemu_img_invocation:: qemu-img Invocation
ths975b0922008-07-02 21:18:00 +0000343* qemu_nbd_invocation:: qemu-nbd Invocation
bellard19cb3732006-08-19 11:45:59 +0000344* host_drives:: Using host drives
bellarddebc7062006-04-30 21:58:41 +0000345* disk_images_fat_images:: Virtual FAT disk images
ths75818252008-07-03 13:41:03 +0000346* disk_images_nbd:: NBD access
bellarddebc7062006-04-30 21:58:41 +0000347@end menu
348
349@node disk_images_quickstart
bellardacd935e2004-11-15 22:57:26 +0000350@subsection Quick start for disk image creation
351
352You can create a disk image with the command:
bellard1f673132004-04-04 15:21:17 +0000353@example
bellardacd935e2004-11-15 22:57:26 +0000354qemu-img create myimage.img mysize
bellard1f673132004-04-04 15:21:17 +0000355@end example
bellardacd935e2004-11-15 22:57:26 +0000356where @var{myimage.img} is the disk image filename and @var{mysize} is its
357size in kilobytes. You can add an @code{M} suffix to give the size in
358megabytes and a @code{G} suffix for gigabytes.
359
bellarddebc7062006-04-30 21:58:41 +0000360See @ref{qemu_img_invocation} for more information.
bellard1f673132004-04-04 15:21:17 +0000361
bellarddebc7062006-04-30 21:58:41 +0000362@node disk_images_snapshot_mode
bellard1f673132004-04-04 15:21:17 +0000363@subsection Snapshot mode
364
365If you use the option @option{-snapshot}, all disk images are
366considered as read only. When sectors in written, they are written in
367a temporary file created in @file{/tmp}. You can however force the
bellardacd935e2004-11-15 22:57:26 +0000368write back to the raw disk images by using the @code{commit} monitor
369command (or @key{C-a s} in the serial console).
bellard1f673132004-04-04 15:21:17 +0000370
bellard13a2e802006-08-06 14:50:31 +0000371@node vm_snapshots
372@subsection VM snapshots
373
374VM snapshots are snapshots of the complete virtual machine including
375CPU state, RAM, device state and the content of all the writable
376disks. In order to use VM snapshots, you must have at least one non
377removable and writable block device using the @code{qcow2} disk image
378format. Normally this device is the first virtual hard drive.
379
380Use the monitor command @code{savevm} to create a new VM snapshot or
381replace an existing one. A human readable name can be assigned to each
bellard19d36792006-08-07 21:34:34 +0000382snapshot in addition to its numerical ID.
bellard13a2e802006-08-06 14:50:31 +0000383
384Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
385a VM snapshot. @code{info snapshots} lists the available snapshots
386with their associated information:
387
388@example
389(qemu) info snapshots
390Snapshot devices: hda
391Snapshot list (from hda):
392ID TAG VM SIZE DATE VM CLOCK
3931 start 41M 2006-08-06 12:38:02 00:00:14.954
3942 40M 2006-08-06 12:43:29 00:00:18.633
3953 msys 40M 2006-08-06 12:44:04 00:00:23.514
396@end example
397
398A VM snapshot is made of a VM state info (its size is shown in
399@code{info snapshots}) and a snapshot of every writable disk image.
400The VM state info is stored in the first @code{qcow2} non removable
401and writable block device. The disk image snapshots are stored in
402every disk image. The size of a snapshot in a disk image is difficult
403to evaluate and is not shown by @code{info snapshots} because the
404associated disk sectors are shared among all the snapshots to save
bellard19d36792006-08-07 21:34:34 +0000405disk space (otherwise each snapshot would need a full copy of all the
406disk images).
bellard13a2e802006-08-06 14:50:31 +0000407
408When using the (unrelated) @code{-snapshot} option
409(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
410but they are deleted as soon as you exit QEMU.
411
412VM snapshots currently have the following known limitations:
413@itemize
ths5fafdf22007-09-16 21:08:06 +0000414@item
bellard13a2e802006-08-06 14:50:31 +0000415They cannot cope with removable devices if they are removed or
416inserted after a snapshot is done.
ths5fafdf22007-09-16 21:08:06 +0000417@item
bellard13a2e802006-08-06 14:50:31 +0000418A few device drivers still have incomplete snapshot support so their
419state is not saved or restored properly (in particular USB).
420@end itemize
421
bellardacd935e2004-11-15 22:57:26 +0000422@node qemu_img_invocation
423@subsection @code{qemu-img} Invocation
bellard1f673132004-04-04 15:21:17 +0000424
bellardacd935e2004-11-15 22:57:26 +0000425@include qemu-img.texi
bellard05efe462004-06-16 20:34:33 +0000426
ths975b0922008-07-02 21:18:00 +0000427@node qemu_nbd_invocation
428@subsection @code{qemu-nbd} Invocation
429
430@include qemu-nbd.texi
431
bellard19cb3732006-08-19 11:45:59 +0000432@node host_drives
433@subsection Using host drives
434
435In addition to disk image files, QEMU can directly access host
436devices. We describe here the usage for QEMU version >= 0.8.3.
437
438@subsubsection Linux
439
440On Linux, you can directly use the host device filename instead of a
ths4be456f2007-06-03 13:41:28 +0000441disk image filename provided you have enough privileges to access
bellard19cb3732006-08-19 11:45:59 +0000442it. For example, use @file{/dev/cdrom} to access to the CDROM or
443@file{/dev/fd0} for the floppy.
444
bellardf5420862006-08-21 20:26:44 +0000445@table @code
bellard19cb3732006-08-19 11:45:59 +0000446@item CD
447You can specify a CDROM device even if no CDROM is loaded. QEMU has
448specific code to detect CDROM insertion or removal. CDROM ejection by
449the guest OS is supported. Currently only data CDs are supported.
450@item Floppy
451You can specify a floppy device even if no floppy is loaded. Floppy
452removal is currently not detected accurately (if you change floppy
453without doing floppy access while the floppy is not loaded, the guest
454OS will think that the same floppy is loaded).
455@item Hard disks
456Hard disks can be used. Normally you must specify the whole disk
457(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
458see it as a partitioned disk. WARNING: unless you know what you do, it
459is better to only make READ-ONLY accesses to the hard disk otherwise
460you may corrupt your host data (use the @option{-snapshot} command
461line option or modify the device permissions accordingly).
462@end table
463
464@subsubsection Windows
465
bellard01781962007-01-07 22:43:30 +0000466@table @code
467@item CD
ths4be456f2007-06-03 13:41:28 +0000468The preferred syntax is the drive letter (e.g. @file{d:}). The
bellard01781962007-01-07 22:43:30 +0000469alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
470supported as an alias to the first CDROM drive.
bellard19cb3732006-08-19 11:45:59 +0000471
thse5987522007-03-30 18:58:01 +0000472Currently there is no specific code to handle removable media, so it
bellard19cb3732006-08-19 11:45:59 +0000473is better to use the @code{change} or @code{eject} monitor commands to
474change or eject media.
bellard01781962007-01-07 22:43:30 +0000475@item Hard disks
ths89dfe892007-11-21 22:38:37 +0000476Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
bellard01781962007-01-07 22:43:30 +0000477where @var{N} is the drive number (0 is the first hard disk).
478
479WARNING: unless you know what you do, it is better to only make
480READ-ONLY accesses to the hard disk otherwise you may corrupt your
481host data (use the @option{-snapshot} command line so that the
482modifications are written in a temporary file).
483@end table
484
bellard19cb3732006-08-19 11:45:59 +0000485
486@subsubsection Mac OS X
487
ths5fafdf22007-09-16 21:08:06 +0000488@file{/dev/cdrom} is an alias to the first CDROM.
bellard19cb3732006-08-19 11:45:59 +0000489
thse5987522007-03-30 18:58:01 +0000490Currently there is no specific code to handle removable media, so it
bellard19cb3732006-08-19 11:45:59 +0000491is better to use the @code{change} or @code{eject} monitor commands to
492change or eject media.
493
bellarddebc7062006-04-30 21:58:41 +0000494@node disk_images_fat_images
bellard2c6cadd2005-12-18 18:31:45 +0000495@subsection Virtual FAT disk images
496
497QEMU can automatically create a virtual FAT disk image from a
498directory tree. In order to use it, just type:
499
ths5fafdf22007-09-16 21:08:06 +0000500@example
bellard2c6cadd2005-12-18 18:31:45 +0000501qemu linux.img -hdb fat:/my_directory
502@end example
503
504Then you access access to all the files in the @file{/my_directory}
505directory without having to copy them in a disk image or to export
506them via SAMBA or NFS. The default access is @emph{read-only}.
507
508Floppies can be emulated with the @code{:floppy:} option:
509
ths5fafdf22007-09-16 21:08:06 +0000510@example
bellard2c6cadd2005-12-18 18:31:45 +0000511qemu linux.img -fda fat:floppy:/my_directory
512@end example
513
514A read/write support is available for testing (beta stage) with the
515@code{:rw:} option:
516
ths5fafdf22007-09-16 21:08:06 +0000517@example
bellard2c6cadd2005-12-18 18:31:45 +0000518qemu linux.img -fda fat:floppy:rw:/my_directory
519@end example
520
521What you should @emph{never} do:
522@itemize
523@item use non-ASCII filenames ;
524@item use "-snapshot" together with ":rw:" ;
bellard85b2c682005-12-19 22:12:34 +0000525@item expect it to work when loadvm'ing ;
526@item write to the FAT directory on the host system while accessing it with the guest system.
bellard2c6cadd2005-12-18 18:31:45 +0000527@end itemize
528
ths75818252008-07-03 13:41:03 +0000529@node disk_images_nbd
530@subsection NBD access
531
532QEMU can access directly to block device exported using the Network Block Device
533protocol.
534
535@example
536qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
537@end example
538
539If the NBD server is located on the same host, you can use an unix socket instead
540of an inet socket:
541
542@example
543qemu linux.img -hdb nbd:unix:/tmp/my_socket
544@end example
545
546In this case, the block device must be exported using qemu-nbd:
547
548@example
549qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
550@end example
551
552The use of qemu-nbd allows to share a disk between several guests:
553@example
554qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
555@end example
556
557and then you can use it with two guests:
558@example
559qemu linux1.img -hdb nbd:unix:/tmp/my_socket
560qemu linux2.img -hdb nbd:unix:/tmp/my_socket
561@end example
562
bellarddebc7062006-04-30 21:58:41 +0000563@node pcsys_network
bellard9d4fb822004-04-26 20:55:38 +0000564@section Network emulation
565
ths4be456f2007-06-03 13:41:28 +0000566QEMU can simulate several network cards (PCI or ISA cards on the PC
bellard41d03942005-11-15 23:02:53 +0000567target) and can connect them to an arbitrary number of Virtual Local
568Area Networks (VLANs). Host TAP devices can be connected to any QEMU
569VLAN. VLAN can be connected between separate instances of QEMU to
ths4be456f2007-06-03 13:41:28 +0000570simulate large networks. For simpler usage, a non privileged user mode
bellard41d03942005-11-15 23:02:53 +0000571network stack can replace the TAP device to have a basic network
572connection.
bellard9d4fb822004-04-26 20:55:38 +0000573
bellard41d03942005-11-15 23:02:53 +0000574@subsection VLANs
bellard9d4fb822004-04-26 20:55:38 +0000575
bellard41d03942005-11-15 23:02:53 +0000576QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
577connection between several network devices. These devices can be for
578example QEMU virtual Ethernet cards or virtual Host ethernet devices
579(TAP devices).
580
581@subsection Using TAP network interfaces
582
583This is the standard way to connect QEMU to a real network. QEMU adds
584a virtual network device on your host (called @code{tapN}), and you
585can then configure it as if it was a real ethernet card.
bellard9d4fb822004-04-26 20:55:38 +0000586
bellard8f40c382006-09-20 20:28:05 +0000587@subsubsection Linux host
588
bellard9d4fb822004-04-26 20:55:38 +0000589As an example, you can download the @file{linux-test-xxx.tar.gz}
590archive and copy the script @file{qemu-ifup} in @file{/etc} and
591configure properly @code{sudo} so that the command @code{ifconfig}
592contained in @file{qemu-ifup} can be executed as root. You must verify
bellard41d03942005-11-15 23:02:53 +0000593that your host kernel supports the TAP network interfaces: the
bellard9d4fb822004-04-26 20:55:38 +0000594device @file{/dev/net/tun} must be present.
595
bellardee0f4752006-08-19 16:56:18 +0000596See @ref{sec_invocation} to have examples of command lines using the
597TAP network interfaces.
bellard9d4fb822004-04-26 20:55:38 +0000598
bellard8f40c382006-09-20 20:28:05 +0000599@subsubsection Windows host
600
601There is a virtual ethernet driver for Windows 2000/XP systems, called
602TAP-Win32. But it is not included in standard QEMU for Windows,
603so you will need to get it separately. It is part of OpenVPN package,
604so download OpenVPN from : @url{http://openvpn.net/}.
605
bellard9d4fb822004-04-26 20:55:38 +0000606@subsection Using the user mode network stack
607
bellard41d03942005-11-15 23:02:53 +0000608By using the option @option{-net user} (default configuration if no
609@option{-net} option is specified), QEMU uses a completely user mode
ths4be456f2007-06-03 13:41:28 +0000610network stack (you don't need root privilege to use the virtual
bellard41d03942005-11-15 23:02:53 +0000611network). The virtual network configuration is the following:
bellard9d4fb822004-04-26 20:55:38 +0000612
613@example
614
bellard41d03942005-11-15 23:02:53 +0000615 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
616 | (10.0.2.2)
bellard9d4fb822004-04-26 20:55:38 +0000617 |
bellard2518bd02004-09-30 22:35:13 +0000618 ----> DNS server (10.0.2.3)
ths3b46e622007-09-17 08:09:54 +0000619 |
bellard2518bd02004-09-30 22:35:13 +0000620 ----> SMB server (10.0.2.4)
bellard9d4fb822004-04-26 20:55:38 +0000621@end example
622
623The QEMU VM behaves as if it was behind a firewall which blocks all
624incoming connections. You can use a DHCP client to automatically
bellard41d03942005-11-15 23:02:53 +0000625configure the network in the QEMU VM. The DHCP server assign addresses
626to the hosts starting from 10.0.2.15.
bellard9d4fb822004-04-26 20:55:38 +0000627
628In order to check that the user mode network is working, you can ping
629the address 10.0.2.2 and verify that you got an address in the range
63010.0.2.x from the QEMU virtual DHCP server.
631
bellardb415a402004-05-23 21:04:06 +0000632Note that @code{ping} is not supported reliably to the internet as it
ths4be456f2007-06-03 13:41:28 +0000633would require root privileges. It means you can only ping the local
bellardb415a402004-05-23 21:04:06 +0000634router (10.0.2.2).
635
bellard9bf05442004-08-25 22:12:49 +0000636When using the built-in TFTP server, the router is also the TFTP
637server.
638
639When using the @option{-redir} option, TCP or UDP connections can be
640redirected from the host to the guest. It allows for example to
641redirect X11, telnet or SSH connections.
bellard443f1372004-06-04 11:13:20 +0000642
bellard41d03942005-11-15 23:02:53 +0000643@subsection Connecting VLANs between QEMU instances
644
645Using the @option{-net socket} option, it is possible to make VLANs
646that span several QEMU instances. See @ref{sec_invocation} to have a
647basic example.
648
bellard9d4fb822004-04-26 20:55:38 +0000649@node direct_linux_boot
650@section Direct Linux Boot
bellard0806e3f2003-10-01 00:15:32 +0000651
652This section explains how to launch a Linux kernel inside QEMU without
653having to make a full bootable image. It is very useful for fast Linux
bellardee0f4752006-08-19 16:56:18 +0000654kernel testing.
bellard1eb20522003-06-25 16:21:49 +0000655
bellardee0f4752006-08-19 16:56:18 +0000656The syntax is:
bellard1eb20522003-06-25 16:21:49 +0000657@example
bellardee0f4752006-08-19 16:56:18 +0000658qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
bellard1eb20522003-06-25 16:21:49 +0000659@end example
660
bellardee0f4752006-08-19 16:56:18 +0000661Use @option{-kernel} to provide the Linux kernel image and
662@option{-append} to give the kernel command line arguments. The
663@option{-initrd} option can be used to provide an INITRD image.
664
665When using the direct Linux boot, a disk image for the first hard disk
666@file{hda} is required because its boot sector is used to launch the
667Linux kernel.
668
669If you do not need graphical output, you can disable it and redirect
670the virtual serial port and the QEMU monitor to the console with the
671@option{-nographic} option. The typical command line is:
bellard1eb20522003-06-25 16:21:49 +0000672@example
bellardee0f4752006-08-19 16:56:18 +0000673qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
674 -append "root=/dev/hda console=ttyS0" -nographic
bellard1eb20522003-06-25 16:21:49 +0000675@end example
676
bellardee0f4752006-08-19 16:56:18 +0000677Use @key{Ctrl-a c} to switch between the serial console and the
678monitor (@pxref{pcsys_keys}).
bellardd5a0b502003-06-27 12:02:03 +0000679
bellarddebc7062006-04-30 21:58:41 +0000680@node pcsys_usb
bellardb389dbf2005-11-06 16:49:55 +0000681@section USB emulation
682
pbrook0aff66b2006-05-26 00:49:52 +0000683QEMU emulates a PCI UHCI USB controller. You can virtually plug
684virtual USB devices or real host USB devices (experimental, works only
685on Linux hosts). Qemu will automatically create and connect virtual USB hubs
bellardf5420862006-08-21 20:26:44 +0000686as necessary to connect multiple USB devices.
bellardb389dbf2005-11-06 16:49:55 +0000687
pbrook0aff66b2006-05-26 00:49:52 +0000688@menu
689* usb_devices::
690* host_usb_devices::
691@end menu
692@node usb_devices
693@subsection Connecting USB devices
bellardb389dbf2005-11-06 16:49:55 +0000694
pbrook0aff66b2006-05-26 00:49:52 +0000695USB devices can be connected with the @option{-usbdevice} commandline option
696or the @code{usb_add} monitor command. Available devices are:
bellardb389dbf2005-11-06 16:49:55 +0000697
balrogdb380c02008-01-17 22:22:45 +0000698@table @code
699@item mouse
pbrook0aff66b2006-05-26 00:49:52 +0000700Virtual Mouse. This will override the PS/2 mouse emulation when activated.
balrogdb380c02008-01-17 22:22:45 +0000701@item tablet
bellardc6d46c22006-09-03 17:10:41 +0000702Pointer device that uses absolute coordinates (like a touchscreen).
pbrook0aff66b2006-05-26 00:49:52 +0000703This means qemu is able to report the mouse position without having
704to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
balrogdb380c02008-01-17 22:22:45 +0000705@item disk:@var{file}
pbrook0aff66b2006-05-26 00:49:52 +0000706Mass storage device based on @var{file} (@pxref{disk_images})
balrogdb380c02008-01-17 22:22:45 +0000707@item host:@var{bus.addr}
pbrook0aff66b2006-05-26 00:49:52 +0000708Pass through the host device identified by @var{bus.addr}
709(Linux only)
balrogdb380c02008-01-17 22:22:45 +0000710@item host:@var{vendor_id:product_id}
pbrook0aff66b2006-05-26 00:49:52 +0000711Pass through the host device identified by @var{vendor_id:product_id}
712(Linux only)
balrogdb380c02008-01-17 22:22:45 +0000713@item wacom-tablet
balrogf6d2a312007-06-10 19:21:04 +0000714Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
715above but it can be used with the tslib library because in addition to touch
716coordinates it reports touch pressure.
balrogdb380c02008-01-17 22:22:45 +0000717@item keyboard
balrog47b2d332007-06-22 08:16:00 +0000718Standard USB keyboard. Will override the PS/2 keyboard (if present).
balrogdb380c02008-01-17 22:22:45 +0000719@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
720Serial converter. This emulates an FTDI FT232BM chip connected to host character
721device @var{dev}. The available character devices are the same as for the
722@code{-serial} option. The @code{vendorid} and @code{productid} options can be
balroga11d0702008-01-19 13:00:43 +0000723used to override the default 0403:6001. For instance,
balrogdb380c02008-01-17 22:22:45 +0000724@example
725usb_add serial:productid=FA00:tcp:192.168.0.2:4444
726@end example
727will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
728serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
aurel322e4d9fb2008-04-08 06:01:02 +0000729@item braille
730Braille device. This will use BrlAPI to display the braille output on a real
731or fake device.
balrog9ad97e62008-07-29 13:16:31 +0000732@item net:@var{options}
733Network adapter that supports CDC ethernet and RNDIS protocols. @var{options}
734specifies NIC options as with @code{-net nic,}@var{options} (see description).
735For instance, user-mode networking can be used with
balrog6c9f8862008-07-17 20:47:13 +0000736@example
balrog9ad97e62008-07-29 13:16:31 +0000737qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
balrog6c9f8862008-07-17 20:47:13 +0000738@end example
739Currently this cannot be used in machines that support PCI NICs.
balrog2d564692008-11-09 02:24:54 +0000740@item bt[:@var{hci-type}]
741Bluetooth dongle whose type is specified in the same format as with
742the @option{-bt hci} option, @pxref{bt-hcis,,allowed HCI types}. If
743no type is given, the HCI logic corresponds to @code{-bt hci,vlan=0}.
744This USB device implements the USB Transport Layer of HCI. Example
745usage:
746@example
747qemu [...OPTIONS...] -usbdevice bt:hci,vlan=3 -bt device:keyboard,vlan=3
748@end example
pbrook0aff66b2006-05-26 00:49:52 +0000749@end table
bellardb389dbf2005-11-06 16:49:55 +0000750
pbrook0aff66b2006-05-26 00:49:52 +0000751@node host_usb_devices
bellardb389dbf2005-11-06 16:49:55 +0000752@subsection Using host USB devices on a Linux host
753
754WARNING: this is an experimental feature. QEMU will slow down when
755using it. USB devices requiring real time streaming (i.e. USB Video
756Cameras) are not supported yet.
757
758@enumerate
ths5fafdf22007-09-16 21:08:06 +0000759@item If you use an early Linux 2.4 kernel, verify that no Linux driver
bellardb389dbf2005-11-06 16:49:55 +0000760is actually using the USB device. A simple way to do that is simply to
761disable the corresponding kernel module by renaming it from @file{mydriver.o}
762to @file{mydriver.o.disabled}.
763
764@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
765@example
766ls /proc/bus/usb
767001 devices drivers
768@end example
769
770@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:
771@example
772chown -R myuid /proc/bus/usb
773@end example
774
775@item Launch QEMU and do in the monitor:
ths5fafdf22007-09-16 21:08:06 +0000776@example
bellardb389dbf2005-11-06 16:49:55 +0000777info usbhost
778 Device 1.2, speed 480 Mb/s
779 Class 00: USB device 1234:5678, USB DISK
780@end example
781You should see the list of the devices you can use (Never try to use
782hubs, it won't work).
783
784@item Add the device in QEMU by using:
ths5fafdf22007-09-16 21:08:06 +0000785@example
bellardb389dbf2005-11-06 16:49:55 +0000786usb_add host:1234:5678
787@end example
788
789Normally the guest OS should report that a new USB device is
790plugged. You can use the option @option{-usbdevice} to do the same.
791
792@item Now you can try to use the host USB device in QEMU.
793
794@end enumerate
795
796When relaunching QEMU, you may have to unplug and plug again the USB
797device to make it work again (this is a bug).
798
thsf858dca2007-08-25 01:40:37 +0000799@node vnc_security
800@section VNC security
801
802The VNC server capability provides access to the graphical console
803of the guest VM across the network. This has a number of security
804considerations depending on the deployment scenarios.
805
806@menu
807* vnc_sec_none::
808* vnc_sec_password::
809* vnc_sec_certificate::
810* vnc_sec_certificate_verify::
811* vnc_sec_certificate_pw::
aliguori2f9606b2009-03-06 20:27:28 +0000812* vnc_sec_sasl::
813* vnc_sec_certificate_sasl::
thsf858dca2007-08-25 01:40:37 +0000814* vnc_generate_cert::
aliguori2f9606b2009-03-06 20:27:28 +0000815* vnc_setup_sasl::
thsf858dca2007-08-25 01:40:37 +0000816@end menu
817@node vnc_sec_none
818@subsection Without passwords
819
820The simplest VNC server setup does not include any form of authentication.
821For this setup it is recommended to restrict it to listen on a UNIX domain
822socket only. For example
823
824@example
825qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
826@end example
827
828This ensures that only users on local box with read/write access to that
829path can access the VNC server. To securely access the VNC server from a
830remote machine, a combination of netcat+ssh can be used to provide a secure
831tunnel.
832
833@node vnc_sec_password
834@subsection With passwords
835
836The VNC protocol has limited support for password based authentication. Since
837the protocol limits passwords to 8 characters it should not be considered
838to provide high security. The password can be fairly easily brute-forced by
839a client making repeat connections. For this reason, a VNC server using password
840authentication should be restricted to only listen on the loopback interface
blueswir134a3d232008-10-04 20:43:39 +0000841or UNIX domain sockets. Password authentication is requested with the @code{password}
thsf858dca2007-08-25 01:40:37 +0000842option, and then once QEMU is running the password is set with the monitor. Until
843the monitor is used to set the password all clients will be rejected.
844
845@example
846qemu [...OPTIONS...] -vnc :1,password -monitor stdio
847(qemu) change vnc password
848Password: ********
849(qemu)
850@end example
851
852@node vnc_sec_certificate
853@subsection With x509 certificates
854
855The QEMU VNC server also implements the VeNCrypt extension allowing use of
856TLS for encryption of the session, and x509 certificates for authentication.
857The use of x509 certificates is strongly recommended, because TLS on its
858own is susceptible to man-in-the-middle attacks. Basic x509 certificate
859support provides a secure session, but no authentication. This allows any
860client to connect, and provides an encrypted session.
861
862@example
863qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
864@end example
865
866In the above example @code{/etc/pki/qemu} should contain at least three files,
867@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
868users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
869NB the @code{server-key.pem} file should be protected with file mode 0600 to
870only be readable by the user owning it.
871
872@node vnc_sec_certificate_verify
873@subsection With x509 certificates and client verification
874
875Certificates can also provide a means to authenticate the client connecting.
876The server will request that the client provide a certificate, which it will
877then validate against the CA certificate. This is a good choice if deploying
878in an environment with a private internal certificate authority.
879
880@example
881qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
882@end example
883
884
885@node vnc_sec_certificate_pw
886@subsection With x509 certificates, client verification and passwords
887
888Finally, the previous method can be combined with VNC password authentication
889to provide two layers of authentication for clients.
890
891@example
892qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
893(qemu) change vnc password
894Password: ********
895(qemu)
896@end example
897
aliguori2f9606b2009-03-06 20:27:28 +0000898
899@node vnc_sec_sasl
900@subsection With SASL authentication
901
902The SASL authentication method is a VNC extension, that provides an
903easily extendable, pluggable authentication method. This allows for
904integration with a wide range of authentication mechanisms, such as
905PAM, GSSAPI/Kerberos, LDAP, SQL databases, one-time keys and more.
906The strength of the authentication depends on the exact mechanism
907configured. If the chosen mechanism also provides a SSF layer, then
908it will encrypt the datastream as well.
909
910Refer to the later docs on how to choose the exact SASL mechanism
911used for authentication, but assuming use of one supporting SSF,
912then QEMU can be launched with:
913
914@example
915qemu [...OPTIONS...] -vnc :1,sasl -monitor stdio
916@end example
917
918@node vnc_sec_certificate_sasl
919@subsection With x509 certificates and SASL authentication
920
921If the desired SASL authentication mechanism does not supported
922SSF layers, then it is strongly advised to run it in combination
923with TLS and x509 certificates. This provides securely encrypted
924data stream, avoiding risk of compromising of the security
925credentials. This can be enabled, by combining the 'sasl' option
926with the aforementioned TLS + x509 options:
927
928@example
929qemu [...OPTIONS...] -vnc :1,tls,x509,sasl -monitor stdio
930@end example
931
932
thsf858dca2007-08-25 01:40:37 +0000933@node vnc_generate_cert
934@subsection Generating certificates for VNC
935
936The GNU TLS packages provides a command called @code{certtool} which can
937be used to generate certificates and keys in PEM format. At a minimum it
938is neccessary to setup a certificate authority, and issue certificates to
939each server. If using certificates for authentication, then each client
940will also need to be issued a certificate. The recommendation is for the
941server to keep its certificates in either @code{/etc/pki/qemu} or for
942unprivileged users in @code{$HOME/.pki/qemu}.
943
944@menu
945* vnc_generate_ca::
946* vnc_generate_server::
947* vnc_generate_client::
948@end menu
949@node vnc_generate_ca
950@subsubsection Setup the Certificate Authority
951
952This step only needs to be performed once per organization / organizational
953unit. First the CA needs a private key. This key must be kept VERY secret
954and secure. If this key is compromised the entire trust chain of the certificates
955issued with it is lost.
956
957@example
958# certtool --generate-privkey > ca-key.pem
959@end example
960
961A CA needs to have a public certificate. For simplicity it can be a self-signed
962certificate, or one issue by a commercial certificate issuing authority. To
963generate a self-signed certificate requires one core piece of information, the
964name of the organization.
965
966@example
967# cat > ca.info <<EOF
968cn = Name of your organization
969ca
970cert_signing_key
971EOF
972# certtool --generate-self-signed \
973 --load-privkey ca-key.pem
974 --template ca.info \
975 --outfile ca-cert.pem
976@end example
977
978The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
979TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
980
981@node vnc_generate_server
982@subsubsection Issuing server certificates
983
984Each server (or host) needs to be issued with a key and certificate. When connecting
985the certificate is sent to the client which validates it against the CA certificate.
986The core piece of information for a server certificate is the hostname. This should
987be the fully qualified hostname that the client will connect with, since the client
988will typically also verify the hostname in the certificate. On the host holding the
989secure CA private key:
990
991@example
992# cat > server.info <<EOF
993organization = Name of your organization
994cn = server.foo.example.com
995tls_www_server
996encryption_key
997signing_key
998EOF
999# certtool --generate-privkey > server-key.pem
1000# certtool --generate-certificate \
1001 --load-ca-certificate ca-cert.pem \
1002 --load-ca-privkey ca-key.pem \
1003 --load-privkey server server-key.pem \
1004 --template server.info \
1005 --outfile server-cert.pem
1006@end example
1007
1008The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1009to the server for which they were generated. The @code{server-key.pem} is security
1010sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1011
1012@node vnc_generate_client
1013@subsubsection Issuing client certificates
1014
1015If the QEMU VNC server is to use the @code{x509verify} option to validate client
1016certificates as its authentication mechanism, each client also needs to be issued
1017a certificate. The client certificate contains enough metadata to uniquely identify
1018the client, typically organization, state, city, building, etc. On the host holding
1019the secure CA private key:
1020
1021@example
1022# cat > client.info <<EOF
1023country = GB
1024state = London
1025locality = London
1026organiazation = Name of your organization
1027cn = client.foo.example.com
1028tls_www_client
1029encryption_key
1030signing_key
1031EOF
1032# certtool --generate-privkey > client-key.pem
1033# certtool --generate-certificate \
1034 --load-ca-certificate ca-cert.pem \
1035 --load-ca-privkey ca-key.pem \
1036 --load-privkey client-key.pem \
1037 --template client.info \
1038 --outfile client-cert.pem
1039@end example
1040
1041The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
1042copied to the client for which they were generated.
1043
aliguori2f9606b2009-03-06 20:27:28 +00001044
1045@node vnc_setup_sasl
1046
1047@subsection Configuring SASL mechanisms
1048
1049The following documentation assumes use of the Cyrus SASL implementation on a
1050Linux host, but the principals should apply to any other SASL impl. When SASL
1051is enabled, the mechanism configuration will be loaded from system default
1052SASL service config /etc/sasl2/qemu.conf. If running QEMU as an
1053unprivileged user, an environment variable SASL_CONF_PATH can be used
1054to make it search alternate locations for the service config.
1055
1056The default configuration might contain
1057
1058@example
1059mech_list: digest-md5
1060sasldb_path: /etc/qemu/passwd.db
1061@end example
1062
1063This says to use the 'Digest MD5' mechanism, which is similar to the HTTP
1064Digest-MD5 mechanism. The list of valid usernames & passwords is maintained
1065in the /etc/qemu/passwd.db file, and can be updated using the saslpasswd2
1066command. While this mechanism is easy to configure and use, it is not
1067considered secure by modern standards, so only suitable for developers /
1068ad-hoc testing.
1069
1070A more serious deployment might use Kerberos, which is done with the 'gssapi'
1071mechanism
1072
1073@example
1074mech_list: gssapi
1075keytab: /etc/qemu/krb5.tab
1076@end example
1077
1078For this to work the administrator of your KDC must generate a Kerberos
1079principal for the server, with a name of 'qemu/somehost.example.com@@EXAMPLE.COM'
1080replacing 'somehost.example.com' with the fully qualified host name of the
1081machine running QEMU, and 'EXAMPLE.COM' with the Keberos Realm.
1082
1083Other configurations will be left as an exercise for the reader. It should
1084be noted that only Digest-MD5 and GSSAPI provides a SSF layer for data
1085encryption. For all other mechanisms, VNC should always be configured to
1086use TLS and x509 certificates to protect security credentials from snooping.
1087
bellard0806e3f2003-10-01 00:15:32 +00001088@node gdb_usage
bellardda415d52003-06-27 18:50:50 +00001089@section GDB usage
1090
1091QEMU has a primitive support to work with gdb, so that you can do
bellard0806e3f2003-10-01 00:15:32 +00001092'Ctrl-C' while the virtual machine is running and inspect its state.
bellardda415d52003-06-27 18:50:50 +00001093
bellard9d4520d2003-10-28 01:38:57 +00001094In order to use gdb, launch qemu with the '-s' option. It will wait for a
bellardda415d52003-06-27 18:50:50 +00001095gdb connection:
1096@example
bellarddebc7062006-04-30 21:58:41 +00001097> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1098 -append "root=/dev/hda"
bellardda415d52003-06-27 18:50:50 +00001099Connected to host network interface: tun0
1100Waiting gdb connection on port 1234
1101@end example
1102
1103Then launch gdb on the 'vmlinux' executable:
1104@example
1105> gdb vmlinux
1106@end example
1107
1108In gdb, connect to QEMU:
1109@example
bellard6c9bf892004-01-24 13:46:56 +00001110(gdb) target remote localhost:1234
bellardda415d52003-06-27 18:50:50 +00001111@end example
1112
1113Then you can use gdb normally. For example, type 'c' to launch the kernel:
1114@example
1115(gdb) c
1116@end example
1117
bellard0806e3f2003-10-01 00:15:32 +00001118Here are some useful tips in order to use gdb on system code:
1119
1120@enumerate
1121@item
1122Use @code{info reg} to display all the CPU registers.
1123@item
1124Use @code{x/10i $eip} to display the code at the PC position.
1125@item
1126Use @code{set architecture i8086} to dump 16 bit code. Then use
bellard294e8632006-05-06 14:23:06 +00001127@code{x/10i $cs*16+$eip} to dump the code at the PC position.
bellard0806e3f2003-10-01 00:15:32 +00001128@end enumerate
1129
edgar_igl60897d32008-05-09 08:25:14 +00001130Advanced debugging options:
1131
1132The 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:
edgar_igl94d45e42008-05-10 19:37:44 +00001133@table @code
edgar_igl60897d32008-05-09 08:25:14 +00001134@item maintenance packet qqemu.sstepbits
1135
1136This will display the MASK bits used to control the single stepping IE:
1137@example
1138(gdb) maintenance packet qqemu.sstepbits
1139sending: "qqemu.sstepbits"
1140received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
1141@end example
1142@item maintenance packet qqemu.sstep
1143
1144This will display the current value of the mask used when single stepping IE:
1145@example
1146(gdb) maintenance packet qqemu.sstep
1147sending: "qqemu.sstep"
1148received: "0x7"
1149@end example
1150@item maintenance packet Qqemu.sstep=HEX_VALUE
1151
1152This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
1153@example
1154(gdb) maintenance packet Qqemu.sstep=0x5
1155sending: "qemu.sstep=0x5"
1156received: "OK"
1157@end example
edgar_igl94d45e42008-05-10 19:37:44 +00001158@end table
edgar_igl60897d32008-05-09 08:25:14 +00001159
bellarddebc7062006-04-30 21:58:41 +00001160@node pcsys_os_specific
bellard1a084f32004-05-13 22:34:49 +00001161@section Target OS specific information
1162
1163@subsection Linux
1164
bellard15a34c62004-07-08 21:26:26 +00001165To have access to SVGA graphic modes under X11, use the @code{vesa} or
1166the @code{cirrus} X11 driver. For optimal performances, use 16 bit
1167color depth in the guest and the host OS.
bellard1a084f32004-05-13 22:34:49 +00001168
bellarde3371e62004-07-10 16:26:02 +00001169When using a 2.6 guest Linux kernel, you should add the option
1170@code{clock=pit} on the kernel command line because the 2.6 Linux
1171kernels make very strict real time clock checks by default that QEMU
1172cannot simulate exactly.
1173
bellard7c3fc842005-02-10 21:46:47 +00001174When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
1175not activated because QEMU is slower with this patch. The QEMU
1176Accelerator Module is also much slower in this case. Earlier Fedora
ths4be456f2007-06-03 13:41:28 +00001177Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
bellard7c3fc842005-02-10 21:46:47 +00001178patch by default. Newer kernels don't have it.
1179
bellard1a084f32004-05-13 22:34:49 +00001180@subsection Windows
1181
1182If you have a slow host, using Windows 95 is better as it gives the
1183best speed. Windows 2000 is also a good choice.
1184
bellarde3371e62004-07-10 16:26:02 +00001185@subsubsection SVGA graphic modes support
1186
1187QEMU emulates a Cirrus Logic GD5446 Video
bellard15a34c62004-07-08 21:26:26 +00001188card. All Windows versions starting from Windows 95 should recognize
1189and use this graphic card. For optimal performances, use 16 bit color
1190depth in the guest and the host OS.
bellard1a084f32004-05-13 22:34:49 +00001191
bellard3cb08532006-06-21 21:19:50 +00001192If you are using Windows XP as guest OS and if you want to use high
1193resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
11941280x1024x16), then you should use the VESA VBE virtual graphic card
1195(option @option{-std-vga}).
1196
bellarde3371e62004-07-10 16:26:02 +00001197@subsubsection CPU usage reduction
1198
1199Windows 9x does not correctly use the CPU HLT
bellard15a34c62004-07-08 21:26:26 +00001200instruction. The result is that it takes host CPU cycles even when
1201idle. You can install the utility from
1202@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
1203problem. Note that no such tool is needed for NT, 2000 or XP.
bellard1a084f32004-05-13 22:34:49 +00001204
bellard9d0a8e62005-07-03 17:34:05 +00001205@subsubsection Windows 2000 disk full problem
bellarde3371e62004-07-10 16:26:02 +00001206
bellard9d0a8e62005-07-03 17:34:05 +00001207Windows 2000 has a bug which gives a disk full problem during its
1208installation. When installing it, use the @option{-win2k-hack} QEMU
1209option to enable a specific workaround. After Windows 2000 is
1210installed, you no longer need this option (this option slows down the
1211IDE transfers).
bellarde3371e62004-07-10 16:26:02 +00001212
bellard6cc721c2005-07-28 22:27:28 +00001213@subsubsection Windows 2000 shutdown
1214
1215Windows 2000 cannot automatically shutdown in QEMU although Windows 98
1216can. It comes from the fact that Windows 2000 does not automatically
1217use the APM driver provided by the BIOS.
1218
1219In order to correct that, do the following (thanks to Struan
1220Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
1221Add/Troubleshoot a device => Add a new device & Next => No, select the
1222hardware from a list & Next => NT Apm/Legacy Support & Next => Next
1223(again) a few times. Now the driver is installed and Windows 2000 now
ths5fafdf22007-09-16 21:08:06 +00001224correctly instructs QEMU to shutdown at the appropriate moment.
bellard6cc721c2005-07-28 22:27:28 +00001225
1226@subsubsection Share a directory between Unix and Windows
1227
1228See @ref{sec_invocation} about the help of the option @option{-smb}.
1229
bellard2192c332006-08-21 20:28:18 +00001230@subsubsection Windows XP security problem
bellarde3371e62004-07-10 16:26:02 +00001231
1232Some releases of Windows XP install correctly but give a security
1233error when booting:
1234@example
1235A problem is preventing Windows from accurately checking the
1236license for this computer. Error code: 0x800703e6.
1237@end example
bellarde3371e62004-07-10 16:26:02 +00001238
bellard2192c332006-08-21 20:28:18 +00001239The workaround is to install a service pack for XP after a boot in safe
1240mode. Then reboot, and the problem should go away. Since there is no
1241network while in safe mode, its recommended to download the full
1242installation of SP1 or SP2 and transfer that via an ISO or using the
1243vvfat block device ("-hdb fat:directory_which_holds_the_SP").
bellarde3371e62004-07-10 16:26:02 +00001244
bellarda0a821a2004-07-14 17:38:57 +00001245@subsection MS-DOS and FreeDOS
1246
1247@subsubsection CPU usage reduction
1248
1249DOS does not correctly use the CPU HLT instruction. The result is that
1250it takes host CPU cycles even when idle. You can install the utility
1251from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
1252problem.
1253
bellarddebc7062006-04-30 21:58:41 +00001254@node QEMU System emulator for non PC targets
bellard3f9f3aa2005-12-18 20:11:37 +00001255@chapter QEMU System emulator for non PC targets
1256
1257QEMU is a generic emulator and it emulates many non PC
1258machines. Most of the options are similar to the PC emulator. The
ths4be456f2007-06-03 13:41:28 +00001259differences are mentioned in the following sections.
bellard3f9f3aa2005-12-18 20:11:37 +00001260
bellarddebc7062006-04-30 21:58:41 +00001261@menu
1262* QEMU PowerPC System emulator::
ths24d4de42007-07-11 10:24:28 +00001263* Sparc32 System emulator::
1264* Sparc64 System emulator::
1265* MIPS System emulator::
1266* ARM System emulator::
1267* ColdFire System emulator::
bellarddebc7062006-04-30 21:58:41 +00001268@end menu
1269
1270@node QEMU PowerPC System emulator
bellard3f9f3aa2005-12-18 20:11:37 +00001271@section QEMU PowerPC System emulator
bellard52c00a52004-04-25 21:27:03 +00001272
1273Use the executable @file{qemu-system-ppc} to simulate a complete PREP
bellard15a34c62004-07-08 21:26:26 +00001274or PowerMac PowerPC system.
1275
bellardb671f9e2005-04-30 15:08:33 +00001276QEMU emulates the following PowerMac peripherals:
bellard15a34c62004-07-08 21:26:26 +00001277
1278@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00001279@item
blueswir1006f3a42009-02-08 15:59:36 +00001280UniNorth or Grackle PCI Bridge
bellard15a34c62004-07-08 21:26:26 +00001281@item
1282PCI VGA compatible card with VESA Bochs Extensions
ths5fafdf22007-09-16 21:08:06 +00001283@item
bellard15a34c62004-07-08 21:26:26 +000012842 PMAC IDE interfaces with hard disk and CD-ROM support
ths5fafdf22007-09-16 21:08:06 +00001285@item
bellard15a34c62004-07-08 21:26:26 +00001286NE2000 PCI adapters
1287@item
1288Non Volatile RAM
1289@item
1290VIA-CUDA with ADB keyboard and mouse.
1291@end itemize
bellard52c00a52004-04-25 21:27:03 +00001292
bellardb671f9e2005-04-30 15:08:33 +00001293QEMU emulates the following PREP peripherals:
bellard52c00a52004-04-25 21:27:03 +00001294
1295@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00001296@item
bellard15a34c62004-07-08 21:26:26 +00001297PCI Bridge
1298@item
1299PCI VGA compatible card with VESA Bochs Extensions
ths5fafdf22007-09-16 21:08:06 +00001300@item
bellard52c00a52004-04-25 21:27:03 +000013012 IDE interfaces with hard disk and CD-ROM support
1302@item
1303Floppy disk
ths5fafdf22007-09-16 21:08:06 +00001304@item
bellard15a34c62004-07-08 21:26:26 +00001305NE2000 network adapters
bellard52c00a52004-04-25 21:27:03 +00001306@item
1307Serial port
1308@item
1309PREP Non Volatile RAM
bellard15a34c62004-07-08 21:26:26 +00001310@item
1311PC compatible keyboard and mouse.
bellard52c00a52004-04-25 21:27:03 +00001312@end itemize
1313
bellard15a34c62004-07-08 21:26:26 +00001314QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
bellard3f9f3aa2005-12-18 20:11:37 +00001315@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
bellard52c00a52004-04-25 21:27:03 +00001316
blueswir1992e5ac2008-12-24 20:23:51 +00001317Since version 0.9.1, QEMU uses OpenBIOS @url{http://www.openbios.org/}
blueswir1006f3a42009-02-08 15:59:36 +00001318for the g3beige and mac99 PowerMac machines. OpenBIOS is a free (GPL
1319v2) portable firmware implementation. The goal is to implement a 100%
1320IEEE 1275-1994 (referred to as Open Firmware) compliant firmware.
blueswir1992e5ac2008-12-24 20:23:51 +00001321
bellard15a34c62004-07-08 21:26:26 +00001322@c man begin OPTIONS
1323
1324The following options are specific to the PowerPC emulation:
1325
1326@table @option
1327
ths3b46e622007-09-17 08:09:54 +00001328@item -g WxH[xDEPTH]
bellard15a34c62004-07-08 21:26:26 +00001329
1330Set the initial VGA graphic mode. The default is 800x600x15.
1331
blueswir195efd112008-12-24 20:26:14 +00001332@item -prom-env string
1333
1334Set OpenBIOS variables in NVRAM, for example:
1335
1336@example
1337qemu-system-ppc -prom-env 'auto-boot?=false' \
1338 -prom-env 'boot-device=hd:2,\yaboot' \
1339 -prom-env 'boot-args=conf=hd:2,\yaboot.conf'
1340@end example
1341
1342These variables are not used by Open Hack'Ware.
1343
bellard15a34c62004-07-08 21:26:26 +00001344@end table
1345
ths5fafdf22007-09-16 21:08:06 +00001346@c man end
bellard15a34c62004-07-08 21:26:26 +00001347
1348
bellard52c00a52004-04-25 21:27:03 +00001349More information is available at
bellard3f9f3aa2005-12-18 20:11:37 +00001350@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
bellard52c00a52004-04-25 21:27:03 +00001351
ths24d4de42007-07-11 10:24:28 +00001352@node Sparc32 System emulator
1353@section Sparc32 System emulator
bellarde80cfcf2004-12-19 23:18:01 +00001354
blueswir134a3d232008-10-04 20:43:39 +00001355Use the executable @file{qemu-system-sparc} to simulate the following
1356Sun4m architecture machines:
1357@itemize @minus
1358@item
1359SPARCstation 4
1360@item
1361SPARCstation 5
1362@item
1363SPARCstation 10
1364@item
1365SPARCstation 20
1366@item
1367SPARCserver 600MP
1368@item
1369SPARCstation LX
1370@item
1371SPARCstation Voyager
1372@item
1373SPARCclassic
1374@item
1375SPARCbook
1376@end itemize
bellarde80cfcf2004-12-19 23:18:01 +00001377
blueswir134a3d232008-10-04 20:43:39 +00001378The emulation is somewhat complete. SMP up to 16 CPUs is supported,
1379but Linux limits the number of usable CPUs to 4.
1380
1381It's also possible to simulate a SPARCstation 2 (sun4c architecture),
1382SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
1383emulators are not usable yet.
1384
1385QEMU emulates the following sun4m/sun4c/sun4d peripherals:
bellarde80cfcf2004-12-19 23:18:01 +00001386
1387@itemize @minus
bellard34751872005-07-02 14:31:34 +00001388@item
blueswir17d858922007-12-28 20:57:43 +00001389IOMMU or IO-UNITs
bellarde80cfcf2004-12-19 23:18:01 +00001390@item
1391TCX Frame buffer
ths5fafdf22007-09-16 21:08:06 +00001392@item
bellarde80cfcf2004-12-19 23:18:01 +00001393Lance (Am7990) Ethernet
1394@item
blueswir134a3d232008-10-04 20:43:39 +00001395Non Volatile RAM M48T02/M48T08
bellarde80cfcf2004-12-19 23:18:01 +00001396@item
bellard34751872005-07-02 14:31:34 +00001397Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
1398and power/reset logic
1399@item
1400ESP SCSI controller with hard disk and CD-ROM support
1401@item
blueswir16a3b9cc2007-11-11 17:56:38 +00001402Floppy drive (not on SS-600MP)
blueswir1a2502b52007-06-10 17:01:00 +00001403@item
1404CS4231 sound device (only on SS-5, not working yet)
bellarde80cfcf2004-12-19 23:18:01 +00001405@end itemize
1406
blueswir16a3b9cc2007-11-11 17:56:38 +00001407The number of peripherals is fixed in the architecture. Maximum
1408memory size depends on the machine type, for SS-5 it is 256MB and for
blueswir17d858922007-12-28 20:57:43 +00001409others 2047MB.
bellarde80cfcf2004-12-19 23:18:01 +00001410
bellard30a604f2006-06-14 18:35:18 +00001411Since version 0.8.2, QEMU uses OpenBIOS
bellard0986ac32006-06-14 12:36:32 +00001412@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
1413firmware implementation. The goal is to implement a 100% IEEE
14141275-1994 (referred to as Open Firmware) compliant firmware.
bellard34751872005-07-02 14:31:34 +00001415
1416A sample Linux 2.6 series kernel and ram disk image are available on
blueswir134a3d232008-10-04 20:43:39 +00001417the QEMU web site. There are still issues with NetBSD and OpenBSD, but
1418some kernel versions work. Please note that currently Solaris kernels
1419don't work probably due to interface issues between OpenBIOS and
1420Solaris.
bellard34751872005-07-02 14:31:34 +00001421
1422@c man begin OPTIONS
1423
blueswir1a2502b52007-06-10 17:01:00 +00001424The following options are specific to the Sparc32 emulation:
bellard34751872005-07-02 14:31:34 +00001425
1426@table @option
1427
blueswir1a2502b52007-06-10 17:01:00 +00001428@item -g WxHx[xDEPTH]
bellard34751872005-07-02 14:31:34 +00001429
blueswir1a2502b52007-06-10 17:01:00 +00001430Set the initial TCX graphic mode. The default is 1024x768x8, currently
1431the only other possible mode is 1024x768x24.
bellard34751872005-07-02 14:31:34 +00001432
blueswir166508602007-05-01 14:16:52 +00001433@item -prom-env string
1434
1435Set OpenBIOS variables in NVRAM, for example:
1436
1437@example
1438qemu-system-sparc -prom-env 'auto-boot?=false' \
1439 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
1440@end example
1441
blueswir134a3d232008-10-04 20:43:39 +00001442@item -M [SS-4|SS-5|SS-10|SS-20|SS-600MP|LX|Voyager|SPARCClassic|SPARCbook|SS-2|SS-1000|SS-2000]
blueswir1a2502b52007-06-10 17:01:00 +00001443
1444Set the emulated machine type. Default is SS-5.
1445
bellard34751872005-07-02 14:31:34 +00001446@end table
1447
ths5fafdf22007-09-16 21:08:06 +00001448@c man end
bellard34751872005-07-02 14:31:34 +00001449
ths24d4de42007-07-11 10:24:28 +00001450@node Sparc64 System emulator
1451@section Sparc64 System emulator
bellard34751872005-07-02 14:31:34 +00001452
blueswir134a3d232008-10-04 20:43:39 +00001453Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
1454(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
1455Niagara (T1) machine. The emulator is not usable for anything yet, but
1456it can launch some kernels.
bellardb7569212005-03-13 09:43:05 +00001457
blueswir1c7ba2182008-07-22 07:07:34 +00001458QEMU emulates the following peripherals:
bellard83469012005-07-23 14:27:54 +00001459
1460@itemize @minus
1461@item
ths5fafdf22007-09-16 21:08:06 +00001462UltraSparc IIi APB PCI Bridge
bellard83469012005-07-23 14:27:54 +00001463@item
1464PCI VGA compatible card with VESA Bochs Extensions
1465@item
blueswir134a3d232008-10-04 20:43:39 +00001466PS/2 mouse and keyboard
1467@item
bellard83469012005-07-23 14:27:54 +00001468Non Volatile RAM M48T59
1469@item
1470PC-compatible serial ports
blueswir1c7ba2182008-07-22 07:07:34 +00001471@item
14722 PCI IDE interfaces with hard disk and CD-ROM support
blueswir134a3d232008-10-04 20:43:39 +00001473@item
1474Floppy disk
bellard83469012005-07-23 14:27:54 +00001475@end itemize
1476
blueswir1c7ba2182008-07-22 07:07:34 +00001477@c man begin OPTIONS
1478
1479The following options are specific to the Sparc64 emulation:
1480
1481@table @option
1482
blueswir134a3d232008-10-04 20:43:39 +00001483@item -prom-env string
1484
1485Set OpenBIOS variables in NVRAM, for example:
1486
1487@example
1488qemu-system-sparc64 -prom-env 'auto-boot?=false'
1489@end example
1490
1491@item -M [sun4u|sun4v|Niagara]
blueswir1c7ba2182008-07-22 07:07:34 +00001492
1493Set the emulated machine type. The default is sun4u.
1494
1495@end table
1496
1497@c man end
1498
ths24d4de42007-07-11 10:24:28 +00001499@node MIPS System emulator
1500@section MIPS System emulator
bellard9d0a8e62005-07-03 17:34:05 +00001501
thsd9aedc32007-12-17 03:47:55 +00001502Four executables cover simulation of 32 and 64-bit MIPS systems in
1503both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
1504@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
aurel3288cb0a02008-04-08 05:57:37 +00001505Five different machine types are emulated:
ths24d4de42007-07-11 10:24:28 +00001506
1507@itemize @minus
1508@item
1509A generic ISA PC-like machine "mips"
1510@item
1511The MIPS Malta prototype board "malta"
1512@item
thsd9aedc32007-12-17 03:47:55 +00001513An ACER Pica "pica61". This machine needs the 64-bit emulator.
ths6bf5b4e2007-10-17 13:08:32 +00001514@item
thsf0fc6f82007-10-17 13:39:42 +00001515MIPS emulator pseudo board "mipssim"
aurel3288cb0a02008-04-08 05:57:37 +00001516@item
1517A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
ths24d4de42007-07-11 10:24:28 +00001518@end itemize
1519
1520The generic emulation is supported by Debian 'Etch' and is able to
1521install Debian into a virtual disk image. The following devices are
1522emulated:
bellard9d0a8e62005-07-03 17:34:05 +00001523
bellard3f9f3aa2005-12-18 20:11:37 +00001524@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00001525@item
ths6bf5b4e2007-10-17 13:08:32 +00001526A range of MIPS CPUs, default is the 24Kf
bellard3f9f3aa2005-12-18 20:11:37 +00001527@item
1528PC style serial port
1529@item
ths24d4de42007-07-11 10:24:28 +00001530PC style IDE disk
1531@item
bellard3f9f3aa2005-12-18 20:11:37 +00001532NE2000 network card
1533@end itemize
1534
ths24d4de42007-07-11 10:24:28 +00001535The Malta emulation supports the following devices:
bellard3f9f3aa2005-12-18 20:11:37 +00001536
ths24d4de42007-07-11 10:24:28 +00001537@itemize @minus
1538@item
ths0b64d002007-07-11 21:43:14 +00001539Core board with MIPS 24Kf CPU and Galileo system controller
ths24d4de42007-07-11 10:24:28 +00001540@item
1541PIIX4 PCI/USB/SMbus controller
1542@item
1543The Multi-I/O chip's serial device
1544@item
Stefan Weil3a2eeac2009-06-06 18:05:58 +02001545PCI network cards (PCnet32 and others)
ths24d4de42007-07-11 10:24:28 +00001546@item
1547Malta FPGA serial device
1548@item
aurel321f605a72009-02-08 14:51:19 +00001549Cirrus (default) or any other PCI VGA graphics card
ths24d4de42007-07-11 10:24:28 +00001550@end itemize
1551
1552The ACER Pica emulation supports:
1553
1554@itemize @minus
1555@item
1556MIPS R4000 CPU
1557@item
1558PC-style IRQ and DMA controllers
1559@item
1560PC Keyboard
1561@item
1562IDE controller
1563@end itemize
1564
thsf0fc6f82007-10-17 13:39:42 +00001565The mipssim pseudo board emulation provides an environment similiar
1566to what the proprietary MIPS emulator uses for running Linux.
1567It supports:
ths6bf5b4e2007-10-17 13:08:32 +00001568
1569@itemize @minus
1570@item
1571A range of MIPS CPUs, default is the 24Kf
1572@item
1573PC style serial port
1574@item
1575MIPSnet network emulation
1576@end itemize
1577
aurel3288cb0a02008-04-08 05:57:37 +00001578The MIPS Magnum R4000 emulation supports:
1579
1580@itemize @minus
1581@item
1582MIPS R4000 CPU
1583@item
1584PC-style IRQ controller
1585@item
1586PC Keyboard
1587@item
1588SCSI controller
1589@item
1590G364 framebuffer
1591@end itemize
1592
1593
ths24d4de42007-07-11 10:24:28 +00001594@node ARM System emulator
1595@section ARM System emulator
bellard3f9f3aa2005-12-18 20:11:37 +00001596
1597Use the executable @file{qemu-system-arm} to simulate a ARM
1598machine. The ARM Integrator/CP board is emulated with the following
1599devices:
1600
1601@itemize @minus
1602@item
pbrook9ee6e8b2007-11-11 00:04:49 +00001603ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
bellard3f9f3aa2005-12-18 20:11:37 +00001604@item
1605Two PL011 UARTs
ths5fafdf22007-09-16 21:08:06 +00001606@item
bellard3f9f3aa2005-12-18 20:11:37 +00001607SMC 91c111 Ethernet adapter
pbrook00a9bf12006-05-13 16:55:46 +00001608@item
1609PL110 LCD controller
1610@item
1611PL050 KMI with PS/2 keyboard and mouse.
pbrooka1bb27b2007-04-06 16:49:48 +00001612@item
1613PL181 MultiMedia Card Interface with SD card.
pbrook00a9bf12006-05-13 16:55:46 +00001614@end itemize
1615
1616The ARM Versatile baseboard is emulated with the following devices:
1617
1618@itemize @minus
1619@item
pbrook9ee6e8b2007-11-11 00:04:49 +00001620ARM926E, ARM1136 or Cortex-A8 CPU
pbrook00a9bf12006-05-13 16:55:46 +00001621@item
1622PL190 Vectored Interrupt Controller
1623@item
1624Four PL011 UARTs
ths5fafdf22007-09-16 21:08:06 +00001625@item
pbrook00a9bf12006-05-13 16:55:46 +00001626SMC 91c111 Ethernet adapter
1627@item
1628PL110 LCD controller
1629@item
1630PL050 KMI with PS/2 keyboard and mouse.
1631@item
1632PCI host bridge. Note the emulated PCI bridge only provides access to
1633PCI memory space. It does not provide access to PCI IO space.
ths4be456f2007-06-03 13:41:28 +00001634This means some devices (eg. ne2k_pci NIC) are not usable, and others
1635(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
pbrook00a9bf12006-05-13 16:55:46 +00001636mapped control registers.
pbrooke6de1ba2006-06-16 21:48:48 +00001637@item
1638PCI OHCI USB controller.
1639@item
1640LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
pbrooka1bb27b2007-04-06 16:49:48 +00001641@item
1642PL181 MultiMedia Card Interface with SD card.
bellard3f9f3aa2005-12-18 20:11:37 +00001643@end itemize
1644
pbrookd7739d72007-02-28 16:25:17 +00001645The ARM RealView Emulation baseboard is emulated with the following devices:
1646
1647@itemize @minus
1648@item
pbrook9ee6e8b2007-11-11 00:04:49 +00001649ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
pbrookd7739d72007-02-28 16:25:17 +00001650@item
1651ARM AMBA Generic/Distributed Interrupt Controller
1652@item
1653Four PL011 UARTs
ths5fafdf22007-09-16 21:08:06 +00001654@item
pbrookd7739d72007-02-28 16:25:17 +00001655SMC 91c111 Ethernet adapter
1656@item
1657PL110 LCD controller
1658@item
1659PL050 KMI with PS/2 keyboard and mouse
1660@item
1661PCI host bridge
1662@item
1663PCI OHCI USB controller
1664@item
1665LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
pbrooka1bb27b2007-04-06 16:49:48 +00001666@item
1667PL181 MultiMedia Card Interface with SD card.
pbrookd7739d72007-02-28 16:25:17 +00001668@end itemize
1669
balrogb00052e2007-04-30 02:22:06 +00001670The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
1671and "Terrier") emulation includes the following peripherals:
1672
1673@itemize @minus
1674@item
1675Intel PXA270 System-on-chip (ARM V5TE core)
1676@item
1677NAND Flash memory
1678@item
1679IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
1680@item
1681On-chip OHCI USB controller
1682@item
1683On-chip LCD controller
1684@item
1685On-chip Real Time Clock
1686@item
1687TI ADS7846 touchscreen controller on SSP bus
1688@item
1689Maxim MAX1111 analog-digital converter on I@math{^2}C bus
1690@item
1691GPIO-connected keyboard controller and LEDs
1692@item
balrog549444e2007-05-01 17:53:37 +00001693Secure Digital card connected to PXA MMC/SD host
balrogb00052e2007-04-30 02:22:06 +00001694@item
1695Three on-chip UARTs
1696@item
1697WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
1698@end itemize
1699
balrog02645922007-11-03 12:50:46 +00001700The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
1701following elements:
1702
1703@itemize @minus
1704@item
1705Texas Instruments OMAP310 System-on-chip (ARM 925T core)
1706@item
1707ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
1708@item
1709On-chip LCD controller
1710@item
1711On-chip Real Time Clock
1712@item
1713TI TSC2102i touchscreen controller / analog-digital converter / Audio
1714CODEC, connected through MicroWire and I@math{^2}S busses
1715@item
1716GPIO-connected matrix keypad
1717@item
1718Secure Digital card connected to OMAP MMC/SD host
1719@item
1720Three on-chip UARTs
1721@end itemize
1722
balrogc30bb262008-05-18 13:01:40 +00001723Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
1724emulation supports the following elements:
1725
1726@itemize @minus
1727@item
1728Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
1729@item
1730RAM and non-volatile OneNAND Flash memories
1731@item
1732Display connected to EPSON remote framebuffer chip and OMAP on-chip
1733display controller and a LS041y3 MIPI DBI-C controller
1734@item
1735TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
1736driven through SPI bus
1737@item
1738National Semiconductor LM8323-controlled qwerty keyboard driven
1739through I@math{^2}C bus
1740@item
1741Secure Digital card connected to OMAP MMC/SD host
1742@item
1743Three OMAP on-chip UARTs and on-chip STI debugging console
1744@item
balrog2d564692008-11-09 02:24:54 +00001745A Bluetooth(R) transciever and HCI connected to an UART
1746@item
balrogc30bb262008-05-18 13:01:40 +00001747Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
1748TUSB6010 chip - only USB host mode is supported
1749@item
1750TI TMP105 temperature sensor driven through I@math{^2}C bus
1751@item
1752TI TWL92230C power management companion with an RTC on I@math{^2}C bus
1753@item
1754Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
1755through CBUS
1756@end itemize
1757
pbrook9ee6e8b2007-11-11 00:04:49 +00001758The Luminary Micro Stellaris LM3S811EVB emulation includes the following
1759devices:
1760
1761@itemize @minus
1762@item
1763Cortex-M3 CPU core.
1764@item
176564k Flash and 8k SRAM.
1766@item
1767Timers, UARTs, ADC and I@math{^2}C interface.
1768@item
1769OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
1770@end itemize
1771
1772The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
1773devices:
1774
1775@itemize @minus
1776@item
1777Cortex-M3 CPU core.
1778@item
1779256k Flash and 64k SRAM.
1780@item
1781Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
1782@item
1783OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
1784@end itemize
1785
balrog57cd6e92008-05-07 12:23:32 +00001786The Freecom MusicPal internet radio emulation includes the following
1787elements:
1788
1789@itemize @minus
1790@item
1791Marvell MV88W8618 ARM core.
1792@item
179332 MB RAM, 256 KB SRAM, 8 MB flash.
1794@item
1795Up to 2 16550 UARTs
1796@item
1797MV88W8xx8 Ethernet controller
1798@item
1799MV88W8618 audio controller, WM8750 CODEC and mixer
1800@item
1801128×64 display with brightness control
1802@item
18032 buttons, 2 navigation wheels with button function
1804@end itemize
1805
balrog997641a2008-12-15 02:05:00 +00001806The Siemens SX1 models v1 and v2 (default) basic emulation.
1807The emulaton includes the following elements:
1808
1809@itemize @minus
1810@item
1811Texas Instruments OMAP310 System-on-chip (ARM 925T core)
1812@item
1813ROM and RAM memories (ROM firmware image can be loaded with -pflash)
1814V1
18151 Flash of 16MB and 1 Flash of 8MB
1816V2
18171 Flash of 32MB
1818@item
1819On-chip LCD controller
1820@item
1821On-chip Real Time Clock
1822@item
1823Secure Digital card connected to OMAP MMC/SD host
1824@item
1825Three on-chip UARTs
1826@end itemize
1827
Paul Brook4af39612009-05-14 23:11:09 +01001828The "Syborg" Symbian Virtual Platform base model includes the following
1829elements:
1830
1831@itemize @minus
1832@item
1833ARM Cortex-A8 CPU
1834@item
1835Interrupt controller
1836@item
1837Timer
1838@item
1839Real Time Clock
1840@item
1841Keyboard
1842@item
1843Framebuffer
1844@item
1845Touchscreen
1846@item
1847UARTs
1848@end itemize
1849
bellard3f9f3aa2005-12-18 20:11:37 +00001850A Linux 2.6 test image is available on the QEMU web site. More
1851information is available in the QEMU mailing-list archive.
1852
blueswir1d2c639d2009-01-24 18:19:25 +00001853@c man begin OPTIONS
1854
1855The following options are specific to the ARM emulation:
1856
1857@table @option
1858
1859@item -semihosting
1860Enable semihosting syscall emulation.
1861
1862On ARM this implements the "Angel" interface.
1863
1864Note that this allows guest direct access to the host filesystem,
1865so should only be used with trusted guest OS.
1866
1867@end table
1868
ths24d4de42007-07-11 10:24:28 +00001869@node ColdFire System emulator
1870@section ColdFire System emulator
pbrook209a4e62007-05-23 20:16:15 +00001871
1872Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
1873The emulator is able to boot a uClinux kernel.
pbrook707e0112007-06-04 00:50:06 +00001874
1875The M5208EVB emulation includes the following devices:
1876
1877@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00001878@item
pbrook707e0112007-06-04 00:50:06 +00001879MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
1880@item
1881Three Two on-chip UARTs.
1882@item
1883Fast Ethernet Controller (FEC)
1884@end itemize
1885
1886The AN5206 emulation includes the following devices:
pbrook209a4e62007-05-23 20:16:15 +00001887
1888@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00001889@item
pbrook209a4e62007-05-23 20:16:15 +00001890MCF5206 ColdFire V2 Microprocessor.
1891@item
1892Two on-chip UARTs.
1893@end itemize
1894
blueswir1d2c639d2009-01-24 18:19:25 +00001895@c man begin OPTIONS
1896
1897The following options are specific to the ARM emulation:
1898
1899@table @option
1900
1901@item -semihosting
1902Enable semihosting syscall emulation.
1903
1904On M68K this implements the "ColdFire GDB" interface used by libgloss.
1905
1906Note that this allows guest direct access to the host filesystem,
1907so should only be used with trusted guest OS.
1908
1909@end table
1910
ths5fafdf22007-09-16 21:08:06 +00001911@node QEMU User space emulator
1912@chapter QEMU User space emulator
bellard83195232007-02-05 19:42:07 +00001913
1914@menu
1915* Supported Operating Systems ::
1916* Linux User space emulator::
1917* Mac OS X/Darwin User space emulator ::
blueswir184778502008-10-26 20:33:16 +00001918* BSD User space emulator ::
bellard83195232007-02-05 19:42:07 +00001919@end menu
1920
1921@node Supported Operating Systems
1922@section Supported Operating Systems
1923
1924The following OS are supported in user space emulation:
1925
1926@itemize @minus
1927@item
ths4be456f2007-06-03 13:41:28 +00001928Linux (referred as qemu-linux-user)
bellard83195232007-02-05 19:42:07 +00001929@item
ths4be456f2007-06-03 13:41:28 +00001930Mac OS X/Darwin (referred as qemu-darwin-user)
blueswir184778502008-10-26 20:33:16 +00001931@item
1932BSD (referred as qemu-bsd-user)
bellard83195232007-02-05 19:42:07 +00001933@end itemize
1934
1935@node Linux User space emulator
1936@section Linux User space emulator
bellard386405f2003-03-23 21:28:45 +00001937
bellarddebc7062006-04-30 21:58:41 +00001938@menu
1939* Quick Start::
1940* Wine launch::
1941* Command line options::
pbrook79737e42006-06-11 16:28:41 +00001942* Other binaries::
bellarddebc7062006-04-30 21:58:41 +00001943@end menu
1944
1945@node Quick Start
bellard83195232007-02-05 19:42:07 +00001946@subsection Quick Start
bellard386405f2003-03-23 21:28:45 +00001947
bellard1f673132004-04-04 15:21:17 +00001948In order to launch a Linux process, QEMU needs the process executable
ths5fafdf22007-09-16 21:08:06 +00001949itself and all the target (x86) dynamic libraries used by it.
bellard386405f2003-03-23 21:28:45 +00001950
bellard1f673132004-04-04 15:21:17 +00001951@itemize
bellard386405f2003-03-23 21:28:45 +00001952
bellard1f673132004-04-04 15:21:17 +00001953@item On x86, you can just try to launch any process by using the native
1954libraries:
bellard386405f2003-03-23 21:28:45 +00001955
ths5fafdf22007-09-16 21:08:06 +00001956@example
bellard1f673132004-04-04 15:21:17 +00001957qemu-i386 -L / /bin/ls
1958@end example
bellardfd429f22003-03-30 20:59:46 +00001959
bellard1f673132004-04-04 15:21:17 +00001960@code{-L /} tells that the x86 dynamic linker must be searched with a
1961@file{/} prefix.
bellard1eb20522003-06-25 16:21:49 +00001962
thsdbcf5e82007-02-10 22:14:55 +00001963@item Since QEMU is also a linux process, you can launch qemu with
1964qemu (NOTE: you can only do that if you compiled QEMU from the sources):
bellard1eb20522003-06-25 16:21:49 +00001965
ths5fafdf22007-09-16 21:08:06 +00001966@example
bellard1f673132004-04-04 15:21:17 +00001967qemu-i386 -L / qemu-i386 -L / /bin/ls
1968@end example
bellard386405f2003-03-23 21:28:45 +00001969
bellard1f673132004-04-04 15:21:17 +00001970@item On non x86 CPUs, you need first to download at least an x86 glibc
1971(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
1972@code{LD_LIBRARY_PATH} is not set:
bellard386405f2003-03-23 21:28:45 +00001973
bellard1f673132004-04-04 15:21:17 +00001974@example
ths5fafdf22007-09-16 21:08:06 +00001975unset LD_LIBRARY_PATH
bellard1f673132004-04-04 15:21:17 +00001976@end example
bellard386405f2003-03-23 21:28:45 +00001977
bellard1f673132004-04-04 15:21:17 +00001978Then you can launch the precompiled @file{ls} x86 executable:
bellard386405f2003-03-23 21:28:45 +00001979
bellard1f673132004-04-04 15:21:17 +00001980@example
1981qemu-i386 tests/i386/ls
1982@end example
1983You can look at @file{qemu-binfmt-conf.sh} so that
1984QEMU is automatically launched by the Linux kernel when you try to
1985launch x86 executables. It requires the @code{binfmt_misc} module in the
1986Linux kernel.
bellard386405f2003-03-23 21:28:45 +00001987
bellard1f673132004-04-04 15:21:17 +00001988@item The x86 version of QEMU is also included. You can try weird things such as:
1989@example
bellarddebc7062006-04-30 21:58:41 +00001990qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
1991 /usr/local/qemu-i386/bin/ls-i386
bellard1f673132004-04-04 15:21:17 +00001992@end example
bellard386405f2003-03-23 21:28:45 +00001993
bellard1f673132004-04-04 15:21:17 +00001994@end itemize
bellard386405f2003-03-23 21:28:45 +00001995
bellarddebc7062006-04-30 21:58:41 +00001996@node Wine launch
bellard83195232007-02-05 19:42:07 +00001997@subsection Wine launch
bellard386405f2003-03-23 21:28:45 +00001998
bellard1f673132004-04-04 15:21:17 +00001999@itemize
bellard386405f2003-03-23 21:28:45 +00002000
bellard1f673132004-04-04 15:21:17 +00002001@item Ensure that you have a working QEMU with the x86 glibc
2002distribution (see previous section). In order to verify it, you must be
2003able to do:
bellard386405f2003-03-23 21:28:45 +00002004
bellard1f673132004-04-04 15:21:17 +00002005@example
2006qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2007@end example
bellard386405f2003-03-23 21:28:45 +00002008
bellard1f673132004-04-04 15:21:17 +00002009@item Download the binary x86 Wine install
ths5fafdf22007-09-16 21:08:06 +00002010(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
bellard386405f2003-03-23 21:28:45 +00002011
bellard1f673132004-04-04 15:21:17 +00002012@item Configure Wine on your account. Look at the provided script
bellarddebc7062006-04-30 21:58:41 +00002013@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
bellard1f673132004-04-04 15:21:17 +00002014@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
bellard386405f2003-03-23 21:28:45 +00002015
bellard1f673132004-04-04 15:21:17 +00002016@item Then you can try the example @file{putty.exe}:
bellard386405f2003-03-23 21:28:45 +00002017
bellard1f673132004-04-04 15:21:17 +00002018@example
bellarddebc7062006-04-30 21:58:41 +00002019qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2020 /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
bellard1f673132004-04-04 15:21:17 +00002021@end example
bellard386405f2003-03-23 21:28:45 +00002022
bellard1f673132004-04-04 15:21:17 +00002023@end itemize
bellard386405f2003-03-23 21:28:45 +00002024
bellarddebc7062006-04-30 21:58:41 +00002025@node Command line options
bellard83195232007-02-05 19:42:07 +00002026@subsection Command line options
bellard386405f2003-03-23 21:28:45 +00002027
bellard1f673132004-04-04 15:21:17 +00002028@example
Paul Brook379f6692009-07-17 12:48:08 +01002029usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] [-B offset] program [arguments...]
bellard1f673132004-04-04 15:21:17 +00002030@end example
bellard386405f2003-03-23 21:28:45 +00002031
bellard1f673132004-04-04 15:21:17 +00002032@table @option
2033@item -h
2034Print the help
ths3b46e622007-09-17 08:09:54 +00002035@item -L path
bellard1f673132004-04-04 15:21:17 +00002036Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2037@item -s size
2038Set the x86 stack size in bytes (default=524288)
blueswir134a3d232008-10-04 20:43:39 +00002039@item -cpu model
2040Select CPU model (-cpu ? for list and additional feature selection)
Paul Brook379f6692009-07-17 12:48:08 +01002041@item -B offset
2042Offset guest address by the specified number of bytes. This is useful when
2043the address region rewuired by guest applications is reserved on the host.
2044Ths option is currently only supported on some hosts.
bellard386405f2003-03-23 21:28:45 +00002045@end table
2046
bellard1f673132004-04-04 15:21:17 +00002047Debug options:
bellard386405f2003-03-23 21:28:45 +00002048
bellard1f673132004-04-04 15:21:17 +00002049@table @option
2050@item -d
2051Activate log (logfile=/tmp/qemu.log)
2052@item -p pagesize
2053Act as if the host page size was 'pagesize' bytes
blueswir134a3d232008-10-04 20:43:39 +00002054@item -g port
2055Wait gdb connection to port
aurel321b530a62009-04-05 20:08:59 +00002056@item -singlestep
2057Run the emulation in single step mode.
bellard1f673132004-04-04 15:21:17 +00002058@end table
bellard386405f2003-03-23 21:28:45 +00002059
balrogb01bcae2007-12-16 13:05:59 +00002060Environment variables:
2061
2062@table @env
2063@item QEMU_STRACE
2064Print system calls and arguments similar to the 'strace' program
2065(NOTE: the actual 'strace' program will not work because the user
2066space emulator hasn't implemented ptrace). At the moment this is
2067incomplete. All system calls that don't have a specific argument
2068format are printed with information for six arguments. Many
2069flag-style arguments don't have decoders and will show up as numbers.
ths5cfdf932007-12-17 03:38:26 +00002070@end table
balrogb01bcae2007-12-16 13:05:59 +00002071
pbrook79737e42006-06-11 16:28:41 +00002072@node Other binaries
bellard83195232007-02-05 19:42:07 +00002073@subsection Other binaries
pbrook79737e42006-06-11 16:28:41 +00002074
2075@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2076binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2077configurations), and arm-uclinux bFLT format binaries.
2078
pbrooke6e59062006-10-22 00:18:54 +00002079@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2080(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2081coldfire uClinux bFLT format binaries.
2082
pbrook79737e42006-06-11 16:28:41 +00002083The binary format is detected automatically.
2084
blueswir134a3d232008-10-04 20:43:39 +00002085@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
2086
blueswir1a785e422007-10-20 08:09:05 +00002087@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2088(Sparc64 CPU, 32 bit ABI).
2089
2090@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2091SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2092
bellard83195232007-02-05 19:42:07 +00002093@node Mac OS X/Darwin User space emulator
2094@section Mac OS X/Darwin User space emulator
2095
2096@menu
2097* Mac OS X/Darwin Status::
2098* Mac OS X/Darwin Quick Start::
2099* Mac OS X/Darwin Command line options::
2100@end menu
2101
2102@node Mac OS X/Darwin Status
2103@subsection Mac OS X/Darwin Status
2104
2105@itemize @minus
2106@item
2107target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2108@item
2109target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2110@item
thsdbcf5e82007-02-10 22:14:55 +00002111target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
bellard83195232007-02-05 19:42:07 +00002112@item
2113target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2114@end itemize
2115
2116[1] If you're host commpage can be executed by qemu.
2117
2118@node Mac OS X/Darwin Quick Start
2119@subsection Quick Start
2120
2121In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2122itself and all the target dynamic libraries used by it. If you don't have the FAT
2123libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2124CD or compile them by hand.
2125
2126@itemize
2127
2128@item On x86, you can just try to launch any process by using the native
2129libraries:
2130
ths5fafdf22007-09-16 21:08:06 +00002131@example
thsdbcf5e82007-02-10 22:14:55 +00002132qemu-i386 /bin/ls
bellard83195232007-02-05 19:42:07 +00002133@end example
2134
2135or to run the ppc version of the executable:
2136
ths5fafdf22007-09-16 21:08:06 +00002137@example
thsdbcf5e82007-02-10 22:14:55 +00002138qemu-ppc /bin/ls
bellard83195232007-02-05 19:42:07 +00002139@end example
2140
2141@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2142are installed:
2143
ths5fafdf22007-09-16 21:08:06 +00002144@example
thsdbcf5e82007-02-10 22:14:55 +00002145qemu-i386 -L /opt/x86_root/ /bin/ls
bellard83195232007-02-05 19:42:07 +00002146@end example
2147
2148@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2149@file{/opt/x86_root/usr/bin/dyld}.
2150
2151@end itemize
2152
2153@node Mac OS X/Darwin Command line options
2154@subsection Command line options
2155
2156@example
thsdbcf5e82007-02-10 22:14:55 +00002157usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
bellard83195232007-02-05 19:42:07 +00002158@end example
2159
2160@table @option
2161@item -h
2162Print the help
ths3b46e622007-09-17 08:09:54 +00002163@item -L path
bellard83195232007-02-05 19:42:07 +00002164Set the library root path (default=/)
2165@item -s size
2166Set the stack size in bytes (default=524288)
2167@end table
2168
2169Debug options:
2170
2171@table @option
2172@item -d
2173Activate log (logfile=/tmp/qemu.log)
2174@item -p pagesize
2175Act as if the host page size was 'pagesize' bytes
aurel321b530a62009-04-05 20:08:59 +00002176@item -singlestep
2177Run the emulation in single step mode.
bellard83195232007-02-05 19:42:07 +00002178@end table
2179
blueswir184778502008-10-26 20:33:16 +00002180@node BSD User space emulator
2181@section BSD User space emulator
2182
2183@menu
2184* BSD Status::
2185* BSD Quick Start::
2186* BSD Command line options::
2187@end menu
2188
2189@node BSD Status
2190@subsection BSD Status
2191
2192@itemize @minus
2193@item
2194target Sparc64 on Sparc64: Some trivial programs work.
2195@end itemize
2196
2197@node BSD Quick Start
2198@subsection Quick Start
2199
2200In order to launch a BSD process, QEMU needs the process executable
2201itself and all the target dynamic libraries used by it.
2202
2203@itemize
2204
2205@item On Sparc64, you can just try to launch any process by using the native
2206libraries:
2207
2208@example
2209qemu-sparc64 /bin/ls
2210@end example
2211
2212@end itemize
2213
2214@node BSD Command line options
2215@subsection Command line options
2216
2217@example
2218usage: qemu-sparc64 [-h] [-d] [-L path] [-s size] [-bsd type] program [arguments...]
2219@end example
2220
2221@table @option
2222@item -h
2223Print the help
2224@item -L path
2225Set the library root path (default=/)
2226@item -s size
2227Set the stack size in bytes (default=524288)
2228@item -bsd type
2229Set the type of the emulated BSD Operating system. Valid values are
2230FreeBSD, NetBSD and OpenBSD (default).
2231@end table
2232
2233Debug options:
2234
2235@table @option
2236@item -d
2237Activate log (logfile=/tmp/qemu.log)
2238@item -p pagesize
2239Act as if the host page size was 'pagesize' bytes
aurel321b530a62009-04-05 20:08:59 +00002240@item -singlestep
2241Run the emulation in single step mode.
blueswir184778502008-10-26 20:33:16 +00002242@end table
2243
bellard15a34c62004-07-08 21:26:26 +00002244@node compilation
2245@chapter Compilation from the sources
2246
bellarddebc7062006-04-30 21:58:41 +00002247@menu
2248* Linux/Unix::
2249* Windows::
2250* Cross compilation for Windows with Linux::
2251* Mac OS X::
2252@end menu
2253
2254@node Linux/Unix
bellard7c3fc842005-02-10 21:46:47 +00002255@section Linux/Unix
bellard15a34c62004-07-08 21:26:26 +00002256
bellard7c3fc842005-02-10 21:46:47 +00002257@subsection Compilation
2258
2259First you must decompress the sources:
2260@example
2261cd /tmp
2262tar zxvf qemu-x.y.z.tar.gz
2263cd qemu-x.y.z
2264@end example
2265
2266Then you configure QEMU and build it (usually no options are needed):
2267@example
2268./configure
2269make
2270@end example
2271
2272Then type as root user:
2273@example
2274make install
2275@end example
2276to install QEMU in @file{/usr/local}.
2277
bellarddebc7062006-04-30 21:58:41 +00002278@node Windows
bellard15a34c62004-07-08 21:26:26 +00002279@section Windows
2280
2281@itemize
2282@item Install the current versions of MSYS and MinGW from
2283@url{http://www.mingw.org/}. You can find detailed installation
2284instructions in the download section and the FAQ.
2285
ths5fafdf22007-09-16 21:08:06 +00002286@item Download
bellard15a34c62004-07-08 21:26:26 +00002287the MinGW development library of SDL 1.2.x
bellarddebc7062006-04-30 21:58:41 +00002288(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
bellard15a34c62004-07-08 21:26:26 +00002289@url{http://www.libsdl.org}. Unpack it in a temporary place, and
2290unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
2291directory. Edit the @file{sdl-config} script so that it gives the
2292correct SDL directory when invoked.
2293
2294@item Extract the current version of QEMU.
ths5fafdf22007-09-16 21:08:06 +00002295
bellard15a34c62004-07-08 21:26:26 +00002296@item Start the MSYS shell (file @file{msys.bat}).
2297
ths5fafdf22007-09-16 21:08:06 +00002298@item Change to the QEMU directory. Launch @file{./configure} and
bellard15a34c62004-07-08 21:26:26 +00002299@file{make}. If you have problems using SDL, verify that
2300@file{sdl-config} can be launched from the MSYS command line.
2301
ths5fafdf22007-09-16 21:08:06 +00002302@item You can install QEMU in @file{Program Files/Qemu} by typing
bellard15a34c62004-07-08 21:26:26 +00002303@file{make install}. Don't forget to copy @file{SDL.dll} in
2304@file{Program Files/Qemu}.
2305
2306@end itemize
2307
bellarddebc7062006-04-30 21:58:41 +00002308@node Cross compilation for Windows with Linux
bellard15a34c62004-07-08 21:26:26 +00002309@section Cross compilation for Windows with Linux
2310
2311@itemize
2312@item
2313Install the MinGW cross compilation tools available at
2314@url{http://www.mingw.org/}.
2315
ths5fafdf22007-09-16 21:08:06 +00002316@item
bellard15a34c62004-07-08 21:26:26 +00002317Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
2318unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
2319variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
2320the QEMU configuration script.
2321
ths5fafdf22007-09-16 21:08:06 +00002322@item
bellard15a34c62004-07-08 21:26:26 +00002323Configure QEMU for Windows cross compilation:
2324@example
2325./configure --enable-mingw32
2326@end example
2327If necessary, you can change the cross-prefix according to the prefix
ths4be456f2007-06-03 13:41:28 +00002328chosen for the MinGW tools with --cross-prefix. You can also use
bellard15a34c62004-07-08 21:26:26 +00002329--prefix to set the Win32 install path.
2330
ths5fafdf22007-09-16 21:08:06 +00002331@item You can install QEMU in the installation directory by typing
bellard15a34c62004-07-08 21:26:26 +00002332@file{make install}. Don't forget to copy @file{SDL.dll} in the
ths5fafdf22007-09-16 21:08:06 +00002333installation directory.
bellard15a34c62004-07-08 21:26:26 +00002334
2335@end itemize
2336
2337Note: Currently, Wine does not seem able to launch
2338QEMU for Win32.
2339
bellarddebc7062006-04-30 21:58:41 +00002340@node Mac OS X
bellard15a34c62004-07-08 21:26:26 +00002341@section Mac OS X
2342
2343The Mac OS X patches are not fully merged in QEMU, so you should look
2344at the QEMU mailing list archive to have all the necessary
2345information.
2346
bellarddebc7062006-04-30 21:58:41 +00002347@node Index
2348@chapter Index
2349@printindex cp
2350
2351@bye