blob: adf270b4709c927a10bc560ba129e68ac53b3c2e [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)
bellard9d0a8e62005-07-03 17:34:05 +000075@item G3 BW PowerMac (PowerPC processor)
76@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)
balrogb00052e2007-04-30 02:22:06 +000084@item Spitz, Akita, Borzoi and Terrier 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)
bellard52c00a52004-04-25 21:27:03 +000092@end itemize
bellard386405f2003-03-23 21:28:45 +000093
thsd9aedc32007-12-17 03:47:55 +000094For user emulation, x86, PowerPC, ARM, 32-bit MIPS, Sparc32/64 and ColdFire(m68k) CPUs are supported.
bellard0806e3f2003-10-01 00:15:32 +000095
bellarddebc7062006-04-30 21:58:41 +000096@node Installation
bellard5b9f4572003-10-28 00:49:54 +000097@chapter Installation
98
bellard15a34c62004-07-08 21:26:26 +000099If you want to compile QEMU yourself, see @ref{compilation}.
100
bellarddebc7062006-04-30 21:58:41 +0000101@menu
102* install_linux:: Linux
103* install_windows:: Windows
104* install_mac:: Macintosh
105@end menu
106
107@node install_linux
bellard1f673132004-04-04 15:21:17 +0000108@section Linux
109
bellard7c3fc842005-02-10 21:46:47 +0000110If a precompiled package is available for your distribution - you just
111have to install it. Otherwise, see @ref{compilation}.
bellard5b9f4572003-10-28 00:49:54 +0000112
bellarddebc7062006-04-30 21:58:41 +0000113@node install_windows
bellard1f673132004-04-04 15:21:17 +0000114@section Windows
bellard8cd0ac22004-05-12 19:09:16 +0000115
bellard15a34c62004-07-08 21:26:26 +0000116Download the experimental binary installer at
bellarddebc7062006-04-30 21:58:41 +0000117@url{http://www.free.oszoo.org/@/download.html}.
bellardd691f662003-03-24 21:58:34 +0000118
bellarddebc7062006-04-30 21:58:41 +0000119@node install_mac
bellard1f673132004-04-04 15:21:17 +0000120@section Mac OS X
bellardd691f662003-03-24 21:58:34 +0000121
bellard15a34c62004-07-08 21:26:26 +0000122Download the experimental binary installer at
bellarddebc7062006-04-30 21:58:41 +0000123@url{http://www.free.oszoo.org/@/download.html}.
bellarddf0f11a2003-05-28 00:27:57 +0000124
bellarddebc7062006-04-30 21:58:41 +0000125@node QEMU PC System emulator
bellard3f9f3aa2005-12-18 20:11:37 +0000126@chapter QEMU PC System emulator
bellard1eb20522003-06-25 16:21:49 +0000127
bellarddebc7062006-04-30 21:58:41 +0000128@menu
129* pcsys_introduction:: Introduction
130* pcsys_quickstart:: Quick Start
131* sec_invocation:: Invocation
132* pcsys_keys:: Keys
133* pcsys_monitor:: QEMU Monitor
134* disk_images:: Disk Images
135* pcsys_network:: Network emulation
136* direct_linux_boot:: Direct Linux Boot
137* pcsys_usb:: USB emulation
thsf858dca2007-08-25 01:40:37 +0000138* vnc_security:: VNC security
bellarddebc7062006-04-30 21:58:41 +0000139* gdb_usage:: GDB usage
140* pcsys_os_specific:: Target OS specific information
141@end menu
142
143@node pcsys_introduction
bellard0806e3f2003-10-01 00:15:32 +0000144@section Introduction
145
146@c man begin DESCRIPTION
147
bellard3f9f3aa2005-12-18 20:11:37 +0000148The QEMU PC System emulator simulates the
149following peripherals:
bellard0806e3f2003-10-01 00:15:32 +0000150
151@itemize @minus
ths5fafdf22007-09-16 21:08:06 +0000152@item
bellard15a34c62004-07-08 21:26:26 +0000153i440FX host PCI bridge and PIIX3 PCI to ISA bridge
bellard0806e3f2003-10-01 00:15:32 +0000154@item
bellard15a34c62004-07-08 21:26:26 +0000155Cirrus CLGD 5446 PCI VGA card or dummy VGA card with Bochs VESA
156extensions (hardware level, including all non standard modes).
bellard0806e3f2003-10-01 00:15:32 +0000157@item
158PS/2 mouse and keyboard
ths5fafdf22007-09-16 21:08:06 +0000159@item
bellard15a34c62004-07-08 21:26:26 +00001602 PCI IDE interfaces with hard disk and CD-ROM support
bellard1f673132004-04-04 15:21:17 +0000161@item
162Floppy disk
ths5fafdf22007-09-16 21:08:06 +0000163@item
blueswir1c4a70602007-05-27 19:41:17 +0000164PCI/ISA PCI network adapters
bellard0806e3f2003-10-01 00:15:32 +0000165@item
bellard05d58182004-08-24 21:12:04 +0000166Serial ports
167@item
bellardc0fe3822005-11-05 18:55:28 +0000168Creative SoundBlaster 16 sound card
169@item
170ENSONIQ AudioPCI ES1370 sound card
171@item
balroge5c9a132008-01-14 04:27:55 +0000172Intel 82801AA AC97 Audio compatible sound card
173@item
bellardc0fe3822005-11-05 18:55:28 +0000174Adlib(OPL2) - Yamaha YM3812 compatible chip
bellardb389dbf2005-11-06 16:49:55 +0000175@item
balrog26463db2008-01-17 21:47:25 +0000176Gravis Ultrasound GF1 sound card
177@item
malccc53d262008-06-13 10:48:22 +0000178CS4231A compatible sound card
179@item
bellardb389dbf2005-11-06 16:49:55 +0000180PCI UHCI USB controller and a virtual USB hub.
bellard0806e3f2003-10-01 00:15:32 +0000181@end itemize
182
bellard3f9f3aa2005-12-18 20:11:37 +0000183SMP is supported with up to 255 CPUs.
184
malccc53d262008-06-13 10:48:22 +0000185Note that adlib, ac97, gus and cs4231a are only available when QEMU
malc0c58ac12008-06-25 21:04:05 +0000186was configured with --audio-card-list option containing the name(s) of
malce5178e82008-06-28 19:13:02 +0000187required card(s).
bellardc0fe3822005-11-05 18:55:28 +0000188
bellard15a34c62004-07-08 21:26:26 +0000189QEMU uses the PC BIOS from the Bochs project and the Plex86/Bochs LGPL
190VGA BIOS.
191
bellardc0fe3822005-11-05 18:55:28 +0000192QEMU uses YM3812 emulation by Tatsuyuki Satoh.
193
balrog26463db2008-01-17 21:47:25 +0000194QEMU uses GUS emulation(GUSEMU32 @url{http://www.deinmeister.de/gusemu/})
195by Tibor "TS" Schütz.
balrog423d65f2008-01-14 22:09:11 +0000196
malccc53d262008-06-13 10:48:22 +0000197CS4231A is the chip used in Windows Sound System and GUSMAX products
198
bellard0806e3f2003-10-01 00:15:32 +0000199@c man end
200
bellarddebc7062006-04-30 21:58:41 +0000201@node pcsys_quickstart
bellard1eb20522003-06-25 16:21:49 +0000202@section Quick Start
203
bellard285dc332003-10-27 23:58:04 +0000204Download and uncompress the linux image (@file{linux.img}) and type:
bellard0806e3f2003-10-01 00:15:32 +0000205
206@example
bellard285dc332003-10-27 23:58:04 +0000207qemu linux.img
bellard0806e3f2003-10-01 00:15:32 +0000208@end example
209
210Linux should boot and give you a prompt.
211
bellard6cc721c2005-07-28 22:27:28 +0000212@node sec_invocation
bellard1f673132004-04-04 15:21:17 +0000213@section Invocation
214
215@example
216@c man begin SYNOPSIS
ths89dfe892007-11-21 22:38:37 +0000217usage: qemu [options] [@var{disk_image}]
bellard1f673132004-04-04 15:21:17 +0000218@c man end
219@end example
220
221@c man begin OPTIONS
222@var{disk_image} is a raw hard disk image for IDE hard disk 0.
223
224General options:
225@table @option
ths89dfe892007-11-21 22:38:37 +0000226@item -M @var{machine}
227Select the emulated @var{machine} (@code{-M ?} for list)
bellard3dbbdc22005-11-06 18:20:37 +0000228
ths89dfe892007-11-21 22:38:37 +0000229@item -fda @var{file}
230@item -fdb @var{file}
bellarddebc7062006-04-30 21:58:41 +0000231Use @var{file} as floppy disk 0/1 image (@pxref{disk_images}). You can
bellard19cb3732006-08-19 11:45:59 +0000232use the host floppy by using @file{/dev/fd0} as filename (@pxref{host_drives}).
bellard1f673132004-04-04 15:21:17 +0000233
ths89dfe892007-11-21 22:38:37 +0000234@item -hda @var{file}
235@item -hdb @var{file}
236@item -hdc @var{file}
237@item -hdd @var{file}
bellarddebc7062006-04-30 21:58:41 +0000238Use @var{file} as hard disk 0, 1, 2 or 3 image (@pxref{disk_images}).
bellard1f673132004-04-04 15:21:17 +0000239
ths89dfe892007-11-21 22:38:37 +0000240@item -cdrom @var{file}
241Use @var{file} as CD-ROM image (you cannot use @option{-hdc} and
bellardbe3edd92004-06-03 12:48:45 +0000242@option{-cdrom} at the same time). You can use the host CD-ROM by
bellard19cb3732006-08-19 11:45:59 +0000243using @file{/dev/cdrom} as filename (@pxref{host_drives}).
bellard1f673132004-04-04 15:21:17 +0000244
balroge0e7ada2007-12-11 21:56:43 +0000245@item -drive @var{option}[,@var{option}[,@var{option}[,...]]]
246
247Define a new drive. Valid options are:
248
249@table @code
250@item file=@var{file}
251This option defines which disk image (@pxref{disk_images}) to use with
balrog609497a2008-01-14 02:56:53 +0000252this drive. If the filename contains comma, you must double it
253(for instance, "file=my,,file" to use file "my,file").
balroge0e7ada2007-12-11 21:56:43 +0000254@item if=@var{interface}
255This option defines on which type on interface the drive is connected.
256Available types are: ide, scsi, sd, mtd, floppy, pflash.
257@item bus=@var{bus},unit=@var{unit}
258These options define where is connected the drive by defining the bus number and
259the unit id.
260@item index=@var{index}
261This option defines where is connected the drive by using an index in the list
262of available connectors of a given interface type.
263@item media=@var{media}
264This option defines the type of the media: disk or cdrom.
265@item cyls=@var{c},heads=@var{h},secs=@var{s}[,trans=@var{t}]
266These options have the same definition as they have in @option{-hdachs}.
267@item snapshot=@var{snapshot}
268@var{snapshot} is "on" or "off" and allows to enable snapshot for given drive (see @option{-snapshot}).
balrog33f00272007-12-24 14:33:24 +0000269@item cache=@var{cache}
270@var{cache} is "on" or "off" and allows to disable host cache to access data.
aurel321e72d3b2008-04-28 20:26:45 +0000271@item format=@var{format}
272Specify which disk @var{format} will be used rather than detecting
273the format. Can be used to specifiy format=raw to avoid interpreting
274an untrusted format header.
balroge0e7ada2007-12-11 21:56:43 +0000275@end table
276
277Instead of @option{-cdrom} you can use:
278@example
279qemu -drive file=file,index=2,media=cdrom
280@end example
281
282Instead of @option{-hda}, @option{-hdb}, @option{-hdc}, @option{-hdd}, you can
283use:
284@example
285qemu -drive file=file,index=0,media=disk
286qemu -drive file=file,index=1,media=disk
287qemu -drive file=file,index=2,media=disk
288qemu -drive file=file,index=3,media=disk
289@end example
290
291You can connect a CDROM to the slave of ide0:
292@example
293qemu -drive file=file,if=ide,index=1,media=cdrom
294@end example
295
296If you don't specify the "file=" argument, you define an empty drive:
297@example
298qemu -drive if=ide,index=1,media=cdrom
299@end example
300
301You can connect a SCSI disk with unit ID 6 on the bus #0:
302@example
303qemu -drive file=file,if=scsi,bus=0,unit=6
304@end example
305
306Instead of @option{-fda}, @option{-fdb}, you can use:
307@example
308qemu -drive file=file,index=0,if=floppy
309qemu -drive file=file,index=1,if=floppy
310@end example
311
312By default, @var{interface} is "ide" and @var{index} is automatically
313incremented:
314@example
315qemu -drive file=a -drive file=b"
316@end example
317is interpreted like:
318@example
319qemu -hda a -hdb b
320@end example
321
thseec85c22007-01-05 17:41:07 +0000322@item -boot [a|c|d|n]
323Boot on floppy (a), hard disk (c), CD-ROM (d), or Etherboot (n). Hard disk boot
324is the default.
bellard1f673132004-04-04 15:21:17 +0000325
326@item -snapshot
327Write to temporary files instead of disk image files. In this case,
328the raw disk image you use is not written back. You can however force
ths42550fd2006-12-22 16:34:12 +0000329the write back by pressing @key{C-a s} (@pxref{disk_images}).
bellard1f673132004-04-04 15:21:17 +0000330
bellard52ca8d62006-06-14 16:03:05 +0000331@item -no-fd-bootchk
332Disable boot signature checking for floppy disks in Bochs BIOS. It may
333be needed to boot from old floppy disks.
334
ths89dfe892007-11-21 22:38:37 +0000335@item -m @var{megs}
aurel3200f82b82008-04-27 21:12:55 +0000336Set virtual RAM size to @var{megs} megabytes. Default is 128 MiB. Optionally,
337a suffix of ``M'' or ``G'' can be used to signify a value in megabytes or
338gigabytes respectively.
bellard1f673132004-04-04 15:21:17 +0000339
blueswir134a3d232008-10-04 20:43:39 +0000340@item -cpu @var{model}
341Select CPU model (-cpu ? for list and additional feature selection)
342
ths89dfe892007-11-21 22:38:37 +0000343@item -smp @var{n}
bellard3f9f3aa2005-12-18 20:11:37 +0000344Simulate an SMP system with @var{n} CPUs. On the PC target, up to 255
blueswir1a785e422007-10-20 08:09:05 +0000345CPUs are supported. On Sparc32 target, Linux limits the number of usable CPUs
346to 4.
bellard3f9f3aa2005-12-18 20:11:37 +0000347
bellard1d14ffa2005-10-30 18:58:22 +0000348@item -audio-help
349
350Will show the audio subsystem help: list of drivers, tunable
351parameters.
352
ths89dfe892007-11-21 22:38:37 +0000353@item -soundhw @var{card1}[,@var{card2},...] or -soundhw all
bellard1d14ffa2005-10-30 18:58:22 +0000354
355Enable audio and selected sound hardware. Use ? to print all
356available sound hardware.
357
358@example
359qemu -soundhw sb16,adlib hda
360qemu -soundhw es1370 hda
balroge5c9a132008-01-14 04:27:55 +0000361qemu -soundhw ac97 hda
bellard6a36d842005-12-18 20:34:32 +0000362qemu -soundhw all hda
bellard1d14ffa2005-10-30 18:58:22 +0000363qemu -soundhw ?
364@end example
bellarda8c490c2004-04-26 20:59:17 +0000365
balroge5c9a132008-01-14 04:27:55 +0000366Note that Linux's i810_audio OSS kernel (for AC97) module might
367require manually specifying clocking.
368
369@example
370modprobe i810_audio clocking=48000
371@end example
372
bellard15a34c62004-07-08 21:26:26 +0000373@item -localtime
374Set the real time clock to local time (the default is to UTC
375time). This option is needed to have correct date in MS-DOS or
376Windows.
377
ths89dfe892007-11-21 22:38:37 +0000378@item -startdate @var{date}
bellard7e0af5d02007-11-07 16:24:33 +0000379Set the initial date of the real time clock. Valid format for
380@var{date} are: @code{now} or @code{2006-06-17T16:01:21} or
381@code{2006-06-17}. The default value is @code{now}.
382
ths89dfe892007-11-21 22:38:37 +0000383@item -pidfile @var{file}
bellardf7cce892004-12-08 22:21:25 +0000384Store the QEMU process PID in @var{file}. It is useful if you launch QEMU
385from a script.
386
ths71e3ceb2006-12-22 02:11:31 +0000387@item -daemonize
388Daemonize the QEMU process after initialization. QEMU will not detach from
389standard IO until it is ready to receive connections on any of its devices.
390This option is a useful way for external programs to launch QEMU without having
391to cope with initialization race conditions.
392
bellard9d0a8e62005-07-03 17:34:05 +0000393@item -win2k-hack
394Use it when installing Windows 2000 to avoid a disk full bug. After
395Windows 2000 is installed, you no longer need this option (this option
396slows down the IDE transfers).
397
ths89dfe892007-11-21 22:38:37 +0000398@item -option-rom @var{file}
399Load the contents of @var{file} as an option ROM.
400This option is useful to load things like EtherBoot.
ths9ae02552007-01-05 17:39:04 +0000401
ths89dfe892007-11-21 22:38:37 +0000402@item -name @var{name}
403Sets the @var{name} of the guest.
404This name will be display in the SDL window caption.
405The @var{name} will also be used for the VNC server.
thsc35734b2007-03-19 15:17:08 +0000406
bellard1f673132004-04-04 15:21:17 +0000407@end table
408
thsf858dca2007-08-25 01:40:37 +0000409Display options:
410@table @option
411
412@item -nographic
413
414Normally, QEMU uses SDL to display the VGA output. With this option,
415you can totally disable graphical output so that QEMU is a simple
416command line application. The emulated serial port is redirected on
417the console. Therefore, you can still use QEMU to debug a Linux kernel
418with a serial console.
419
aurel32052caf72008-03-18 06:51:54 +0000420@item -curses
421
422Normally, QEMU uses SDL to display the VGA output. With this option,
423QEMU can display the VGA output when in text mode using a
424curses/ncurses interface. Nothing is displayed in graphical mode.
425
thsf858dca2007-08-25 01:40:37 +0000426@item -no-frame
427
428Do not use decorations for SDL windows and start them using the whole
429available screen space. This makes the using QEMU in a dedicated desktop
430workspace more convenient.
431
aurel3299aa9e42008-04-11 21:35:59 +0000432@item -no-quit
433
434Disable SDL window close capability.
435
thsf858dca2007-08-25 01:40:37 +0000436@item -full-screen
437Start in full screen.
438
ths89dfe892007-11-21 22:38:37 +0000439@item -vnc @var{display}[,@var{option}[,@var{option}[,...]]]
thsf858dca2007-08-25 01:40:37 +0000440
441Normally, QEMU uses SDL to display the VGA output. With this option,
442you can have QEMU listen on VNC display @var{display} and redirect the VGA
443display over the VNC session. It is very useful to enable the usb
444tablet device when using this option (option @option{-usbdevice
445tablet}). When using the VNC display, you must use the @option{-k}
446parameter to set the keyboard layout if you are not using en-us. Valid
447syntax for the @var{display} is
448
449@table @code
450
balrog3aa3eea2008-02-03 02:54:04 +0000451@item @var{host}:@var{d}
thsf858dca2007-08-25 01:40:37 +0000452
balrog3aa3eea2008-02-03 02:54:04 +0000453TCP connections will only be allowed from @var{host} on display @var{d}.
454By convention the TCP port is 5900+@var{d}. Optionally, @var{host} can
455be omitted in which case the server will accept connections from any host.
thsf858dca2007-08-25 01:40:37 +0000456
balrog3aa3eea2008-02-03 02:54:04 +0000457@item @code{unix}:@var{path}
thsf858dca2007-08-25 01:40:37 +0000458
459Connections will be allowed over UNIX domain sockets where @var{path} is the
460location of a unix socket to listen for connections on.
461
ths89dfe892007-11-21 22:38:37 +0000462@item none
thsf858dca2007-08-25 01:40:37 +0000463
balrog3aa3eea2008-02-03 02:54:04 +0000464VNC is initialized but not started. The monitor @code{change} command
465can be used to later start the VNC server.
thsf858dca2007-08-25 01:40:37 +0000466
467@end table
468
469Following the @var{display} value there may be one or more @var{option} flags
470separated by commas. Valid options are
471
472@table @code
473
balrog3aa3eea2008-02-03 02:54:04 +0000474@item reverse
475
476Connect to a listening VNC client via a ``reverse'' connection. The
477client is specified by the @var{display}. For reverse network
478connections (@var{host}:@var{d},@code{reverse}), the @var{d} argument
479is a TCP port number, not a display number.
480
ths89dfe892007-11-21 22:38:37 +0000481@item password
thsf858dca2007-08-25 01:40:37 +0000482
483Require that password based authentication is used for client connections.
484The password must be set separately using the @code{change} command in the
485@ref{pcsys_monitor}
486
ths89dfe892007-11-21 22:38:37 +0000487@item tls
thsf858dca2007-08-25 01:40:37 +0000488
489Require that client use TLS when communicating with the VNC server. This
490uses anonymous TLS credentials so is susceptible to a man-in-the-middle
491attack. It is recommended that this option be combined with either the
492@var{x509} or @var{x509verify} options.
493
ths89dfe892007-11-21 22:38:37 +0000494@item x509=@var{/path/to/certificate/dir}
thsf858dca2007-08-25 01:40:37 +0000495
ths89dfe892007-11-21 22:38:37 +0000496Valid if @option{tls} is specified. Require that x509 credentials are used
thsf858dca2007-08-25 01:40:37 +0000497for negotiating the TLS session. The server will send its x509 certificate
498to the client. It is recommended that a password be set on the VNC server
499to provide authentication of the client when this is used. The path following
500this option specifies where the x509 certificates are to be loaded from.
501See the @ref{vnc_security} section for details on generating certificates.
502
ths89dfe892007-11-21 22:38:37 +0000503@item x509verify=@var{/path/to/certificate/dir}
thsf858dca2007-08-25 01:40:37 +0000504
ths89dfe892007-11-21 22:38:37 +0000505Valid if @option{tls} is specified. Require that x509 credentials are used
thsf858dca2007-08-25 01:40:37 +0000506for negotiating the TLS session. The server will send its x509 certificate
507to the client, and request that the client send its own x509 certificate.
508The server will validate the client's certificate against the CA certificate,
509and reject clients when validation fails. If the certificate authority is
510trusted, this is a sufficient authentication mechanism. You may still wish
511to set a password on the VNC server as a second authentication layer. The
512path following this option specifies where the x509 certificates are to
513be loaded from. See the @ref{vnc_security} section for details on generating
514certificates.
515
516@end table
517
ths89dfe892007-11-21 22:38:37 +0000518@item -k @var{language}
thsf858dca2007-08-25 01:40:37 +0000519
520Use keyboard layout @var{language} (for example @code{fr} for
521French). This option is only needed where it is not easy to get raw PC
522keycodes (e.g. on Macs, with some X11 servers or with a VNC
523display). You don't normally need to use it on PC/Linux or PC/Windows
524hosts.
525
526The available layouts are:
527@example
528ar de-ch es fo fr-ca hu ja mk no pt-br sv
529da en-gb et fr fr-ch is lt nl pl ru th
530de en-us fi fr-be hr it lv nl-be pt sl tr
531@end example
532
533The default is @code{en-us}.
534
535@end table
536
bellardb389dbf2005-11-06 16:49:55 +0000537USB options:
538@table @option
539
540@item -usb
541Enable the USB driver (will be the default soon)
542
ths89dfe892007-11-21 22:38:37 +0000543@item -usbdevice @var{devname}
pbrook0aff66b2006-05-26 00:49:52 +0000544Add the USB device @var{devname}. @xref{usb_devices}.
ths8fccda82008-01-09 12:14:45 +0000545
546@table @code
547
548@item mouse
549Virtual Mouse. This will override the PS/2 mouse emulation when activated.
550
551@item tablet
552Pointer device that uses absolute coordinates (like a touchscreen). This
553means qemu is able to report the mouse position without having to grab the
554mouse. Also overrides the PS/2 mouse emulation when activated.
555
aurel32334c0242008-08-21 22:24:32 +0000556@item disk:[format=@var{format}]:file
557Mass storage device based on file. The optional @var{format} argument
558will be used rather than detecting the format. Can be used to specifiy
559format=raw to avoid interpreting an untrusted format header.
ths8fccda82008-01-09 12:14:45 +0000560
561@item host:bus.addr
562Pass through the host device identified by bus.addr (Linux only).
563
564@item host:vendor_id:product_id
565Pass through the host device identified by vendor_id:product_id (Linux only).
566
balrogdb380c02008-01-17 22:22:45 +0000567@item serial:[vendorid=@var{vendor_id}][,productid=@var{product_id}]:@var{dev}
568Serial converter to host character device @var{dev}, see @code{-serial} for the
569available devices.
570
aurel322e4d9fb2008-04-08 06:01:02 +0000571@item braille
572Braille device. This will use BrlAPI to display the braille output on a real
573or fake device.
574
balrog9ad97e62008-07-29 13:16:31 +0000575@item net:options
balrog6c9f8862008-07-17 20:47:13 +0000576Network adapter that supports CDC ethernet and RNDIS protocols.
577
ths8fccda82008-01-09 12:14:45 +0000578@end table
579
bellardb389dbf2005-11-06 16:49:55 +0000580@end table
581
bellard1f673132004-04-04 15:21:17 +0000582Network options:
583
584@table @option
585
ths89dfe892007-11-21 22:38:37 +0000586@item -net nic[,vlan=@var{n}][,macaddr=@var{addr}][,model=@var{type}]
bellard41d03942005-11-15 23:02:53 +0000587Create a new Network Interface Card and connect it to VLAN @var{n} (@var{n}
blueswir1c4a70602007-05-27 19:41:17 +0000588= 0 is the default). The NIC is an ne2k_pci by default on the PC
bellard41d03942005-11-15 23:02:53 +0000589target. Optionally, the MAC address can be changed. If no
590@option{-net} option is specified, a single NIC is created.
balrog549444e2007-05-01 17:53:37 +0000591Qemu can emulate several different models of network card.
592Valid values for @var{type} are
593@code{i82551}, @code{i82557b}, @code{i82559er},
594@code{ne2k_pci}, @code{ne2k_isa}, @code{pcnet}, @code{rtl8139},
balrog9ad97e62008-07-29 13:16:31 +0000595@code{e1000}, @code{smc91c111}, @code{lance} and @code{mcf_fec}.
blueswir1c4a70602007-05-27 19:41:17 +0000596Not all devices are supported on all targets. Use -net nic,model=?
597for a list of available devices for your target.
bellard1f673132004-04-04 15:21:17 +0000598
ths89dfe892007-11-21 22:38:37 +0000599@item -net user[,vlan=@var{n}][,hostname=@var{name}]
bellard7e894632005-11-19 17:42:52 +0000600Use the user mode network stack which requires no administrator
ths4be456f2007-06-03 13:41:28 +0000601privilege to run. @option{hostname=name} can be used to specify the client
pbrook115defd2006-04-16 11:06:58 +0000602hostname reported by the builtin DHCP server.
bellard3f1a88f2005-06-05 16:48:41 +0000603
ths89dfe892007-11-21 22:38:37 +0000604@item -net tap[,vlan=@var{n}][,fd=@var{h}][,ifname=@var{name}][,script=@var{file}]
bellard41d03942005-11-15 23:02:53 +0000605Connect the host TAP network interface @var{name} to VLAN @var{n} and
606use the network script @var{file} to configure it. The default
ths6a1cbf62007-02-02 00:37:56 +0000607network script is @file{/etc/qemu-ifup}. Use @option{script=no} to
608disable script execution. If @var{name} is not
ths89dfe892007-11-21 22:38:37 +0000609provided, the OS automatically provides one. @option{fd}=@var{h} can be
bellard41d03942005-11-15 23:02:53 +0000610used to specify the handle of an already opened host TAP interface. Example:
bellard3f1a88f2005-06-05 16:48:41 +0000611
bellard41d03942005-11-15 23:02:53 +0000612@example
613qemu linux.img -net nic -net tap
614@end example
bellard1f673132004-04-04 15:21:17 +0000615
bellard41d03942005-11-15 23:02:53 +0000616More complicated example (two NICs, each one connected to a TAP device)
617@example
618qemu linux.img -net nic,vlan=0 -net tap,vlan=0,ifname=tap0 \
619 -net nic,vlan=1 -net tap,vlan=1,ifname=tap1
620@end example
bellard1f673132004-04-04 15:21:17 +0000621
bellard52c00a52004-04-25 21:27:03 +0000622
ths89dfe892007-11-21 22:38:37 +0000623@item -net socket[,vlan=@var{n}][,fd=@var{h}][,listen=[@var{host}]:@var{port}][,connect=@var{host}:@var{port}]
bellard41d03942005-11-15 23:02:53 +0000624
625Connect the VLAN @var{n} to a remote VLAN in another QEMU virtual
626machine using a TCP socket connection. If @option{listen} is
627specified, QEMU waits for incoming connections on @var{port}
628(@var{host} is optional). @option{connect} is used to connect to
ths89dfe892007-11-21 22:38:37 +0000629another QEMU instance using the @option{listen} option. @option{fd}=@var{h}
bellard3d830452005-12-18 16:36:49 +0000630specifies an already opened TCP socket.
bellard41d03942005-11-15 23:02:53 +0000631
632Example:
633@example
634# launch a first QEMU instance
bellarddebc7062006-04-30 21:58:41 +0000635qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
636 -net socket,listen=:1234
637# connect the VLAN 0 of this instance to the VLAN 0
638# of the first instance
639qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
640 -net socket,connect=127.0.0.1:1234
bellard41d03942005-11-15 23:02:53 +0000641@end example
642
ths89dfe892007-11-21 22:38:37 +0000643@item -net socket[,vlan=@var{n}][,fd=@var{h}][,mcast=@var{maddr}:@var{port}]
bellard3d830452005-12-18 16:36:49 +0000644
645Create a VLAN @var{n} shared with another QEMU virtual
ths5fafdf22007-09-16 21:08:06 +0000646machines using a UDP multicast socket, effectively making a bus for
bellard3d830452005-12-18 16:36:49 +0000647every QEMU with same multicast address @var{maddr} and @var{port}.
648NOTES:
649@enumerate
ths5fafdf22007-09-16 21:08:06 +0000650@item
651Several QEMU can be running on different hosts and share same bus (assuming
bellard3d830452005-12-18 16:36:49 +0000652correct multicast setup for these hosts).
653@item
654mcast support is compatible with User Mode Linux (argument @option{eth@var{N}=mcast}), see
655@url{http://user-mode-linux.sf.net}.
ths4be456f2007-06-03 13:41:28 +0000656@item
657Use @option{fd=h} to specify an already opened UDP multicast socket.
bellard3d830452005-12-18 16:36:49 +0000658@end enumerate
659
660Example:
661@example
662# launch one QEMU instance
bellarddebc7062006-04-30 21:58:41 +0000663qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
664 -net socket,mcast=230.0.0.1:1234
bellard3d830452005-12-18 16:36:49 +0000665# launch another QEMU instance on same "bus"
bellarddebc7062006-04-30 21:58:41 +0000666qemu linux.img -net nic,macaddr=52:54:00:12:34:57 \
667 -net socket,mcast=230.0.0.1:1234
bellard3d830452005-12-18 16:36:49 +0000668# launch yet another QEMU instance on same "bus"
bellarddebc7062006-04-30 21:58:41 +0000669qemu linux.img -net nic,macaddr=52:54:00:12:34:58 \
670 -net socket,mcast=230.0.0.1:1234
bellard3d830452005-12-18 16:36:49 +0000671@end example
672
673Example (User Mode Linux compat.):
674@example
bellarddebc7062006-04-30 21:58:41 +0000675# launch QEMU instance (note mcast address selected
676# is UML's default)
677qemu linux.img -net nic,macaddr=52:54:00:12:34:56 \
678 -net socket,mcast=239.192.168.1:1102
bellard3d830452005-12-18 16:36:49 +0000679# launch UML
680/path/to/linux ubd0=/path/to/root_fs eth0=mcast
681@end example
682
ths8a16d272008-07-19 09:56:24 +0000683@item -net vde[,vlan=@var{n}][,sock=@var{socketpath}][,port=@var{n}][,group=@var{groupname}][,mode=@var{octalmode}]
684Connect VLAN @var{n} to PORT @var{n} of a vde switch running on host and
685listening for incoming connections on @var{socketpath}. Use GROUP @var{groupname}
686and MODE @var{octalmode} to change default ownership and permissions for
687communication port. This option is available only if QEMU has been compiled
688with vde support enabled.
689
690Example:
691@example
692# launch vde switch
693vde_switch -F -sock /tmp/myswitch
694# launch QEMU instance
695qemu linux.img -net nic -net vde,sock=/tmp/myswitch
696@end example
697
bellard41d03942005-11-15 23:02:53 +0000698@item -net none
699Indicate that no network devices should be configured. It is used to
bellard039af322006-02-01 21:30:55 +0000700override the default configuration (@option{-net nic -net user}) which
701is activated if no @option{-net} options are provided.
bellard52c00a52004-04-25 21:27:03 +0000702
ths89dfe892007-11-21 22:38:37 +0000703@item -tftp @var{dir}
bellard9bf05442004-08-25 22:12:49 +0000704When using the user mode network stack, activate a built-in TFTP
ths0db11372007-02-20 00:12:07 +0000705server. The files in @var{dir} will be exposed as the root of a TFTP server.
706The TFTP client on the guest must be configured in binary mode (use the command
707@code{bin} of the Unix TFTP client). The host IP address on the guest is as
708usual 10.0.2.2.
bellard9bf05442004-08-25 22:12:49 +0000709
ths89dfe892007-11-21 22:38:37 +0000710@item -bootp @var{file}
ths47d5d012007-02-20 00:05:08 +0000711When using the user mode network stack, broadcast @var{file} as the BOOTP
712filename. In conjunction with @option{-tftp}, this can be used to network boot
713a guest from a local directory.
714
715Example (using pxelinux):
716@example
717qemu -hda linux.img -boot n -tftp /path/to/tftp/files -bootp /pxelinux.0
718@end example
719
ths89dfe892007-11-21 22:38:37 +0000720@item -smb @var{dir}
bellard2518bd02004-09-30 22:35:13 +0000721When using the user mode network stack, activate a built-in SMB
ths89dfe892007-11-21 22:38:37 +0000722server so that Windows OSes can access to the host files in @file{@var{dir}}
bellard2518bd02004-09-30 22:35:13 +0000723transparently.
724
725In the guest Windows OS, the line:
726@example
72710.0.2.4 smbserver
728@end example
729must be added in the file @file{C:\WINDOWS\LMHOSTS} (for windows 9x/Me)
730or @file{C:\WINNT\SYSTEM32\DRIVERS\ETC\LMHOSTS} (Windows NT/2000).
731
ths89dfe892007-11-21 22:38:37 +0000732Then @file{@var{dir}} can be accessed in @file{\\smbserver\qemu}.
bellard2518bd02004-09-30 22:35:13 +0000733
734Note that a SAMBA server must be installed on the host OS in
ths366dfc52006-12-11 18:35:08 +0000735@file{/usr/sbin/smbd}. QEMU was tested successfully with smbd version
bellard6cc721c2005-07-28 22:27:28 +00007362.2.7a from the Red Hat 9 and version 3.0.10-1.fc3 from Fedora Core 3.
bellard2518bd02004-09-30 22:35:13 +0000737
ths89dfe892007-11-21 22:38:37 +0000738@item -redir [tcp|udp]:@var{host-port}:[@var{guest-host}]:@var{guest-port}
bellard9bf05442004-08-25 22:12:49 +0000739
740When using the user mode network stack, redirect incoming TCP or UDP
741connections to the host port @var{host-port} to the guest
742@var{guest-host} on guest port @var{guest-port}. If @var{guest-host}
743is not specified, its value is 10.0.2.15 (default address given by the
744built-in DHCP server).
745
746For example, to redirect host X11 connection from screen 1 to guest
747screen 0, use the following:
748
749@example
750# on the host
751qemu -redir tcp:6001::6000 [...]
752# this host xterm should open in the guest X11 server
753xterm -display :1
754@end example
755
756To redirect telnet connections from host port 5555 to telnet port on
757the guest, use the following:
758
759@example
760# on the host
761qemu -redir tcp:5555::23 [...]
762telnet localhost 5555
763@end example
764
765Then when you use on the host @code{telnet localhost 5555}, you
766connect to the guest telnet server.
767
bellard1f673132004-04-04 15:21:17 +0000768@end table
769
bellard41d03942005-11-15 23:02:53 +0000770Linux boot specific: When using these options, you can use a given
bellard1f673132004-04-04 15:21:17 +0000771Linux kernel without installing it in the disk image. It can be useful
772for easier testing of various kernels.
773
774@table @option
775
ths89dfe892007-11-21 22:38:37 +0000776@item -kernel @var{bzImage}
bellard1f673132004-04-04 15:21:17 +0000777Use @var{bzImage} as kernel image.
778
ths89dfe892007-11-21 22:38:37 +0000779@item -append @var{cmdline}
bellard1f673132004-04-04 15:21:17 +0000780Use @var{cmdline} as kernel command line
781
ths89dfe892007-11-21 22:38:37 +0000782@item -initrd @var{file}
bellard1f673132004-04-04 15:21:17 +0000783Use @var{file} as initial ram disk.
784
785@end table
786
bellard15a34c62004-07-08 21:26:26 +0000787Debug/Expert options:
bellard1f673132004-04-04 15:21:17 +0000788@table @option
bellarda0a821a2004-07-14 17:38:57 +0000789
ths89dfe892007-11-21 22:38:37 +0000790@item -serial @var{dev}
bellard0bab00f2006-06-25 14:49:44 +0000791Redirect the virtual serial port to host character device
792@var{dev}. The default device is @code{vc} in graphical mode and
793@code{stdio} in non graphical mode.
794
795This option can be used several times to simulate up to 4 serials
796ports.
797
bellardc03b0f02006-09-03 14:10:53 +0000798Use @code{-serial none} to disable all serial ports.
799
bellard0bab00f2006-06-25 14:49:44 +0000800Available character devices are:
bellarda0a821a2004-07-14 17:38:57 +0000801@table @code
thsaf3a9032007-07-11 23:14:59 +0000802@item vc[:WxH]
803Virtual console. Optionally, a width and height can be given in pixel with
804@example
805vc:800x600
806@end example
807It is also possible to specify width or height in characters:
808@example
809vc:80Cx24C
810@end example
bellarda0a821a2004-07-14 17:38:57 +0000811@item pty
812[Linux only] Pseudo TTY (a new PTY is automatically allocated)
bellardc03b0f02006-09-03 14:10:53 +0000813@item none
814No device is allocated.
bellarda0a821a2004-07-14 17:38:57 +0000815@item null
816void device
bellardf8d179e2005-11-08 22:30:36 +0000817@item /dev/XXX
bellarde57a8c02005-11-10 23:58:52 +0000818[Linux only] Use host tty, e.g. @file{/dev/ttyS0}. The host serial port
bellardf8d179e2005-11-08 22:30:36 +0000819parameters are set according to the emulated ones.
ths89dfe892007-11-21 22:38:37 +0000820@item /dev/parport@var{N}
bellarde57a8c02005-11-10 23:58:52 +0000821[Linux only, parallel port only] Use host parallel port
ths5867c882007-02-17 23:44:43 +0000822@var{N}. Currently SPP and EPP parallel port features can be used.
ths89dfe892007-11-21 22:38:37 +0000823@item file:@var{filename}
824Write output to @var{filename}. No character can be read.
bellarda0a821a2004-07-14 17:38:57 +0000825@item stdio
826[Unix only] standard input/output
ths89dfe892007-11-21 22:38:37 +0000827@item pipe:@var{filename}
bellard0bab00f2006-06-25 14:49:44 +0000828name pipe @var{filename}
ths89dfe892007-11-21 22:38:37 +0000829@item COM@var{n}
bellard0bab00f2006-06-25 14:49:44 +0000830[Windows only] Use host serial port @var{n}
ths89dfe892007-11-21 22:38:37 +0000831@item udp:[@var{remote_host}]:@var{remote_port}[@@[@var{src_ip}]:@var{src_port}]
832This implements UDP Net Console.
833When @var{remote_host} or @var{src_ip} are not specified
834they default to @code{0.0.0.0}.
835When not using a specified @var{src_port} a random port is automatically chosen.
bellarda0a821a2004-07-14 17:38:57 +0000836
bellard951f1352006-06-27 21:02:43 +0000837If you just want a simple readonly console you can use @code{netcat} or
838@code{nc}, by starting qemu with: @code{-serial udp::4555} and nc as:
839@code{nc -u -l -p 4555}. Any time qemu writes something to that port it
840will appear in the netconsole session.
bellard0bab00f2006-06-25 14:49:44 +0000841
842If you plan to send characters back via netconsole or you want to stop
843and start qemu a lot of times, you should have qemu use the same
844source port each time by using something like @code{-serial
bellard951f1352006-06-27 21:02:43 +0000845udp::4555@@:4556} to qemu. Another approach is to use a patched
bellard0bab00f2006-06-25 14:49:44 +0000846version of netcat which can listen to a TCP port and send and receive
847characters via udp. If you have a patched version of netcat which
848activates telnet remote echo and single char transfer, then you can
849use the following options to step up a netcat redirector to allow
850telnet on port 5555 to access the qemu port.
851@table @code
bellard951f1352006-06-27 21:02:43 +0000852@item Qemu Options:
853-serial udp::4555@@:4556
854@item netcat options:
855-u -P 4555 -L 0.0.0.0:4556 -t -p 5555 -I -T
856@item telnet options:
857localhost 5555
bellard0bab00f2006-06-25 14:49:44 +0000858@end table
859
860
ths89dfe892007-11-21 22:38:37 +0000861@item tcp:[@var{host}]:@var{port}[,@var{server}][,nowait][,nodelay]
bellard951f1352006-06-27 21:02:43 +0000862The TCP Net Console has two modes of operation. It can send the serial
863I/O to a location or wait for a connection from a location. By default
864the TCP Net Console is sent to @var{host} at the @var{port}. If you use
bellardf5420862006-08-21 20:26:44 +0000865the @var{server} option QEMU will wait for a client socket application
866to connect to the port before continuing, unless the @code{nowait}
pbrookf7499982007-01-28 00:10:01 +0000867option was specified. The @code{nodelay} option disables the Nagle buffering
ths4be456f2007-06-03 13:41:28 +0000868algorithm. If @var{host} is omitted, 0.0.0.0 is assumed. Only
bellard951f1352006-06-27 21:02:43 +0000869one TCP connection at a time is accepted. You can use @code{telnet} to
870connect to the corresponding character device.
871@table @code
872@item Example to send tcp console to 192.168.0.2 port 4444
873-serial tcp:192.168.0.2:4444
874@item Example to listen and wait on port 4444 for connection
875-serial tcp::4444,server
876@item Example to not wait and listen on ip 192.168.0.100 port 4444
877-serial tcp:192.168.0.100:4444,server,nowait
878@end table
879
ths89dfe892007-11-21 22:38:37 +0000880@item telnet:@var{host}:@var{port}[,server][,nowait][,nodelay]
bellard951f1352006-06-27 21:02:43 +0000881The telnet protocol is used instead of raw tcp sockets. The options
882work the same as if you had specified @code{-serial tcp}. The
883difference is that the port acts like a telnet server or client using
884telnet option negotiation. This will also allow you to send the
885MAGIC_SYSRQ sequence if you use a telnet that supports sending the break
886sequence. Typically in unix telnet you do it with Control-] and then
887type "send break" followed by pressing the enter key.
888
ths89dfe892007-11-21 22:38:37 +0000889@item unix:@var{path}[,server][,nowait]
thsffd843b2006-12-21 19:46:43 +0000890A unix domain socket is used instead of a tcp socket. The option works the
891same as if you had specified @code{-serial tcp} except the unix domain socket
892@var{path} is used for connections.
893
ths89dfe892007-11-21 22:38:37 +0000894@item mon:@var{dev_string}
ths20d8a3e2007-02-18 17:04:49 +0000895This is a special option to allow the monitor to be multiplexed onto
896another serial port. The monitor is accessed with key sequence of
897@key{Control-a} and then pressing @key{c}. See monitor access
898@ref{pcsys_keys} in the -nographic section for more keys.
899@var{dev_string} should be any one of the serial devices specified
900above. An example to multiplex the monitor onto a telnet server
901listening on port 4444 would be:
902@table @code
903@item -serial mon:telnet::4444,server,nowait
904@end table
905
aurel322e4d9fb2008-04-08 06:01:02 +0000906@item braille
907Braille device. This will use BrlAPI to display the braille output on a real
908or fake device.
909
bellard0bab00f2006-06-25 14:49:44 +0000910@end table
bellard05d58182004-08-24 21:12:04 +0000911
ths89dfe892007-11-21 22:38:37 +0000912@item -parallel @var{dev}
bellarde57a8c02005-11-10 23:58:52 +0000913Redirect the virtual parallel port to host device @var{dev} (same
914devices as the serial port). On Linux hosts, @file{/dev/parportN} can
915be used to use hardware devices connected on the corresponding host
916parallel port.
917
918This option can be used several times to simulate up to 3 parallel
919ports.
920
bellardc03b0f02006-09-03 14:10:53 +0000921Use @code{-parallel none} to disable all parallel ports.
922
ths89dfe892007-11-21 22:38:37 +0000923@item -monitor @var{dev}
bellarda0a821a2004-07-14 17:38:57 +0000924Redirect the monitor to host device @var{dev} (same devices as the
925serial port).
926The default device is @code{vc} in graphical mode and @code{stdio} in
927non graphical mode.
928
ths20d8a3e2007-02-18 17:04:49 +0000929@item -echr numeric_ascii_value
930Change the escape character used for switching to the monitor when using
931monitor and serial sharing. The default is @code{0x01} when using the
932@code{-nographic} option. @code{0x01} is equal to pressing
933@code{Control-a}. You can select a different character from the ascii
934control keys where 1 through 26 map to Control-a through Control-z. For
935instance you could use the either of the following to change the escape
936character to Control-t.
937@table @code
938@item -echr 0x14
939@item -echr 20
940@end table
941
bellard1f673132004-04-04 15:21:17 +0000942@item -s
ths5fafdf22007-09-16 21:08:06 +0000943Wait gdb connection to port 1234 (@pxref{gdb_usage}).
ths89dfe892007-11-21 22:38:37 +0000944@item -p @var{port}
pbrook4046d912007-01-28 01:53:16 +0000945Change gdb connection port. @var{port} can be either a decimal number
946to specify a TCP port, or a host device (same devices as the serial port).
bellard52c00a52004-04-25 21:27:03 +0000947@item -S
948Do not start CPU at startup (you must type 'c' in the monitor).
ths3b46e622007-09-17 08:09:54 +0000949@item -d
bellard1f673132004-04-04 15:21:17 +0000950Output log in /tmp/qemu.log
ths89dfe892007-11-21 22:38:37 +0000951@item -hdachs @var{c},@var{h},@var{s},[,@var{t}]
bellard46d47672004-11-16 01:45:27 +0000952Force hard disk 0 physical geometry (1 <= @var{c} <= 16383, 1 <=
953@var{h} <= 16, 1 <= @var{s} <= 63) and optionally force the BIOS
954translation mode (@var{t}=none, lba or auto). Usually QEMU can guess
ths4be456f2007-06-03 13:41:28 +0000955all those parameters. This option is useful for old MS-DOS disk
bellard46d47672004-11-16 01:45:27 +0000956images.
bellard7c3fc842005-02-10 21:46:47 +0000957
bellard87b47352006-08-17 17:22:54 +0000958@item -L path
959Set the directory for the BIOS, VGA BIOS and keymaps.
960
malc3893c122008-09-28 00:42:05 +0000961@item -vga @var{type}
962Select type of VGA card to emulate. Valid values for @var{type} are
963@table @code
964@item cirrus
965Cirrus Logic GD5446 Video card. All Windows versions starting from
966Windows 95 should recognize and use this graphic card. For optimal
967performances, use 16 bit color depth in the guest and the host OS.
968(This one is the default)
969@item std
970Standard VGA card with Bochs VBE extensions. If your guest OS
971supports the VESA 2.0 VBE extensions (e.g. Windows XP) and if you want
972to use high resolution modes (>= 1280x1024x16) then you should use
973this option.
974@item vmware
975VMWare SVGA-II compatible adapter. Use it if you have sufficiently
976recent XFree86/XOrg server or Windows guest with a driver for this
977card.
978@end table
bellard3cb08532006-06-21 21:19:50 +0000979
bellard3c656342006-07-14 13:13:51 +0000980@item -no-acpi
981Disable ACPI (Advanced Configuration and Power Interface) support. Use
982it if your guest OS complains about ACPI problems (PC target machine
983only).
984
bellardd1beab82006-10-02 19:44:22 +0000985@item -no-reboot
986Exit instead of rebooting.
987
aurel3299aa9e42008-04-11 21:35:59 +0000988@item -no-shutdown
989Don't exit QEMU on guest shutdown, but instead only stop the emulation.
990This allows for instance switching to monitor to commit changes to the
991disk image.
992
bellardd63d3072004-10-03 13:29:03 +0000993@item -loadvm file
994Start right away with a saved state (@code{loadvm} in monitor)
pbrook8e716212007-01-20 17:12:09 +0000995
996@item -semihosting
pbrooka87295e2007-05-26 15:09:38 +0000997Enable semihosting syscall emulation (ARM and M68K target machines only).
998
999On ARM this implements the "Angel" interface.
1000On M68K this implements the "ColdFire GDB" interface used by libgloss.
1001
pbrook8e716212007-01-20 17:12:09 +00001002Note that this allows guest direct access to the host filesystem,
1003so should only be used with trusted guest OS.
pbrook2e70f6e2008-06-29 01:03:05 +00001004
1005@item -icount [N|auto]
1006Enable virtual instruction counter. The virtual cpu will execute one
1007instruction every 2^N ns of virtual time. If @code{auto} is specified
1008then the virtual cpu speed will be automatically adjusted to keep virtual
1009time within a few seconds of real time.
1010
1011Note that while this option can give deterministic behavior, it does not
1012provide cycle accurate emulation. Modern CPUs contain superscalar out of
pbrookdd5d6fe2008-06-29 10:43:16 +00001013order cores with complex cache hierarchies. The number of instructions
pbrook2e70f6e2008-06-29 01:03:05 +00001014executed often has little or no correlation with actual performance.
bellard1f673132004-04-04 15:21:17 +00001015@end table
1016
bellard3e11db92004-07-14 17:47:14 +00001017@c man end
1018
bellarddebc7062006-04-30 21:58:41 +00001019@node pcsys_keys
bellard3e11db92004-07-14 17:47:14 +00001020@section Keys
1021
1022@c man begin OPTIONS
1023
bellarda1b74fe2004-05-08 13:26:35 +00001024During the graphical emulation, you can use the following keys:
1025@table @key
bellardf9859312004-10-03 14:33:10 +00001026@item Ctrl-Alt-f
bellarda1b74fe2004-05-08 13:26:35 +00001027Toggle full screen
bellarda0a821a2004-07-14 17:38:57 +00001028
bellardf9859312004-10-03 14:33:10 +00001029@item Ctrl-Alt-n
bellarda0a821a2004-07-14 17:38:57 +00001030Switch to virtual console 'n'. Standard console mappings are:
1031@table @emph
1032@item 1
1033Target system display
1034@item 2
1035Monitor
1036@item 3
1037Serial port
bellarda1b74fe2004-05-08 13:26:35 +00001038@end table
1039
bellardf9859312004-10-03 14:33:10 +00001040@item Ctrl-Alt
bellarda0a821a2004-07-14 17:38:57 +00001041Toggle mouse and keyboard grab.
1042@end table
1043
bellard3e11db92004-07-14 17:47:14 +00001044In the virtual consoles, you can use @key{Ctrl-Up}, @key{Ctrl-Down},
1045@key{Ctrl-PageUp} and @key{Ctrl-PageDown} to move in the back log.
1046
bellarda0a821a2004-07-14 17:38:57 +00001047During emulation, if you are using the @option{-nographic} option, use
1048@key{Ctrl-a h} to get terminal commands:
bellard1f673132004-04-04 15:21:17 +00001049
1050@table @key
bellarda1b74fe2004-05-08 13:26:35 +00001051@item Ctrl-a h
bellard1f673132004-04-04 15:21:17 +00001052Print this help
ths3b46e622007-09-17 08:09:54 +00001053@item Ctrl-a x
ths366dfc52006-12-11 18:35:08 +00001054Exit emulator
ths3b46e622007-09-17 08:09:54 +00001055@item Ctrl-a s
bellard1f673132004-04-04 15:21:17 +00001056Save disk data back to file (if -snapshot)
ths20d8a3e2007-02-18 17:04:49 +00001057@item Ctrl-a t
1058toggle console timestamps
bellarda1b74fe2004-05-08 13:26:35 +00001059@item Ctrl-a b
bellard1f673132004-04-04 15:21:17 +00001060Send break (magic sysrq in Linux)
bellarda1b74fe2004-05-08 13:26:35 +00001061@item Ctrl-a c
bellard1f673132004-04-04 15:21:17 +00001062Switch between console and monitor
bellarda1b74fe2004-05-08 13:26:35 +00001063@item Ctrl-a Ctrl-a
1064Send Ctrl-a
bellard1f673132004-04-04 15:21:17 +00001065@end table
1066@c man end
1067
1068@ignore
1069
bellard1f673132004-04-04 15:21:17 +00001070@c man begin SEEALSO
1071The HTML documentation of QEMU for more precise information and Linux
1072user mode emulator invocation.
1073@c man end
1074
1075@c man begin AUTHOR
1076Fabrice Bellard
1077@c man end
1078
1079@end ignore
1080
bellarddebc7062006-04-30 21:58:41 +00001081@node pcsys_monitor
bellard1f673132004-04-04 15:21:17 +00001082@section QEMU Monitor
1083
1084The QEMU monitor is used to give complex commands to the QEMU
1085emulator. You can use it to:
1086
1087@itemize @minus
1088
1089@item
thse5987522007-03-30 18:58:01 +00001090Remove or insert removable media images
ths89dfe892007-11-21 22:38:37 +00001091(such as CD-ROM or floppies).
bellard1f673132004-04-04 15:21:17 +00001092
ths5fafdf22007-09-16 21:08:06 +00001093@item
bellard1f673132004-04-04 15:21:17 +00001094Freeze/unfreeze the Virtual Machine (VM) and save or restore its state
1095from a disk file.
1096
1097@item Inspect the VM state without an external debugger.
1098
1099@end itemize
1100
1101@subsection Commands
1102
1103The following commands are available:
1104
1105@table @option
1106
ths89dfe892007-11-21 22:38:37 +00001107@item help or ? [@var{cmd}]
bellard1f673132004-04-04 15:21:17 +00001108Show the help for all commands or just for command @var{cmd}.
1109
ths3b46e622007-09-17 08:09:54 +00001110@item commit
ths89dfe892007-11-21 22:38:37 +00001111Commit changes to the disk images (if -snapshot is used).
bellard1f673132004-04-04 15:21:17 +00001112
ths89dfe892007-11-21 22:38:37 +00001113@item info @var{subcommand}
1114Show various information about the system state.
bellard1f673132004-04-04 15:21:17 +00001115
1116@table @option
1117@item info network
bellard41d03942005-11-15 23:02:53 +00001118show the various VLANs and the associated devices
bellard1f673132004-04-04 15:21:17 +00001119@item info block
1120show the block devices
1121@item info registers
1122show the cpu registers
1123@item info history
1124show the command line history
bellardb389dbf2005-11-06 16:49:55 +00001125@item info pci
1126show emulated PCI device
1127@item info usb
1128show USB devices plugged on the virtual USB hub
1129@item info usbhost
1130show all USB host devices
bellarda3c25992006-07-18 21:09:59 +00001131@item info capture
1132show information about active capturing
bellard13a2e802006-08-06 14:50:31 +00001133@item info snapshots
1134show list of VM snapshots
ths455204e2007-01-05 16:42:13 +00001135@item info mice
1136show which guest mouse is receiving events
bellard1f673132004-04-04 15:21:17 +00001137@end table
1138
1139@item q or quit
1140Quit the emulator.
1141
ths89dfe892007-11-21 22:38:37 +00001142@item eject [-f] @var{device}
thse5987522007-03-30 18:58:01 +00001143Eject a removable medium (use -f to force it).
bellard1f673132004-04-04 15:21:17 +00001144
ths89dfe892007-11-21 22:38:37 +00001145@item change @var{device} @var{setting}
thsf858dca2007-08-25 01:40:37 +00001146
ths89dfe892007-11-21 22:38:37 +00001147Change the configuration of a device.
thsf858dca2007-08-25 01:40:37 +00001148
1149@table @option
1150@item change @var{diskdevice} @var{filename}
1151Change the medium for a removable disk device to point to @var{filename}. eg
1152
1153@example
aurel324bf27c22008-03-18 06:52:14 +00001154(qemu) change ide1-cd0 /path/to/some.iso
thsf858dca2007-08-25 01:40:37 +00001155@end example
1156
ths89dfe892007-11-21 22:38:37 +00001157@item change vnc @var{display},@var{options}
thsf858dca2007-08-25 01:40:37 +00001158Change the configuration of the VNC server. The valid syntax for @var{display}
1159and @var{options} are described at @ref{sec_invocation}. eg
1160
1161@example
1162(qemu) change vnc localhost:1
1163@end example
1164
1165@item change vnc password
1166
1167Change the password associated with the VNC server. The monitor will prompt for
1168the new password to be entered. VNC passwords are only significant upto 8 letters.
1169eg.
1170
1171@example
1172(qemu) change vnc password
1173Password: ********
1174@end example
1175
1176@end table
bellard1f673132004-04-04 15:21:17 +00001177
ths89dfe892007-11-21 22:38:37 +00001178@item screendump @var{filename}
bellard1f673132004-04-04 15:21:17 +00001179Save screen into PPM image @var{filename}.
1180
ths89dfe892007-11-21 22:38:37 +00001181@item mouse_move @var{dx} @var{dy} [@var{dz}]
ths455204e2007-01-05 16:42:13 +00001182Move the active mouse to the specified coordinates @var{dx} @var{dy}
1183with optional scroll axis @var{dz}.
1184
ths89dfe892007-11-21 22:38:37 +00001185@item mouse_button @var{val}
ths455204e2007-01-05 16:42:13 +00001186Change the active mouse button state @var{val} (1=L, 2=M, 4=R).
1187
ths89dfe892007-11-21 22:38:37 +00001188@item mouse_set @var{index}
ths455204e2007-01-05 16:42:13 +00001189Set which mouse device receives events at given @var{index}, index
1190can be obtained with
1191@example
1192info mice
1193@end example
1194
ths89dfe892007-11-21 22:38:37 +00001195@item wavcapture @var{filename} [@var{frequency} [@var{bits} [@var{channels}]]]
bellarda3c25992006-07-18 21:09:59 +00001196Capture audio into @var{filename}. Using sample rate @var{frequency}
1197bits per sample @var{bits} and number of channels @var{channels}.
1198
1199Defaults:
1200@itemize @minus
1201@item Sample rate = 44100 Hz - CD quality
1202@item Bits = 16
1203@item Number of channels = 2 - Stereo
1204@end itemize
1205
ths89dfe892007-11-21 22:38:37 +00001206@item stopcapture @var{index}
bellarda3c25992006-07-18 21:09:59 +00001207Stop capture with a given @var{index}, index can be obtained with
1208@example
1209info capture
1210@end example
1211
ths89dfe892007-11-21 22:38:37 +00001212@item log @var{item1}[,...]
bellard1f673132004-04-04 15:21:17 +00001213Activate logging of the specified items to @file{/tmp/qemu.log}.
1214
ths89dfe892007-11-21 22:38:37 +00001215@item savevm [@var{tag}|@var{id}]
bellard13a2e802006-08-06 14:50:31 +00001216Create a snapshot of the whole virtual machine. If @var{tag} is
1217provided, it is used as human readable identifier. If there is already
1218a snapshot with the same tag or ID, it is replaced. More info at
1219@ref{vm_snapshots}.
bellard1f673132004-04-04 15:21:17 +00001220
ths89dfe892007-11-21 22:38:37 +00001221@item loadvm @var{tag}|@var{id}
bellard13a2e802006-08-06 14:50:31 +00001222Set the whole virtual machine to the snapshot identified by the tag
1223@var{tag} or the unique snapshot ID @var{id}.
1224
ths89dfe892007-11-21 22:38:37 +00001225@item delvm @var{tag}|@var{id}
bellard13a2e802006-08-06 14:50:31 +00001226Delete the snapshot identified by @var{tag} or @var{id}.
bellard1f673132004-04-04 15:21:17 +00001227
1228@item stop
1229Stop emulation.
1230
1231@item c or cont
1232Resume emulation.
1233
ths89dfe892007-11-21 22:38:37 +00001234@item gdbserver [@var{port}]
1235Start gdbserver session (default @var{port}=1234)
bellard1f673132004-04-04 15:21:17 +00001236
ths89dfe892007-11-21 22:38:37 +00001237@item x/fmt @var{addr}
bellard1f673132004-04-04 15:21:17 +00001238Virtual memory dump starting at @var{addr}.
1239
ths89dfe892007-11-21 22:38:37 +00001240@item xp /@var{fmt} @var{addr}
bellard1f673132004-04-04 15:21:17 +00001241Physical memory dump starting at @var{addr}.
1242
1243@var{fmt} is a format which tells the command how to format the
1244data. Its syntax is: @option{/@{count@}@{format@}@{size@}}
1245
1246@table @var
ths5fafdf22007-09-16 21:08:06 +00001247@item count
bellard1f673132004-04-04 15:21:17 +00001248is the number of items to be dumped.
1249
1250@item format
ths4be456f2007-06-03 13:41:28 +00001251can be x (hex), d (signed decimal), u (unsigned decimal), o (octal),
bellard1f673132004-04-04 15:21:17 +00001252c (char) or i (asm instruction).
1253
1254@item size
bellard52c00a52004-04-25 21:27:03 +00001255can be b (8 bits), h (16 bits), w (32 bits) or g (64 bits). On x86,
1256@code{h} or @code{w} can be specified with the @code{i} format to
1257respectively select 16 or 32 bit code instruction size.
bellard1f673132004-04-04 15:21:17 +00001258
1259@end table
1260
ths5fafdf22007-09-16 21:08:06 +00001261Examples:
bellard1f673132004-04-04 15:21:17 +00001262@itemize
1263@item
1264Dump 10 instructions at the current instruction pointer:
ths5fafdf22007-09-16 21:08:06 +00001265@example
bellard1f673132004-04-04 15:21:17 +00001266(qemu) x/10i $eip
12670x90107063: ret
12680x90107064: sti
12690x90107065: lea 0x0(%esi,1),%esi
12700x90107069: lea 0x0(%edi,1),%edi
12710x90107070: ret
12720x90107071: jmp 0x90107080
12730x90107073: nop
12740x90107074: nop
12750x90107075: nop
12760x90107076: nop
1277@end example
1278
1279@item
1280Dump 80 16 bit values at the start of the video memory.
ths5fafdf22007-09-16 21:08:06 +00001281@smallexample
bellard1f673132004-04-04 15:21:17 +00001282(qemu) xp/80hx 0xb8000
12830x000b8000: 0x0b50 0x0b6c 0x0b65 0x0b78 0x0b38 0x0b36 0x0b2f 0x0b42
12840x000b8010: 0x0b6f 0x0b63 0x0b68 0x0b73 0x0b20 0x0b56 0x0b47 0x0b41
12850x000b8020: 0x0b42 0x0b69 0x0b6f 0x0b73 0x0b20 0x0b63 0x0b75 0x0b72
12860x000b8030: 0x0b72 0x0b65 0x0b6e 0x0b74 0x0b2d 0x0b63 0x0b76 0x0b73
12870x000b8040: 0x0b20 0x0b30 0x0b35 0x0b20 0x0b4e 0x0b6f 0x0b76 0x0b20
12880x000b8050: 0x0b32 0x0b30 0x0b30 0x0b33 0x0720 0x0720 0x0720 0x0720
12890x000b8060: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
12900x000b8070: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
12910x000b8080: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
12920x000b8090: 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720 0x0720
bellarddebc7062006-04-30 21:58:41 +00001293@end smallexample
bellard1f673132004-04-04 15:21:17 +00001294@end itemize
1295
ths89dfe892007-11-21 22:38:37 +00001296@item p or print/@var{fmt} @var{expr}
bellard1f673132004-04-04 15:21:17 +00001297
1298Print expression value. Only the @var{format} part of @var{fmt} is
1299used.
1300
ths89dfe892007-11-21 22:38:37 +00001301@item sendkey @var{keys}
bellarda3a91a32004-06-04 11:06:21 +00001302
aurel3254ae1fb2008-10-01 21:46:07 +00001303Send @var{keys} to the emulator. @var{keys} could be the name of the
1304key or @code{#} followed by the raw value in either decimal or hexadecimal
1305format. Use @code{-} to press several keys simultaneously. Example:
bellarda3a91a32004-06-04 11:06:21 +00001306@example
1307sendkey ctrl-alt-f1
1308@end example
1309
1310This command is useful to send keys that your graphical user interface
1311intercepts at low level, such as @code{ctrl-alt-f1} in X Window.
1312
bellard15a34c62004-07-08 21:26:26 +00001313@item system_reset
1314
1315Reset the system.
1316
aurel320ecdffb2008-05-04 20:11:34 +00001317@item boot_set @var{bootdevicelist}
1318
1319Define new values for the boot device list. Those values will override
1320the values specified on the command line through the @code{-boot} option.
1321
1322The values that can be specified here depend on the machine type, but are
1323the same that can be specified in the @code{-boot} command line option.
1324
ths89dfe892007-11-21 22:38:37 +00001325@item usb_add @var{devname}
bellardb389dbf2005-11-06 16:49:55 +00001326
pbrook0aff66b2006-05-26 00:49:52 +00001327Add the USB device @var{devname}. For details of available devices see
1328@ref{usb_devices}
bellardb389dbf2005-11-06 16:49:55 +00001329
ths89dfe892007-11-21 22:38:37 +00001330@item usb_del @var{devname}
bellardb389dbf2005-11-06 16:49:55 +00001331
1332Remove the USB device @var{devname} from the QEMU virtual USB
1333hub. @var{devname} has the syntax @code{bus.addr}. Use the monitor
1334command @code{info usb} to see the devices you can remove.
1335
bellard1f673132004-04-04 15:21:17 +00001336@end table
1337
1338@subsection Integer expressions
1339
1340The monitor understands integers expressions for every integer
1341argument. You can use register names to get the value of specifics
1342CPU registers by prefixing them with @emph{$}.
1343
1344@node disk_images
1345@section Disk Images
1346
bellardacd935e2004-11-15 22:57:26 +00001347Since version 0.6.1, QEMU supports many disk image formats, including
1348growable disk images (their size increase as non empty sectors are
bellard13a2e802006-08-06 14:50:31 +00001349written), compressed and encrypted disk images. Version 0.8.3 added
1350the new qcow2 disk image format which is essential to support VM
1351snapshots.
bellard1f673132004-04-04 15:21:17 +00001352
bellarddebc7062006-04-30 21:58:41 +00001353@menu
1354* disk_images_quickstart:: Quick start for disk image creation
1355* disk_images_snapshot_mode:: Snapshot mode
bellard13a2e802006-08-06 14:50:31 +00001356* vm_snapshots:: VM snapshots
bellarddebc7062006-04-30 21:58:41 +00001357* qemu_img_invocation:: qemu-img Invocation
ths975b0922008-07-02 21:18:00 +00001358* qemu_nbd_invocation:: qemu-nbd Invocation
bellard19cb3732006-08-19 11:45:59 +00001359* host_drives:: Using host drives
bellarddebc7062006-04-30 21:58:41 +00001360* disk_images_fat_images:: Virtual FAT disk images
ths75818252008-07-03 13:41:03 +00001361* disk_images_nbd:: NBD access
bellarddebc7062006-04-30 21:58:41 +00001362@end menu
1363
1364@node disk_images_quickstart
bellardacd935e2004-11-15 22:57:26 +00001365@subsection Quick start for disk image creation
1366
1367You can create a disk image with the command:
bellard1f673132004-04-04 15:21:17 +00001368@example
bellardacd935e2004-11-15 22:57:26 +00001369qemu-img create myimage.img mysize
bellard1f673132004-04-04 15:21:17 +00001370@end example
bellardacd935e2004-11-15 22:57:26 +00001371where @var{myimage.img} is the disk image filename and @var{mysize} is its
1372size in kilobytes. You can add an @code{M} suffix to give the size in
1373megabytes and a @code{G} suffix for gigabytes.
1374
bellarddebc7062006-04-30 21:58:41 +00001375See @ref{qemu_img_invocation} for more information.
bellard1f673132004-04-04 15:21:17 +00001376
bellarddebc7062006-04-30 21:58:41 +00001377@node disk_images_snapshot_mode
bellard1f673132004-04-04 15:21:17 +00001378@subsection Snapshot mode
1379
1380If you use the option @option{-snapshot}, all disk images are
1381considered as read only. When sectors in written, they are written in
1382a temporary file created in @file{/tmp}. You can however force the
bellardacd935e2004-11-15 22:57:26 +00001383write back to the raw disk images by using the @code{commit} monitor
1384command (or @key{C-a s} in the serial console).
bellard1f673132004-04-04 15:21:17 +00001385
bellard13a2e802006-08-06 14:50:31 +00001386@node vm_snapshots
1387@subsection VM snapshots
1388
1389VM snapshots are snapshots of the complete virtual machine including
1390CPU state, RAM, device state and the content of all the writable
1391disks. In order to use VM snapshots, you must have at least one non
1392removable and writable block device using the @code{qcow2} disk image
1393format. Normally this device is the first virtual hard drive.
1394
1395Use the monitor command @code{savevm} to create a new VM snapshot or
1396replace an existing one. A human readable name can be assigned to each
bellard19d36792006-08-07 21:34:34 +00001397snapshot in addition to its numerical ID.
bellard13a2e802006-08-06 14:50:31 +00001398
1399Use @code{loadvm} to restore a VM snapshot and @code{delvm} to remove
1400a VM snapshot. @code{info snapshots} lists the available snapshots
1401with their associated information:
1402
1403@example
1404(qemu) info snapshots
1405Snapshot devices: hda
1406Snapshot list (from hda):
1407ID TAG VM SIZE DATE VM CLOCK
14081 start 41M 2006-08-06 12:38:02 00:00:14.954
14092 40M 2006-08-06 12:43:29 00:00:18.633
14103 msys 40M 2006-08-06 12:44:04 00:00:23.514
1411@end example
1412
1413A VM snapshot is made of a VM state info (its size is shown in
1414@code{info snapshots}) and a snapshot of every writable disk image.
1415The VM state info is stored in the first @code{qcow2} non removable
1416and writable block device. The disk image snapshots are stored in
1417every disk image. The size of a snapshot in a disk image is difficult
1418to evaluate and is not shown by @code{info snapshots} because the
1419associated disk sectors are shared among all the snapshots to save
bellard19d36792006-08-07 21:34:34 +00001420disk space (otherwise each snapshot would need a full copy of all the
1421disk images).
bellard13a2e802006-08-06 14:50:31 +00001422
1423When using the (unrelated) @code{-snapshot} option
1424(@ref{disk_images_snapshot_mode}), you can always make VM snapshots,
1425but they are deleted as soon as you exit QEMU.
1426
1427VM snapshots currently have the following known limitations:
1428@itemize
ths5fafdf22007-09-16 21:08:06 +00001429@item
bellard13a2e802006-08-06 14:50:31 +00001430They cannot cope with removable devices if they are removed or
1431inserted after a snapshot is done.
ths5fafdf22007-09-16 21:08:06 +00001432@item
bellard13a2e802006-08-06 14:50:31 +00001433A few device drivers still have incomplete snapshot support so their
1434state is not saved or restored properly (in particular USB).
1435@end itemize
1436
bellardacd935e2004-11-15 22:57:26 +00001437@node qemu_img_invocation
1438@subsection @code{qemu-img} Invocation
bellard1f673132004-04-04 15:21:17 +00001439
bellardacd935e2004-11-15 22:57:26 +00001440@include qemu-img.texi
bellard05efe462004-06-16 20:34:33 +00001441
ths975b0922008-07-02 21:18:00 +00001442@node qemu_nbd_invocation
1443@subsection @code{qemu-nbd} Invocation
1444
1445@include qemu-nbd.texi
1446
bellard19cb3732006-08-19 11:45:59 +00001447@node host_drives
1448@subsection Using host drives
1449
1450In addition to disk image files, QEMU can directly access host
1451devices. We describe here the usage for QEMU version >= 0.8.3.
1452
1453@subsubsection Linux
1454
1455On Linux, you can directly use the host device filename instead of a
ths4be456f2007-06-03 13:41:28 +00001456disk image filename provided you have enough privileges to access
bellard19cb3732006-08-19 11:45:59 +00001457it. For example, use @file{/dev/cdrom} to access to the CDROM or
1458@file{/dev/fd0} for the floppy.
1459
bellardf5420862006-08-21 20:26:44 +00001460@table @code
bellard19cb3732006-08-19 11:45:59 +00001461@item CD
1462You can specify a CDROM device even if no CDROM is loaded. QEMU has
1463specific code to detect CDROM insertion or removal. CDROM ejection by
1464the guest OS is supported. Currently only data CDs are supported.
1465@item Floppy
1466You can specify a floppy device even if no floppy is loaded. Floppy
1467removal is currently not detected accurately (if you change floppy
1468without doing floppy access while the floppy is not loaded, the guest
1469OS will think that the same floppy is loaded).
1470@item Hard disks
1471Hard disks can be used. Normally you must specify the whole disk
1472(@file{/dev/hdb} instead of @file{/dev/hdb1}) so that the guest OS can
1473see it as a partitioned disk. WARNING: unless you know what you do, it
1474is better to only make READ-ONLY accesses to the hard disk otherwise
1475you may corrupt your host data (use the @option{-snapshot} command
1476line option or modify the device permissions accordingly).
1477@end table
1478
1479@subsubsection Windows
1480
bellard01781962007-01-07 22:43:30 +00001481@table @code
1482@item CD
ths4be456f2007-06-03 13:41:28 +00001483The preferred syntax is the drive letter (e.g. @file{d:}). The
bellard01781962007-01-07 22:43:30 +00001484alternate syntax @file{\\.\d:} is supported. @file{/dev/cdrom} is
1485supported as an alias to the first CDROM drive.
bellard19cb3732006-08-19 11:45:59 +00001486
thse5987522007-03-30 18:58:01 +00001487Currently there is no specific code to handle removable media, so it
bellard19cb3732006-08-19 11:45:59 +00001488is better to use the @code{change} or @code{eject} monitor commands to
1489change or eject media.
bellard01781962007-01-07 22:43:30 +00001490@item Hard disks
ths89dfe892007-11-21 22:38:37 +00001491Hard disks can be used with the syntax: @file{\\.\PhysicalDrive@var{N}}
bellard01781962007-01-07 22:43:30 +00001492where @var{N} is the drive number (0 is the first hard disk).
1493
1494WARNING: unless you know what you do, it is better to only make
1495READ-ONLY accesses to the hard disk otherwise you may corrupt your
1496host data (use the @option{-snapshot} command line so that the
1497modifications are written in a temporary file).
1498@end table
1499
bellard19cb3732006-08-19 11:45:59 +00001500
1501@subsubsection Mac OS X
1502
ths5fafdf22007-09-16 21:08:06 +00001503@file{/dev/cdrom} is an alias to the first CDROM.
bellard19cb3732006-08-19 11:45:59 +00001504
thse5987522007-03-30 18:58:01 +00001505Currently there is no specific code to handle removable media, so it
bellard19cb3732006-08-19 11:45:59 +00001506is better to use the @code{change} or @code{eject} monitor commands to
1507change or eject media.
1508
bellarddebc7062006-04-30 21:58:41 +00001509@node disk_images_fat_images
bellard2c6cadd2005-12-18 18:31:45 +00001510@subsection Virtual FAT disk images
1511
1512QEMU can automatically create a virtual FAT disk image from a
1513directory tree. In order to use it, just type:
1514
ths5fafdf22007-09-16 21:08:06 +00001515@example
bellard2c6cadd2005-12-18 18:31:45 +00001516qemu linux.img -hdb fat:/my_directory
1517@end example
1518
1519Then you access access to all the files in the @file{/my_directory}
1520directory without having to copy them in a disk image or to export
1521them via SAMBA or NFS. The default access is @emph{read-only}.
1522
1523Floppies can be emulated with the @code{:floppy:} option:
1524
ths5fafdf22007-09-16 21:08:06 +00001525@example
bellard2c6cadd2005-12-18 18:31:45 +00001526qemu linux.img -fda fat:floppy:/my_directory
1527@end example
1528
1529A read/write support is available for testing (beta stage) with the
1530@code{:rw:} option:
1531
ths5fafdf22007-09-16 21:08:06 +00001532@example
bellard2c6cadd2005-12-18 18:31:45 +00001533qemu linux.img -fda fat:floppy:rw:/my_directory
1534@end example
1535
1536What you should @emph{never} do:
1537@itemize
1538@item use non-ASCII filenames ;
1539@item use "-snapshot" together with ":rw:" ;
bellard85b2c682005-12-19 22:12:34 +00001540@item expect it to work when loadvm'ing ;
1541@item write to the FAT directory on the host system while accessing it with the guest system.
bellard2c6cadd2005-12-18 18:31:45 +00001542@end itemize
1543
ths75818252008-07-03 13:41:03 +00001544@node disk_images_nbd
1545@subsection NBD access
1546
1547QEMU can access directly to block device exported using the Network Block Device
1548protocol.
1549
1550@example
1551qemu linux.img -hdb nbd:my_nbd_server.mydomain.org:1024
1552@end example
1553
1554If the NBD server is located on the same host, you can use an unix socket instead
1555of an inet socket:
1556
1557@example
1558qemu linux.img -hdb nbd:unix:/tmp/my_socket
1559@end example
1560
1561In this case, the block device must be exported using qemu-nbd:
1562
1563@example
1564qemu-nbd --socket=/tmp/my_socket my_disk.qcow2
1565@end example
1566
1567The use of qemu-nbd allows to share a disk between several guests:
1568@example
1569qemu-nbd --socket=/tmp/my_socket --share=2 my_disk.qcow2
1570@end example
1571
1572and then you can use it with two guests:
1573@example
1574qemu linux1.img -hdb nbd:unix:/tmp/my_socket
1575qemu linux2.img -hdb nbd:unix:/tmp/my_socket
1576@end example
1577
bellarddebc7062006-04-30 21:58:41 +00001578@node pcsys_network
bellard9d4fb822004-04-26 20:55:38 +00001579@section Network emulation
1580
ths4be456f2007-06-03 13:41:28 +00001581QEMU can simulate several network cards (PCI or ISA cards on the PC
bellard41d03942005-11-15 23:02:53 +00001582target) and can connect them to an arbitrary number of Virtual Local
1583Area Networks (VLANs). Host TAP devices can be connected to any QEMU
1584VLAN. VLAN can be connected between separate instances of QEMU to
ths4be456f2007-06-03 13:41:28 +00001585simulate large networks. For simpler usage, a non privileged user mode
bellard41d03942005-11-15 23:02:53 +00001586network stack can replace the TAP device to have a basic network
1587connection.
bellard9d4fb822004-04-26 20:55:38 +00001588
bellard41d03942005-11-15 23:02:53 +00001589@subsection VLANs
bellard9d4fb822004-04-26 20:55:38 +00001590
bellard41d03942005-11-15 23:02:53 +00001591QEMU simulates several VLANs. A VLAN can be symbolised as a virtual
1592connection between several network devices. These devices can be for
1593example QEMU virtual Ethernet cards or virtual Host ethernet devices
1594(TAP devices).
1595
1596@subsection Using TAP network interfaces
1597
1598This is the standard way to connect QEMU to a real network. QEMU adds
1599a virtual network device on your host (called @code{tapN}), and you
1600can then configure it as if it was a real ethernet card.
bellard9d4fb822004-04-26 20:55:38 +00001601
bellard8f40c382006-09-20 20:28:05 +00001602@subsubsection Linux host
1603
bellard9d4fb822004-04-26 20:55:38 +00001604As an example, you can download the @file{linux-test-xxx.tar.gz}
1605archive and copy the script @file{qemu-ifup} in @file{/etc} and
1606configure properly @code{sudo} so that the command @code{ifconfig}
1607contained in @file{qemu-ifup} can be executed as root. You must verify
bellard41d03942005-11-15 23:02:53 +00001608that your host kernel supports the TAP network interfaces: the
bellard9d4fb822004-04-26 20:55:38 +00001609device @file{/dev/net/tun} must be present.
1610
bellardee0f4752006-08-19 16:56:18 +00001611See @ref{sec_invocation} to have examples of command lines using the
1612TAP network interfaces.
bellard9d4fb822004-04-26 20:55:38 +00001613
bellard8f40c382006-09-20 20:28:05 +00001614@subsubsection Windows host
1615
1616There is a virtual ethernet driver for Windows 2000/XP systems, called
1617TAP-Win32. But it is not included in standard QEMU for Windows,
1618so you will need to get it separately. It is part of OpenVPN package,
1619so download OpenVPN from : @url{http://openvpn.net/}.
1620
bellard9d4fb822004-04-26 20:55:38 +00001621@subsection Using the user mode network stack
1622
bellard41d03942005-11-15 23:02:53 +00001623By using the option @option{-net user} (default configuration if no
1624@option{-net} option is specified), QEMU uses a completely user mode
ths4be456f2007-06-03 13:41:28 +00001625network stack (you don't need root privilege to use the virtual
bellard41d03942005-11-15 23:02:53 +00001626network). The virtual network configuration is the following:
bellard9d4fb822004-04-26 20:55:38 +00001627
1628@example
1629
bellard41d03942005-11-15 23:02:53 +00001630 QEMU VLAN <------> Firewall/DHCP server <-----> Internet
1631 | (10.0.2.2)
bellard9d4fb822004-04-26 20:55:38 +00001632 |
bellard2518bd02004-09-30 22:35:13 +00001633 ----> DNS server (10.0.2.3)
ths3b46e622007-09-17 08:09:54 +00001634 |
bellard2518bd02004-09-30 22:35:13 +00001635 ----> SMB server (10.0.2.4)
bellard9d4fb822004-04-26 20:55:38 +00001636@end example
1637
1638The QEMU VM behaves as if it was behind a firewall which blocks all
1639incoming connections. You can use a DHCP client to automatically
bellard41d03942005-11-15 23:02:53 +00001640configure the network in the QEMU VM. The DHCP server assign addresses
1641to the hosts starting from 10.0.2.15.
bellard9d4fb822004-04-26 20:55:38 +00001642
1643In order to check that the user mode network is working, you can ping
1644the address 10.0.2.2 and verify that you got an address in the range
164510.0.2.x from the QEMU virtual DHCP server.
1646
bellardb415a402004-05-23 21:04:06 +00001647Note that @code{ping} is not supported reliably to the internet as it
ths4be456f2007-06-03 13:41:28 +00001648would require root privileges. It means you can only ping the local
bellardb415a402004-05-23 21:04:06 +00001649router (10.0.2.2).
1650
bellard9bf05442004-08-25 22:12:49 +00001651When using the built-in TFTP server, the router is also the TFTP
1652server.
1653
1654When using the @option{-redir} option, TCP or UDP connections can be
1655redirected from the host to the guest. It allows for example to
1656redirect X11, telnet or SSH connections.
bellard443f1372004-06-04 11:13:20 +00001657
bellard41d03942005-11-15 23:02:53 +00001658@subsection Connecting VLANs between QEMU instances
1659
1660Using the @option{-net socket} option, it is possible to make VLANs
1661that span several QEMU instances. See @ref{sec_invocation} to have a
1662basic example.
1663
bellard9d4fb822004-04-26 20:55:38 +00001664@node direct_linux_boot
1665@section Direct Linux Boot
bellard0806e3f2003-10-01 00:15:32 +00001666
1667This section explains how to launch a Linux kernel inside QEMU without
1668having to make a full bootable image. It is very useful for fast Linux
bellardee0f4752006-08-19 16:56:18 +00001669kernel testing.
bellard1eb20522003-06-25 16:21:49 +00001670
bellardee0f4752006-08-19 16:56:18 +00001671The syntax is:
bellard1eb20522003-06-25 16:21:49 +00001672@example
bellardee0f4752006-08-19 16:56:18 +00001673qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img -append "root=/dev/hda"
bellard1eb20522003-06-25 16:21:49 +00001674@end example
1675
bellardee0f4752006-08-19 16:56:18 +00001676Use @option{-kernel} to provide the Linux kernel image and
1677@option{-append} to give the kernel command line arguments. The
1678@option{-initrd} option can be used to provide an INITRD image.
1679
1680When using the direct Linux boot, a disk image for the first hard disk
1681@file{hda} is required because its boot sector is used to launch the
1682Linux kernel.
1683
1684If you do not need graphical output, you can disable it and redirect
1685the virtual serial port and the QEMU monitor to the console with the
1686@option{-nographic} option. The typical command line is:
bellard1eb20522003-06-25 16:21:49 +00001687@example
bellardee0f4752006-08-19 16:56:18 +00001688qemu -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
1689 -append "root=/dev/hda console=ttyS0" -nographic
bellard1eb20522003-06-25 16:21:49 +00001690@end example
1691
bellardee0f4752006-08-19 16:56:18 +00001692Use @key{Ctrl-a c} to switch between the serial console and the
1693monitor (@pxref{pcsys_keys}).
bellardd5a0b502003-06-27 12:02:03 +00001694
bellarddebc7062006-04-30 21:58:41 +00001695@node pcsys_usb
bellardb389dbf2005-11-06 16:49:55 +00001696@section USB emulation
1697
pbrook0aff66b2006-05-26 00:49:52 +00001698QEMU emulates a PCI UHCI USB controller. You can virtually plug
1699virtual USB devices or real host USB devices (experimental, works only
1700on Linux hosts). Qemu will automatically create and connect virtual USB hubs
bellardf5420862006-08-21 20:26:44 +00001701as necessary to connect multiple USB devices.
bellardb389dbf2005-11-06 16:49:55 +00001702
pbrook0aff66b2006-05-26 00:49:52 +00001703@menu
1704* usb_devices::
1705* host_usb_devices::
1706@end menu
1707@node usb_devices
1708@subsection Connecting USB devices
bellardb389dbf2005-11-06 16:49:55 +00001709
pbrook0aff66b2006-05-26 00:49:52 +00001710USB devices can be connected with the @option{-usbdevice} commandline option
1711or the @code{usb_add} monitor command. Available devices are:
bellardb389dbf2005-11-06 16:49:55 +00001712
balrogdb380c02008-01-17 22:22:45 +00001713@table @code
1714@item mouse
pbrook0aff66b2006-05-26 00:49:52 +00001715Virtual Mouse. This will override the PS/2 mouse emulation when activated.
balrogdb380c02008-01-17 22:22:45 +00001716@item tablet
bellardc6d46c22006-09-03 17:10:41 +00001717Pointer device that uses absolute coordinates (like a touchscreen).
pbrook0aff66b2006-05-26 00:49:52 +00001718This means qemu is able to report the mouse position without having
1719to grab the mouse. Also overrides the PS/2 mouse emulation when activated.
balrogdb380c02008-01-17 22:22:45 +00001720@item disk:@var{file}
pbrook0aff66b2006-05-26 00:49:52 +00001721Mass storage device based on @var{file} (@pxref{disk_images})
balrogdb380c02008-01-17 22:22:45 +00001722@item host:@var{bus.addr}
pbrook0aff66b2006-05-26 00:49:52 +00001723Pass through the host device identified by @var{bus.addr}
1724(Linux only)
balrogdb380c02008-01-17 22:22:45 +00001725@item host:@var{vendor_id:product_id}
pbrook0aff66b2006-05-26 00:49:52 +00001726Pass through the host device identified by @var{vendor_id:product_id}
1727(Linux only)
balrogdb380c02008-01-17 22:22:45 +00001728@item wacom-tablet
balrogf6d2a312007-06-10 19:21:04 +00001729Virtual Wacom PenPartner tablet. This device is similar to the @code{tablet}
1730above but it can be used with the tslib library because in addition to touch
1731coordinates it reports touch pressure.
balrogdb380c02008-01-17 22:22:45 +00001732@item keyboard
balrog47b2d332007-06-22 08:16:00 +00001733Standard USB keyboard. Will override the PS/2 keyboard (if present).
balrogdb380c02008-01-17 22:22:45 +00001734@item serial:[vendorid=@var{vendor_id}][,product_id=@var{product_id}]:@var{dev}
1735Serial converter. This emulates an FTDI FT232BM chip connected to host character
1736device @var{dev}. The available character devices are the same as for the
1737@code{-serial} option. The @code{vendorid} and @code{productid} options can be
balroga11d0702008-01-19 13:00:43 +00001738used to override the default 0403:6001. For instance,
balrogdb380c02008-01-17 22:22:45 +00001739@example
1740usb_add serial:productid=FA00:tcp:192.168.0.2:4444
1741@end example
1742will connect to tcp port 4444 of ip 192.168.0.2, and plug that to the virtual
1743serial converter, faking a Matrix Orbital LCD Display (USB ID 0403:FA00).
aurel322e4d9fb2008-04-08 06:01:02 +00001744@item braille
1745Braille device. This will use BrlAPI to display the braille output on a real
1746or fake device.
balrog9ad97e62008-07-29 13:16:31 +00001747@item net:@var{options}
1748Network adapter that supports CDC ethernet and RNDIS protocols. @var{options}
1749specifies NIC options as with @code{-net nic,}@var{options} (see description).
1750For instance, user-mode networking can be used with
balrog6c9f8862008-07-17 20:47:13 +00001751@example
balrog9ad97e62008-07-29 13:16:31 +00001752qemu [...OPTIONS...] -net user,vlan=0 -usbdevice net:vlan=0
balrog6c9f8862008-07-17 20:47:13 +00001753@end example
1754Currently this cannot be used in machines that support PCI NICs.
pbrook0aff66b2006-05-26 00:49:52 +00001755@end table
bellardb389dbf2005-11-06 16:49:55 +00001756
pbrook0aff66b2006-05-26 00:49:52 +00001757@node host_usb_devices
bellardb389dbf2005-11-06 16:49:55 +00001758@subsection Using host USB devices on a Linux host
1759
1760WARNING: this is an experimental feature. QEMU will slow down when
1761using it. USB devices requiring real time streaming (i.e. USB Video
1762Cameras) are not supported yet.
1763
1764@enumerate
ths5fafdf22007-09-16 21:08:06 +00001765@item If you use an early Linux 2.4 kernel, verify that no Linux driver
bellardb389dbf2005-11-06 16:49:55 +00001766is actually using the USB device. A simple way to do that is simply to
1767disable the corresponding kernel module by renaming it from @file{mydriver.o}
1768to @file{mydriver.o.disabled}.
1769
1770@item Verify that @file{/proc/bus/usb} is working (most Linux distributions should enable it by default). You should see something like that:
1771@example
1772ls /proc/bus/usb
1773001 devices drivers
1774@end example
1775
1776@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:
1777@example
1778chown -R myuid /proc/bus/usb
1779@end example
1780
1781@item Launch QEMU and do in the monitor:
ths5fafdf22007-09-16 21:08:06 +00001782@example
bellardb389dbf2005-11-06 16:49:55 +00001783info usbhost
1784 Device 1.2, speed 480 Mb/s
1785 Class 00: USB device 1234:5678, USB DISK
1786@end example
1787You should see the list of the devices you can use (Never try to use
1788hubs, it won't work).
1789
1790@item Add the device in QEMU by using:
ths5fafdf22007-09-16 21:08:06 +00001791@example
bellardb389dbf2005-11-06 16:49:55 +00001792usb_add host:1234:5678
1793@end example
1794
1795Normally the guest OS should report that a new USB device is
1796plugged. You can use the option @option{-usbdevice} to do the same.
1797
1798@item Now you can try to use the host USB device in QEMU.
1799
1800@end enumerate
1801
1802When relaunching QEMU, you may have to unplug and plug again the USB
1803device to make it work again (this is a bug).
1804
thsf858dca2007-08-25 01:40:37 +00001805@node vnc_security
1806@section VNC security
1807
1808The VNC server capability provides access to the graphical console
1809of the guest VM across the network. This has a number of security
1810considerations depending on the deployment scenarios.
1811
1812@menu
1813* vnc_sec_none::
1814* vnc_sec_password::
1815* vnc_sec_certificate::
1816* vnc_sec_certificate_verify::
1817* vnc_sec_certificate_pw::
1818* vnc_generate_cert::
1819@end menu
1820@node vnc_sec_none
1821@subsection Without passwords
1822
1823The simplest VNC server setup does not include any form of authentication.
1824For this setup it is recommended to restrict it to listen on a UNIX domain
1825socket only. For example
1826
1827@example
1828qemu [...OPTIONS...] -vnc unix:/home/joebloggs/.qemu-myvm-vnc
1829@end example
1830
1831This ensures that only users on local box with read/write access to that
1832path can access the VNC server. To securely access the VNC server from a
1833remote machine, a combination of netcat+ssh can be used to provide a secure
1834tunnel.
1835
1836@node vnc_sec_password
1837@subsection With passwords
1838
1839The VNC protocol has limited support for password based authentication. Since
1840the protocol limits passwords to 8 characters it should not be considered
1841to provide high security. The password can be fairly easily brute-forced by
1842a client making repeat connections. For this reason, a VNC server using password
1843authentication should be restricted to only listen on the loopback interface
blueswir134a3d232008-10-04 20:43:39 +00001844or UNIX domain sockets. Password authentication is requested with the @code{password}
thsf858dca2007-08-25 01:40:37 +00001845option, and then once QEMU is running the password is set with the monitor. Until
1846the monitor is used to set the password all clients will be rejected.
1847
1848@example
1849qemu [...OPTIONS...] -vnc :1,password -monitor stdio
1850(qemu) change vnc password
1851Password: ********
1852(qemu)
1853@end example
1854
1855@node vnc_sec_certificate
1856@subsection With x509 certificates
1857
1858The QEMU VNC server also implements the VeNCrypt extension allowing use of
1859TLS for encryption of the session, and x509 certificates for authentication.
1860The use of x509 certificates is strongly recommended, because TLS on its
1861own is susceptible to man-in-the-middle attacks. Basic x509 certificate
1862support provides a secure session, but no authentication. This allows any
1863client to connect, and provides an encrypted session.
1864
1865@example
1866qemu [...OPTIONS...] -vnc :1,tls,x509=/etc/pki/qemu -monitor stdio
1867@end example
1868
1869In the above example @code{/etc/pki/qemu} should contain at least three files,
1870@code{ca-cert.pem}, @code{server-cert.pem} and @code{server-key.pem}. Unprivileged
1871users will want to use a private directory, for example @code{$HOME/.pki/qemu}.
1872NB the @code{server-key.pem} file should be protected with file mode 0600 to
1873only be readable by the user owning it.
1874
1875@node vnc_sec_certificate_verify
1876@subsection With x509 certificates and client verification
1877
1878Certificates can also provide a means to authenticate the client connecting.
1879The server will request that the client provide a certificate, which it will
1880then validate against the CA certificate. This is a good choice if deploying
1881in an environment with a private internal certificate authority.
1882
1883@example
1884qemu [...OPTIONS...] -vnc :1,tls,x509verify=/etc/pki/qemu -monitor stdio
1885@end example
1886
1887
1888@node vnc_sec_certificate_pw
1889@subsection With x509 certificates, client verification and passwords
1890
1891Finally, the previous method can be combined with VNC password authentication
1892to provide two layers of authentication for clients.
1893
1894@example
1895qemu [...OPTIONS...] -vnc :1,password,tls,x509verify=/etc/pki/qemu -monitor stdio
1896(qemu) change vnc password
1897Password: ********
1898(qemu)
1899@end example
1900
1901@node vnc_generate_cert
1902@subsection Generating certificates for VNC
1903
1904The GNU TLS packages provides a command called @code{certtool} which can
1905be used to generate certificates and keys in PEM format. At a minimum it
1906is neccessary to setup a certificate authority, and issue certificates to
1907each server. If using certificates for authentication, then each client
1908will also need to be issued a certificate. The recommendation is for the
1909server to keep its certificates in either @code{/etc/pki/qemu} or for
1910unprivileged users in @code{$HOME/.pki/qemu}.
1911
1912@menu
1913* vnc_generate_ca::
1914* vnc_generate_server::
1915* vnc_generate_client::
1916@end menu
1917@node vnc_generate_ca
1918@subsubsection Setup the Certificate Authority
1919
1920This step only needs to be performed once per organization / organizational
1921unit. First the CA needs a private key. This key must be kept VERY secret
1922and secure. If this key is compromised the entire trust chain of the certificates
1923issued with it is lost.
1924
1925@example
1926# certtool --generate-privkey > ca-key.pem
1927@end example
1928
1929A CA needs to have a public certificate. For simplicity it can be a self-signed
1930certificate, or one issue by a commercial certificate issuing authority. To
1931generate a self-signed certificate requires one core piece of information, the
1932name of the organization.
1933
1934@example
1935# cat > ca.info <<EOF
1936cn = Name of your organization
1937ca
1938cert_signing_key
1939EOF
1940# certtool --generate-self-signed \
1941 --load-privkey ca-key.pem
1942 --template ca.info \
1943 --outfile ca-cert.pem
1944@end example
1945
1946The @code{ca-cert.pem} file should be copied to all servers and clients wishing to utilize
1947TLS support in the VNC server. The @code{ca-key.pem} must not be disclosed/copied at all.
1948
1949@node vnc_generate_server
1950@subsubsection Issuing server certificates
1951
1952Each server (or host) needs to be issued with a key and certificate. When connecting
1953the certificate is sent to the client which validates it against the CA certificate.
1954The core piece of information for a server certificate is the hostname. This should
1955be the fully qualified hostname that the client will connect with, since the client
1956will typically also verify the hostname in the certificate. On the host holding the
1957secure CA private key:
1958
1959@example
1960# cat > server.info <<EOF
1961organization = Name of your organization
1962cn = server.foo.example.com
1963tls_www_server
1964encryption_key
1965signing_key
1966EOF
1967# certtool --generate-privkey > server-key.pem
1968# certtool --generate-certificate \
1969 --load-ca-certificate ca-cert.pem \
1970 --load-ca-privkey ca-key.pem \
1971 --load-privkey server server-key.pem \
1972 --template server.info \
1973 --outfile server-cert.pem
1974@end example
1975
1976The @code{server-key.pem} and @code{server-cert.pem} files should now be securely copied
1977to the server for which they were generated. The @code{server-key.pem} is security
1978sensitive and should be kept protected with file mode 0600 to prevent disclosure.
1979
1980@node vnc_generate_client
1981@subsubsection Issuing client certificates
1982
1983If the QEMU VNC server is to use the @code{x509verify} option to validate client
1984certificates as its authentication mechanism, each client also needs to be issued
1985a certificate. The client certificate contains enough metadata to uniquely identify
1986the client, typically organization, state, city, building, etc. On the host holding
1987the secure CA private key:
1988
1989@example
1990# cat > client.info <<EOF
1991country = GB
1992state = London
1993locality = London
1994organiazation = Name of your organization
1995cn = client.foo.example.com
1996tls_www_client
1997encryption_key
1998signing_key
1999EOF
2000# certtool --generate-privkey > client-key.pem
2001# certtool --generate-certificate \
2002 --load-ca-certificate ca-cert.pem \
2003 --load-ca-privkey ca-key.pem \
2004 --load-privkey client-key.pem \
2005 --template client.info \
2006 --outfile client-cert.pem
2007@end example
2008
2009The @code{client-key.pem} and @code{client-cert.pem} files should now be securely
2010copied to the client for which they were generated.
2011
bellard0806e3f2003-10-01 00:15:32 +00002012@node gdb_usage
bellardda415d52003-06-27 18:50:50 +00002013@section GDB usage
2014
2015QEMU has a primitive support to work with gdb, so that you can do
bellard0806e3f2003-10-01 00:15:32 +00002016'Ctrl-C' while the virtual machine is running and inspect its state.
bellardda415d52003-06-27 18:50:50 +00002017
bellard9d4520d2003-10-28 01:38:57 +00002018In order to use gdb, launch qemu with the '-s' option. It will wait for a
bellardda415d52003-06-27 18:50:50 +00002019gdb connection:
2020@example
bellarddebc7062006-04-30 21:58:41 +00002021> qemu -s -kernel arch/i386/boot/bzImage -hda root-2.4.20.img \
2022 -append "root=/dev/hda"
bellardda415d52003-06-27 18:50:50 +00002023Connected to host network interface: tun0
2024Waiting gdb connection on port 1234
2025@end example
2026
2027Then launch gdb on the 'vmlinux' executable:
2028@example
2029> gdb vmlinux
2030@end example
2031
2032In gdb, connect to QEMU:
2033@example
bellard6c9bf892004-01-24 13:46:56 +00002034(gdb) target remote localhost:1234
bellardda415d52003-06-27 18:50:50 +00002035@end example
2036
2037Then you can use gdb normally. For example, type 'c' to launch the kernel:
2038@example
2039(gdb) c
2040@end example
2041
bellard0806e3f2003-10-01 00:15:32 +00002042Here are some useful tips in order to use gdb on system code:
2043
2044@enumerate
2045@item
2046Use @code{info reg} to display all the CPU registers.
2047@item
2048Use @code{x/10i $eip} to display the code at the PC position.
2049@item
2050Use @code{set architecture i8086} to dump 16 bit code. Then use
bellard294e8632006-05-06 14:23:06 +00002051@code{x/10i $cs*16+$eip} to dump the code at the PC position.
bellard0806e3f2003-10-01 00:15:32 +00002052@end enumerate
2053
edgar_igl60897d32008-05-09 08:25:14 +00002054Advanced debugging options:
2055
2056The 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 +00002057@table @code
edgar_igl60897d32008-05-09 08:25:14 +00002058@item maintenance packet qqemu.sstepbits
2059
2060This will display the MASK bits used to control the single stepping IE:
2061@example
2062(gdb) maintenance packet qqemu.sstepbits
2063sending: "qqemu.sstepbits"
2064received: "ENABLE=1,NOIRQ=2,NOTIMER=4"
2065@end example
2066@item maintenance packet qqemu.sstep
2067
2068This will display the current value of the mask used when single stepping IE:
2069@example
2070(gdb) maintenance packet qqemu.sstep
2071sending: "qqemu.sstep"
2072received: "0x7"
2073@end example
2074@item maintenance packet Qqemu.sstep=HEX_VALUE
2075
2076This will change the single step mask, so if wanted to enable IRQs on the single step, but not timers, you would use:
2077@example
2078(gdb) maintenance packet Qqemu.sstep=0x5
2079sending: "qemu.sstep=0x5"
2080received: "OK"
2081@end example
edgar_igl94d45e42008-05-10 19:37:44 +00002082@end table
edgar_igl60897d32008-05-09 08:25:14 +00002083
bellarddebc7062006-04-30 21:58:41 +00002084@node pcsys_os_specific
bellard1a084f32004-05-13 22:34:49 +00002085@section Target OS specific information
2086
2087@subsection Linux
2088
bellard15a34c62004-07-08 21:26:26 +00002089To have access to SVGA graphic modes under X11, use the @code{vesa} or
2090the @code{cirrus} X11 driver. For optimal performances, use 16 bit
2091color depth in the guest and the host OS.
bellard1a084f32004-05-13 22:34:49 +00002092
bellarde3371e62004-07-10 16:26:02 +00002093When using a 2.6 guest Linux kernel, you should add the option
2094@code{clock=pit} on the kernel command line because the 2.6 Linux
2095kernels make very strict real time clock checks by default that QEMU
2096cannot simulate exactly.
2097
bellard7c3fc842005-02-10 21:46:47 +00002098When using a 2.6 guest Linux kernel, verify that the 4G/4G patch is
2099not activated because QEMU is slower with this patch. The QEMU
2100Accelerator Module is also much slower in this case. Earlier Fedora
ths4be456f2007-06-03 13:41:28 +00002101Core 3 Linux kernel (< 2.6.9-1.724_FC3) were known to incorporate this
bellard7c3fc842005-02-10 21:46:47 +00002102patch by default. Newer kernels don't have it.
2103
bellard1a084f32004-05-13 22:34:49 +00002104@subsection Windows
2105
2106If you have a slow host, using Windows 95 is better as it gives the
2107best speed. Windows 2000 is also a good choice.
2108
bellarde3371e62004-07-10 16:26:02 +00002109@subsubsection SVGA graphic modes support
2110
2111QEMU emulates a Cirrus Logic GD5446 Video
bellard15a34c62004-07-08 21:26:26 +00002112card. All Windows versions starting from Windows 95 should recognize
2113and use this graphic card. For optimal performances, use 16 bit color
2114depth in the guest and the host OS.
bellard1a084f32004-05-13 22:34:49 +00002115
bellard3cb08532006-06-21 21:19:50 +00002116If you are using Windows XP as guest OS and if you want to use high
2117resolution modes which the Cirrus Logic BIOS does not support (i.e. >=
21181280x1024x16), then you should use the VESA VBE virtual graphic card
2119(option @option{-std-vga}).
2120
bellarde3371e62004-07-10 16:26:02 +00002121@subsubsection CPU usage reduction
2122
2123Windows 9x does not correctly use the CPU HLT
bellard15a34c62004-07-08 21:26:26 +00002124instruction. The result is that it takes host CPU cycles even when
2125idle. You can install the utility from
2126@url{http://www.user.cityline.ru/~maxamn/amnhltm.zip} to solve this
2127problem. Note that no such tool is needed for NT, 2000 or XP.
bellard1a084f32004-05-13 22:34:49 +00002128
bellard9d0a8e62005-07-03 17:34:05 +00002129@subsubsection Windows 2000 disk full problem
bellarde3371e62004-07-10 16:26:02 +00002130
bellard9d0a8e62005-07-03 17:34:05 +00002131Windows 2000 has a bug which gives a disk full problem during its
2132installation. When installing it, use the @option{-win2k-hack} QEMU
2133option to enable a specific workaround. After Windows 2000 is
2134installed, you no longer need this option (this option slows down the
2135IDE transfers).
bellarde3371e62004-07-10 16:26:02 +00002136
bellard6cc721c2005-07-28 22:27:28 +00002137@subsubsection Windows 2000 shutdown
2138
2139Windows 2000 cannot automatically shutdown in QEMU although Windows 98
2140can. It comes from the fact that Windows 2000 does not automatically
2141use the APM driver provided by the BIOS.
2142
2143In order to correct that, do the following (thanks to Struan
2144Bartlett): go to the Control Panel => Add/Remove Hardware & Next =>
2145Add/Troubleshoot a device => Add a new device & Next => No, select the
2146hardware from a list & Next => NT Apm/Legacy Support & Next => Next
2147(again) a few times. Now the driver is installed and Windows 2000 now
ths5fafdf22007-09-16 21:08:06 +00002148correctly instructs QEMU to shutdown at the appropriate moment.
bellard6cc721c2005-07-28 22:27:28 +00002149
2150@subsubsection Share a directory between Unix and Windows
2151
2152See @ref{sec_invocation} about the help of the option @option{-smb}.
2153
bellard2192c332006-08-21 20:28:18 +00002154@subsubsection Windows XP security problem
bellarde3371e62004-07-10 16:26:02 +00002155
2156Some releases of Windows XP install correctly but give a security
2157error when booting:
2158@example
2159A problem is preventing Windows from accurately checking the
2160license for this computer. Error code: 0x800703e6.
2161@end example
bellarde3371e62004-07-10 16:26:02 +00002162
bellard2192c332006-08-21 20:28:18 +00002163The workaround is to install a service pack for XP after a boot in safe
2164mode. Then reboot, and the problem should go away. Since there is no
2165network while in safe mode, its recommended to download the full
2166installation of SP1 or SP2 and transfer that via an ISO or using the
2167vvfat block device ("-hdb fat:directory_which_holds_the_SP").
bellarde3371e62004-07-10 16:26:02 +00002168
bellarda0a821a2004-07-14 17:38:57 +00002169@subsection MS-DOS and FreeDOS
2170
2171@subsubsection CPU usage reduction
2172
2173DOS does not correctly use the CPU HLT instruction. The result is that
2174it takes host CPU cycles even when idle. You can install the utility
2175from @url{http://www.vmware.com/software/dosidle210.zip} to solve this
2176problem.
2177
bellarddebc7062006-04-30 21:58:41 +00002178@node QEMU System emulator for non PC targets
bellard3f9f3aa2005-12-18 20:11:37 +00002179@chapter QEMU System emulator for non PC targets
2180
2181QEMU is a generic emulator and it emulates many non PC
2182machines. Most of the options are similar to the PC emulator. The
ths4be456f2007-06-03 13:41:28 +00002183differences are mentioned in the following sections.
bellard3f9f3aa2005-12-18 20:11:37 +00002184
bellarddebc7062006-04-30 21:58:41 +00002185@menu
2186* QEMU PowerPC System emulator::
ths24d4de42007-07-11 10:24:28 +00002187* Sparc32 System emulator::
2188* Sparc64 System emulator::
2189* MIPS System emulator::
2190* ARM System emulator::
2191* ColdFire System emulator::
bellarddebc7062006-04-30 21:58:41 +00002192@end menu
2193
2194@node QEMU PowerPC System emulator
bellard3f9f3aa2005-12-18 20:11:37 +00002195@section QEMU PowerPC System emulator
bellard52c00a52004-04-25 21:27:03 +00002196
2197Use the executable @file{qemu-system-ppc} to simulate a complete PREP
bellard15a34c62004-07-08 21:26:26 +00002198or PowerMac PowerPC system.
2199
bellardb671f9e2005-04-30 15:08:33 +00002200QEMU emulates the following PowerMac peripherals:
bellard15a34c62004-07-08 21:26:26 +00002201
2202@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00002203@item
2204UniNorth PCI Bridge
bellard15a34c62004-07-08 21:26:26 +00002205@item
2206PCI VGA compatible card with VESA Bochs Extensions
ths5fafdf22007-09-16 21:08:06 +00002207@item
bellard15a34c62004-07-08 21:26:26 +000022082 PMAC IDE interfaces with hard disk and CD-ROM support
ths5fafdf22007-09-16 21:08:06 +00002209@item
bellard15a34c62004-07-08 21:26:26 +00002210NE2000 PCI adapters
2211@item
2212Non Volatile RAM
2213@item
2214VIA-CUDA with ADB keyboard and mouse.
2215@end itemize
bellard52c00a52004-04-25 21:27:03 +00002216
bellardb671f9e2005-04-30 15:08:33 +00002217QEMU emulates the following PREP peripherals:
bellard52c00a52004-04-25 21:27:03 +00002218
2219@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00002220@item
bellard15a34c62004-07-08 21:26:26 +00002221PCI Bridge
2222@item
2223PCI VGA compatible card with VESA Bochs Extensions
ths5fafdf22007-09-16 21:08:06 +00002224@item
bellard52c00a52004-04-25 21:27:03 +000022252 IDE interfaces with hard disk and CD-ROM support
2226@item
2227Floppy disk
ths5fafdf22007-09-16 21:08:06 +00002228@item
bellard15a34c62004-07-08 21:26:26 +00002229NE2000 network adapters
bellard52c00a52004-04-25 21:27:03 +00002230@item
2231Serial port
2232@item
2233PREP Non Volatile RAM
bellard15a34c62004-07-08 21:26:26 +00002234@item
2235PC compatible keyboard and mouse.
bellard52c00a52004-04-25 21:27:03 +00002236@end itemize
2237
bellard15a34c62004-07-08 21:26:26 +00002238QEMU uses the Open Hack'Ware Open Firmware Compatible BIOS available at
bellard3f9f3aa2005-12-18 20:11:37 +00002239@url{http://perso.magic.fr/l_indien/OpenHackWare/index.htm}.
bellard52c00a52004-04-25 21:27:03 +00002240
bellard15a34c62004-07-08 21:26:26 +00002241@c man begin OPTIONS
2242
2243The following options are specific to the PowerPC emulation:
2244
2245@table @option
2246
ths3b46e622007-09-17 08:09:54 +00002247@item -g WxH[xDEPTH]
bellard15a34c62004-07-08 21:26:26 +00002248
2249Set the initial VGA graphic mode. The default is 800x600x15.
2250
2251@end table
2252
ths5fafdf22007-09-16 21:08:06 +00002253@c man end
bellard15a34c62004-07-08 21:26:26 +00002254
2255
bellard52c00a52004-04-25 21:27:03 +00002256More information is available at
bellard3f9f3aa2005-12-18 20:11:37 +00002257@url{http://perso.magic.fr/l_indien/qemu-ppc/}.
bellard52c00a52004-04-25 21:27:03 +00002258
ths24d4de42007-07-11 10:24:28 +00002259@node Sparc32 System emulator
2260@section Sparc32 System emulator
bellarde80cfcf2004-12-19 23:18:01 +00002261
blueswir134a3d232008-10-04 20:43:39 +00002262Use the executable @file{qemu-system-sparc} to simulate the following
2263Sun4m architecture machines:
2264@itemize @minus
2265@item
2266SPARCstation 4
2267@item
2268SPARCstation 5
2269@item
2270SPARCstation 10
2271@item
2272SPARCstation 20
2273@item
2274SPARCserver 600MP
2275@item
2276SPARCstation LX
2277@item
2278SPARCstation Voyager
2279@item
2280SPARCclassic
2281@item
2282SPARCbook
2283@end itemize
bellarde80cfcf2004-12-19 23:18:01 +00002284
blueswir134a3d232008-10-04 20:43:39 +00002285The emulation is somewhat complete. SMP up to 16 CPUs is supported,
2286but Linux limits the number of usable CPUs to 4.
2287
2288It's also possible to simulate a SPARCstation 2 (sun4c architecture),
2289SPARCserver 1000, or SPARCcenter 2000 (sun4d architecture), but these
2290emulators are not usable yet.
2291
2292QEMU emulates the following sun4m/sun4c/sun4d peripherals:
bellarde80cfcf2004-12-19 23:18:01 +00002293
2294@itemize @minus
bellard34751872005-07-02 14:31:34 +00002295@item
blueswir17d858922007-12-28 20:57:43 +00002296IOMMU or IO-UNITs
bellarde80cfcf2004-12-19 23:18:01 +00002297@item
2298TCX Frame buffer
ths5fafdf22007-09-16 21:08:06 +00002299@item
bellarde80cfcf2004-12-19 23:18:01 +00002300Lance (Am7990) Ethernet
2301@item
blueswir134a3d232008-10-04 20:43:39 +00002302Non Volatile RAM M48T02/M48T08
bellarde80cfcf2004-12-19 23:18:01 +00002303@item
bellard34751872005-07-02 14:31:34 +00002304Slave I/O: timers, interrupt controllers, Zilog serial ports, keyboard
2305and power/reset logic
2306@item
2307ESP SCSI controller with hard disk and CD-ROM support
2308@item
blueswir16a3b9cc2007-11-11 17:56:38 +00002309Floppy drive (not on SS-600MP)
blueswir1a2502b52007-06-10 17:01:00 +00002310@item
2311CS4231 sound device (only on SS-5, not working yet)
bellarde80cfcf2004-12-19 23:18:01 +00002312@end itemize
2313
blueswir16a3b9cc2007-11-11 17:56:38 +00002314The number of peripherals is fixed in the architecture. Maximum
2315memory size depends on the machine type, for SS-5 it is 256MB and for
blueswir17d858922007-12-28 20:57:43 +00002316others 2047MB.
bellarde80cfcf2004-12-19 23:18:01 +00002317
bellard30a604f2006-06-14 18:35:18 +00002318Since version 0.8.2, QEMU uses OpenBIOS
bellard0986ac32006-06-14 12:36:32 +00002319@url{http://www.openbios.org/}. OpenBIOS is a free (GPL v2) portable
2320firmware implementation. The goal is to implement a 100% IEEE
23211275-1994 (referred to as Open Firmware) compliant firmware.
bellard34751872005-07-02 14:31:34 +00002322
2323A sample Linux 2.6 series kernel and ram disk image are available on
blueswir134a3d232008-10-04 20:43:39 +00002324the QEMU web site. There are still issues with NetBSD and OpenBSD, but
2325some kernel versions work. Please note that currently Solaris kernels
2326don't work probably due to interface issues between OpenBIOS and
2327Solaris.
bellard34751872005-07-02 14:31:34 +00002328
2329@c man begin OPTIONS
2330
blueswir1a2502b52007-06-10 17:01:00 +00002331The following options are specific to the Sparc32 emulation:
bellard34751872005-07-02 14:31:34 +00002332
2333@table @option
2334
blueswir1a2502b52007-06-10 17:01:00 +00002335@item -g WxHx[xDEPTH]
bellard34751872005-07-02 14:31:34 +00002336
blueswir1a2502b52007-06-10 17:01:00 +00002337Set the initial TCX graphic mode. The default is 1024x768x8, currently
2338the only other possible mode is 1024x768x24.
bellard34751872005-07-02 14:31:34 +00002339
blueswir166508602007-05-01 14:16:52 +00002340@item -prom-env string
2341
2342Set OpenBIOS variables in NVRAM, for example:
2343
2344@example
2345qemu-system-sparc -prom-env 'auto-boot?=false' \
2346 -prom-env 'boot-device=sd(0,2,0):d' -prom-env 'boot-args=linux single'
2347@end example
2348
blueswir134a3d232008-10-04 20:43:39 +00002349@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 +00002350
2351Set the emulated machine type. Default is SS-5.
2352
bellard34751872005-07-02 14:31:34 +00002353@end table
2354
ths5fafdf22007-09-16 21:08:06 +00002355@c man end
bellard34751872005-07-02 14:31:34 +00002356
ths24d4de42007-07-11 10:24:28 +00002357@node Sparc64 System emulator
2358@section Sparc64 System emulator
bellard34751872005-07-02 14:31:34 +00002359
blueswir134a3d232008-10-04 20:43:39 +00002360Use the executable @file{qemu-system-sparc64} to simulate a Sun4u
2361(UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic
2362Niagara (T1) machine. The emulator is not usable for anything yet, but
2363it can launch some kernels.
bellardb7569212005-03-13 09:43:05 +00002364
blueswir1c7ba2182008-07-22 07:07:34 +00002365QEMU emulates the following peripherals:
bellard83469012005-07-23 14:27:54 +00002366
2367@itemize @minus
2368@item
ths5fafdf22007-09-16 21:08:06 +00002369UltraSparc IIi APB PCI Bridge
bellard83469012005-07-23 14:27:54 +00002370@item
2371PCI VGA compatible card with VESA Bochs Extensions
2372@item
blueswir134a3d232008-10-04 20:43:39 +00002373PS/2 mouse and keyboard
2374@item
bellard83469012005-07-23 14:27:54 +00002375Non Volatile RAM M48T59
2376@item
2377PC-compatible serial ports
blueswir1c7ba2182008-07-22 07:07:34 +00002378@item
23792 PCI IDE interfaces with hard disk and CD-ROM support
blueswir134a3d232008-10-04 20:43:39 +00002380@item
2381Floppy disk
bellard83469012005-07-23 14:27:54 +00002382@end itemize
2383
blueswir1c7ba2182008-07-22 07:07:34 +00002384@c man begin OPTIONS
2385
2386The following options are specific to the Sparc64 emulation:
2387
2388@table @option
2389
blueswir134a3d232008-10-04 20:43:39 +00002390@item -prom-env string
2391
2392Set OpenBIOS variables in NVRAM, for example:
2393
2394@example
2395qemu-system-sparc64 -prom-env 'auto-boot?=false'
2396@end example
2397
2398@item -M [sun4u|sun4v|Niagara]
blueswir1c7ba2182008-07-22 07:07:34 +00002399
2400Set the emulated machine type. The default is sun4u.
2401
2402@end table
2403
2404@c man end
2405
ths24d4de42007-07-11 10:24:28 +00002406@node MIPS System emulator
2407@section MIPS System emulator
bellard9d0a8e62005-07-03 17:34:05 +00002408
thsd9aedc32007-12-17 03:47:55 +00002409Four executables cover simulation of 32 and 64-bit MIPS systems in
2410both endian options, @file{qemu-system-mips}, @file{qemu-system-mipsel}
2411@file{qemu-system-mips64} and @file{qemu-system-mips64el}.
aurel3288cb0a02008-04-08 05:57:37 +00002412Five different machine types are emulated:
ths24d4de42007-07-11 10:24:28 +00002413
2414@itemize @minus
2415@item
2416A generic ISA PC-like machine "mips"
2417@item
2418The MIPS Malta prototype board "malta"
2419@item
thsd9aedc32007-12-17 03:47:55 +00002420An ACER Pica "pica61". This machine needs the 64-bit emulator.
ths6bf5b4e2007-10-17 13:08:32 +00002421@item
thsf0fc6f82007-10-17 13:39:42 +00002422MIPS emulator pseudo board "mipssim"
aurel3288cb0a02008-04-08 05:57:37 +00002423@item
2424A MIPS Magnum R4000 machine "magnum". This machine needs the 64-bit emulator.
ths24d4de42007-07-11 10:24:28 +00002425@end itemize
2426
2427The generic emulation is supported by Debian 'Etch' and is able to
2428install Debian into a virtual disk image. The following devices are
2429emulated:
bellard9d0a8e62005-07-03 17:34:05 +00002430
bellard3f9f3aa2005-12-18 20:11:37 +00002431@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00002432@item
ths6bf5b4e2007-10-17 13:08:32 +00002433A range of MIPS CPUs, default is the 24Kf
bellard3f9f3aa2005-12-18 20:11:37 +00002434@item
2435PC style serial port
2436@item
ths24d4de42007-07-11 10:24:28 +00002437PC style IDE disk
2438@item
bellard3f9f3aa2005-12-18 20:11:37 +00002439NE2000 network card
2440@end itemize
2441
ths24d4de42007-07-11 10:24:28 +00002442The Malta emulation supports the following devices:
bellard3f9f3aa2005-12-18 20:11:37 +00002443
ths24d4de42007-07-11 10:24:28 +00002444@itemize @minus
2445@item
ths0b64d002007-07-11 21:43:14 +00002446Core board with MIPS 24Kf CPU and Galileo system controller
ths24d4de42007-07-11 10:24:28 +00002447@item
2448PIIX4 PCI/USB/SMbus controller
2449@item
2450The Multi-I/O chip's serial device
2451@item
2452PCnet32 PCI network card
2453@item
2454Malta FPGA serial device
2455@item
2456Cirrus VGA graphics card
2457@end itemize
2458
2459The ACER Pica emulation supports:
2460
2461@itemize @minus
2462@item
2463MIPS R4000 CPU
2464@item
2465PC-style IRQ and DMA controllers
2466@item
2467PC Keyboard
2468@item
2469IDE controller
2470@end itemize
2471
thsf0fc6f82007-10-17 13:39:42 +00002472The mipssim pseudo board emulation provides an environment similiar
2473to what the proprietary MIPS emulator uses for running Linux.
2474It supports:
ths6bf5b4e2007-10-17 13:08:32 +00002475
2476@itemize @minus
2477@item
2478A range of MIPS CPUs, default is the 24Kf
2479@item
2480PC style serial port
2481@item
2482MIPSnet network emulation
2483@end itemize
2484
aurel3288cb0a02008-04-08 05:57:37 +00002485The MIPS Magnum R4000 emulation supports:
2486
2487@itemize @minus
2488@item
2489MIPS R4000 CPU
2490@item
2491PC-style IRQ controller
2492@item
2493PC Keyboard
2494@item
2495SCSI controller
2496@item
2497G364 framebuffer
2498@end itemize
2499
2500
ths24d4de42007-07-11 10:24:28 +00002501@node ARM System emulator
2502@section ARM System emulator
bellard3f9f3aa2005-12-18 20:11:37 +00002503
2504Use the executable @file{qemu-system-arm} to simulate a ARM
2505machine. The ARM Integrator/CP board is emulated with the following
2506devices:
2507
2508@itemize @minus
2509@item
pbrook9ee6e8b2007-11-11 00:04:49 +00002510ARM926E, ARM1026E, ARM946E, ARM1136 or Cortex-A8 CPU
bellard3f9f3aa2005-12-18 20:11:37 +00002511@item
2512Two PL011 UARTs
ths5fafdf22007-09-16 21:08:06 +00002513@item
bellard3f9f3aa2005-12-18 20:11:37 +00002514SMC 91c111 Ethernet adapter
pbrook00a9bf12006-05-13 16:55:46 +00002515@item
2516PL110 LCD controller
2517@item
2518PL050 KMI with PS/2 keyboard and mouse.
pbrooka1bb27b2007-04-06 16:49:48 +00002519@item
2520PL181 MultiMedia Card Interface with SD card.
pbrook00a9bf12006-05-13 16:55:46 +00002521@end itemize
2522
2523The ARM Versatile baseboard is emulated with the following devices:
2524
2525@itemize @minus
2526@item
pbrook9ee6e8b2007-11-11 00:04:49 +00002527ARM926E, ARM1136 or Cortex-A8 CPU
pbrook00a9bf12006-05-13 16:55:46 +00002528@item
2529PL190 Vectored Interrupt Controller
2530@item
2531Four PL011 UARTs
ths5fafdf22007-09-16 21:08:06 +00002532@item
pbrook00a9bf12006-05-13 16:55:46 +00002533SMC 91c111 Ethernet adapter
2534@item
2535PL110 LCD controller
2536@item
2537PL050 KMI with PS/2 keyboard and mouse.
2538@item
2539PCI host bridge. Note the emulated PCI bridge only provides access to
2540PCI memory space. It does not provide access to PCI IO space.
ths4be456f2007-06-03 13:41:28 +00002541This means some devices (eg. ne2k_pci NIC) are not usable, and others
2542(eg. rtl8139 NIC) are only usable when the guest drivers use the memory
pbrook00a9bf12006-05-13 16:55:46 +00002543mapped control registers.
pbrooke6de1ba2006-06-16 21:48:48 +00002544@item
2545PCI OHCI USB controller.
2546@item
2547LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices.
pbrooka1bb27b2007-04-06 16:49:48 +00002548@item
2549PL181 MultiMedia Card Interface with SD card.
bellard3f9f3aa2005-12-18 20:11:37 +00002550@end itemize
2551
pbrookd7739d72007-02-28 16:25:17 +00002552The ARM RealView Emulation baseboard is emulated with the following devices:
2553
2554@itemize @minus
2555@item
pbrook9ee6e8b2007-11-11 00:04:49 +00002556ARM926E, ARM1136, ARM11MPCORE(x4) or Cortex-A8 CPU
pbrookd7739d72007-02-28 16:25:17 +00002557@item
2558ARM AMBA Generic/Distributed Interrupt Controller
2559@item
2560Four PL011 UARTs
ths5fafdf22007-09-16 21:08:06 +00002561@item
pbrookd7739d72007-02-28 16:25:17 +00002562SMC 91c111 Ethernet adapter
2563@item
2564PL110 LCD controller
2565@item
2566PL050 KMI with PS/2 keyboard and mouse
2567@item
2568PCI host bridge
2569@item
2570PCI OHCI USB controller
2571@item
2572LSI53C895A PCI SCSI Host Bus Adapter with hard disk and CD-ROM devices
pbrooka1bb27b2007-04-06 16:49:48 +00002573@item
2574PL181 MultiMedia Card Interface with SD card.
pbrookd7739d72007-02-28 16:25:17 +00002575@end itemize
2576
balrogb00052e2007-04-30 02:22:06 +00002577The XScale-based clamshell PDA models ("Spitz", "Akita", "Borzoi"
2578and "Terrier") emulation includes the following peripherals:
2579
2580@itemize @minus
2581@item
2582Intel PXA270 System-on-chip (ARM V5TE core)
2583@item
2584NAND Flash memory
2585@item
2586IBM/Hitachi DSCM microdrive in a PXA PCMCIA slot - not in "Akita"
2587@item
2588On-chip OHCI USB controller
2589@item
2590On-chip LCD controller
2591@item
2592On-chip Real Time Clock
2593@item
2594TI ADS7846 touchscreen controller on SSP bus
2595@item
2596Maxim MAX1111 analog-digital converter on I@math{^2}C bus
2597@item
2598GPIO-connected keyboard controller and LEDs
2599@item
balrog549444e2007-05-01 17:53:37 +00002600Secure Digital card connected to PXA MMC/SD host
balrogb00052e2007-04-30 02:22:06 +00002601@item
2602Three on-chip UARTs
2603@item
2604WM8750 audio CODEC on I@math{^2}C and I@math{^2}S busses
2605@end itemize
2606
balrog02645922007-11-03 12:50:46 +00002607The Palm Tungsten|E PDA (codename "Cheetah") emulation includes the
2608following elements:
2609
2610@itemize @minus
2611@item
2612Texas Instruments OMAP310 System-on-chip (ARM 925T core)
2613@item
2614ROM and RAM memories (ROM firmware image can be loaded with -option-rom)
2615@item
2616On-chip LCD controller
2617@item
2618On-chip Real Time Clock
2619@item
2620TI TSC2102i touchscreen controller / analog-digital converter / Audio
2621CODEC, connected through MicroWire and I@math{^2}S busses
2622@item
2623GPIO-connected matrix keypad
2624@item
2625Secure Digital card connected to OMAP MMC/SD host
2626@item
2627Three on-chip UARTs
2628@end itemize
2629
balrogc30bb262008-05-18 13:01:40 +00002630Nokia N800 and N810 internet tablets (known also as RX-34 and RX-44 / 48)
2631emulation supports the following elements:
2632
2633@itemize @minus
2634@item
2635Texas Instruments OMAP2420 System-on-chip (ARM 1136 core)
2636@item
2637RAM and non-volatile OneNAND Flash memories
2638@item
2639Display connected to EPSON remote framebuffer chip and OMAP on-chip
2640display controller and a LS041y3 MIPI DBI-C controller
2641@item
2642TI TSC2301 (in N800) and TI TSC2005 (in N810) touchscreen controllers
2643driven through SPI bus
2644@item
2645National Semiconductor LM8323-controlled qwerty keyboard driven
2646through I@math{^2}C bus
2647@item
2648Secure Digital card connected to OMAP MMC/SD host
2649@item
2650Three OMAP on-chip UARTs and on-chip STI debugging console
2651@item
2652Mentor Graphics "Inventra" dual-role USB controller embedded in a TI
2653TUSB6010 chip - only USB host mode is supported
2654@item
2655TI TMP105 temperature sensor driven through I@math{^2}C bus
2656@item
2657TI TWL92230C power management companion with an RTC on I@math{^2}C bus
2658@item
2659Nokia RETU and TAHVO multi-purpose chips with an RTC, connected
2660through CBUS
2661@end itemize
2662
pbrook9ee6e8b2007-11-11 00:04:49 +00002663The Luminary Micro Stellaris LM3S811EVB emulation includes the following
2664devices:
2665
2666@itemize @minus
2667@item
2668Cortex-M3 CPU core.
2669@item
267064k Flash and 8k SRAM.
2671@item
2672Timers, UARTs, ADC and I@math{^2}C interface.
2673@item
2674OSRAM Pictiva 96x16 OLED with SSD0303 controller on I@math{^2}C bus.
2675@end itemize
2676
2677The Luminary Micro Stellaris LM3S6965EVB emulation includes the following
2678devices:
2679
2680@itemize @minus
2681@item
2682Cortex-M3 CPU core.
2683@item
2684256k Flash and 64k SRAM.
2685@item
2686Timers, UARTs, ADC, I@math{^2}C and SSI interfaces.
2687@item
2688OSRAM Pictiva 128x64 OLED with SSD0323 controller connected via SSI.
2689@end itemize
2690
balrog57cd6e92008-05-07 12:23:32 +00002691The Freecom MusicPal internet radio emulation includes the following
2692elements:
2693
2694@itemize @minus
2695@item
2696Marvell MV88W8618 ARM core.
2697@item
269832 MB RAM, 256 KB SRAM, 8 MB flash.
2699@item
2700Up to 2 16550 UARTs
2701@item
2702MV88W8xx8 Ethernet controller
2703@item
2704MV88W8618 audio controller, WM8750 CODEC and mixer
2705@item
2706128×64 display with brightness control
2707@item
27082 buttons, 2 navigation wheels with button function
2709@end itemize
2710
bellard3f9f3aa2005-12-18 20:11:37 +00002711A Linux 2.6 test image is available on the QEMU web site. More
2712information is available in the QEMU mailing-list archive.
2713
ths24d4de42007-07-11 10:24:28 +00002714@node ColdFire System emulator
2715@section ColdFire System emulator
pbrook209a4e62007-05-23 20:16:15 +00002716
2717Use the executable @file{qemu-system-m68k} to simulate a ColdFire machine.
2718The emulator is able to boot a uClinux kernel.
pbrook707e0112007-06-04 00:50:06 +00002719
2720The M5208EVB emulation includes the following devices:
2721
2722@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00002723@item
pbrook707e0112007-06-04 00:50:06 +00002724MCF5208 ColdFire V2 Microprocessor (ISA A+ with EMAC).
2725@item
2726Three Two on-chip UARTs.
2727@item
2728Fast Ethernet Controller (FEC)
2729@end itemize
2730
2731The AN5206 emulation includes the following devices:
pbrook209a4e62007-05-23 20:16:15 +00002732
2733@itemize @minus
ths5fafdf22007-09-16 21:08:06 +00002734@item
pbrook209a4e62007-05-23 20:16:15 +00002735MCF5206 ColdFire V2 Microprocessor.
2736@item
2737Two on-chip UARTs.
2738@end itemize
2739
ths5fafdf22007-09-16 21:08:06 +00002740@node QEMU User space emulator
2741@chapter QEMU User space emulator
bellard83195232007-02-05 19:42:07 +00002742
2743@menu
2744* Supported Operating Systems ::
2745* Linux User space emulator::
2746* Mac OS X/Darwin User space emulator ::
2747@end menu
2748
2749@node Supported Operating Systems
2750@section Supported Operating Systems
2751
2752The following OS are supported in user space emulation:
2753
2754@itemize @minus
2755@item
ths4be456f2007-06-03 13:41:28 +00002756Linux (referred as qemu-linux-user)
bellard83195232007-02-05 19:42:07 +00002757@item
ths4be456f2007-06-03 13:41:28 +00002758Mac OS X/Darwin (referred as qemu-darwin-user)
bellard83195232007-02-05 19:42:07 +00002759@end itemize
2760
2761@node Linux User space emulator
2762@section Linux User space emulator
bellard386405f2003-03-23 21:28:45 +00002763
bellarddebc7062006-04-30 21:58:41 +00002764@menu
2765* Quick Start::
2766* Wine launch::
2767* Command line options::
pbrook79737e42006-06-11 16:28:41 +00002768* Other binaries::
bellarddebc7062006-04-30 21:58:41 +00002769@end menu
2770
2771@node Quick Start
bellard83195232007-02-05 19:42:07 +00002772@subsection Quick Start
bellard386405f2003-03-23 21:28:45 +00002773
bellard1f673132004-04-04 15:21:17 +00002774In order to launch a Linux process, QEMU needs the process executable
ths5fafdf22007-09-16 21:08:06 +00002775itself and all the target (x86) dynamic libraries used by it.
bellard386405f2003-03-23 21:28:45 +00002776
bellard1f673132004-04-04 15:21:17 +00002777@itemize
bellard386405f2003-03-23 21:28:45 +00002778
bellard1f673132004-04-04 15:21:17 +00002779@item On x86, you can just try to launch any process by using the native
2780libraries:
bellard386405f2003-03-23 21:28:45 +00002781
ths5fafdf22007-09-16 21:08:06 +00002782@example
bellard1f673132004-04-04 15:21:17 +00002783qemu-i386 -L / /bin/ls
2784@end example
bellardfd429f22003-03-30 20:59:46 +00002785
bellard1f673132004-04-04 15:21:17 +00002786@code{-L /} tells that the x86 dynamic linker must be searched with a
2787@file{/} prefix.
bellard1eb20522003-06-25 16:21:49 +00002788
thsdbcf5e82007-02-10 22:14:55 +00002789@item Since QEMU is also a linux process, you can launch qemu with
2790qemu (NOTE: you can only do that if you compiled QEMU from the sources):
bellard1eb20522003-06-25 16:21:49 +00002791
ths5fafdf22007-09-16 21:08:06 +00002792@example
bellard1f673132004-04-04 15:21:17 +00002793qemu-i386 -L / qemu-i386 -L / /bin/ls
2794@end example
bellard386405f2003-03-23 21:28:45 +00002795
bellard1f673132004-04-04 15:21:17 +00002796@item On non x86 CPUs, you need first to download at least an x86 glibc
2797(@file{qemu-runtime-i386-XXX-.tar.gz} on the QEMU web page). Ensure that
2798@code{LD_LIBRARY_PATH} is not set:
bellard386405f2003-03-23 21:28:45 +00002799
bellard1f673132004-04-04 15:21:17 +00002800@example
ths5fafdf22007-09-16 21:08:06 +00002801unset LD_LIBRARY_PATH
bellard1f673132004-04-04 15:21:17 +00002802@end example
bellard386405f2003-03-23 21:28:45 +00002803
bellard1f673132004-04-04 15:21:17 +00002804Then you can launch the precompiled @file{ls} x86 executable:
bellard386405f2003-03-23 21:28:45 +00002805
bellard1f673132004-04-04 15:21:17 +00002806@example
2807qemu-i386 tests/i386/ls
2808@end example
2809You can look at @file{qemu-binfmt-conf.sh} so that
2810QEMU is automatically launched by the Linux kernel when you try to
2811launch x86 executables. It requires the @code{binfmt_misc} module in the
2812Linux kernel.
bellard386405f2003-03-23 21:28:45 +00002813
bellard1f673132004-04-04 15:21:17 +00002814@item The x86 version of QEMU is also included. You can try weird things such as:
2815@example
bellarddebc7062006-04-30 21:58:41 +00002816qemu-i386 /usr/local/qemu-i386/bin/qemu-i386 \
2817 /usr/local/qemu-i386/bin/ls-i386
bellard1f673132004-04-04 15:21:17 +00002818@end example
bellard386405f2003-03-23 21:28:45 +00002819
bellard1f673132004-04-04 15:21:17 +00002820@end itemize
bellard386405f2003-03-23 21:28:45 +00002821
bellarddebc7062006-04-30 21:58:41 +00002822@node Wine launch
bellard83195232007-02-05 19:42:07 +00002823@subsection Wine launch
bellard386405f2003-03-23 21:28:45 +00002824
bellard1f673132004-04-04 15:21:17 +00002825@itemize
bellard386405f2003-03-23 21:28:45 +00002826
bellard1f673132004-04-04 15:21:17 +00002827@item Ensure that you have a working QEMU with the x86 glibc
2828distribution (see previous section). In order to verify it, you must be
2829able to do:
bellard386405f2003-03-23 21:28:45 +00002830
bellard1f673132004-04-04 15:21:17 +00002831@example
2832qemu-i386 /usr/local/qemu-i386/bin/ls-i386
2833@end example
bellard386405f2003-03-23 21:28:45 +00002834
bellard1f673132004-04-04 15:21:17 +00002835@item Download the binary x86 Wine install
ths5fafdf22007-09-16 21:08:06 +00002836(@file{qemu-XXX-i386-wine.tar.gz} on the QEMU web page).
bellard386405f2003-03-23 21:28:45 +00002837
bellard1f673132004-04-04 15:21:17 +00002838@item Configure Wine on your account. Look at the provided script
bellarddebc7062006-04-30 21:58:41 +00002839@file{/usr/local/qemu-i386/@/bin/wine-conf.sh}. Your previous
bellard1f673132004-04-04 15:21:17 +00002840@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
bellard386405f2003-03-23 21:28:45 +00002841
bellard1f673132004-04-04 15:21:17 +00002842@item Then you can try the example @file{putty.exe}:
bellard386405f2003-03-23 21:28:45 +00002843
bellard1f673132004-04-04 15:21:17 +00002844@example
bellarddebc7062006-04-30 21:58:41 +00002845qemu-i386 /usr/local/qemu-i386/wine/bin/wine \
2846 /usr/local/qemu-i386/wine/c/Program\ Files/putty.exe
bellard1f673132004-04-04 15:21:17 +00002847@end example
bellard386405f2003-03-23 21:28:45 +00002848
bellard1f673132004-04-04 15:21:17 +00002849@end itemize
bellard386405f2003-03-23 21:28:45 +00002850
bellarddebc7062006-04-30 21:58:41 +00002851@node Command line options
bellard83195232007-02-05 19:42:07 +00002852@subsection Command line options
bellard386405f2003-03-23 21:28:45 +00002853
bellard1f673132004-04-04 15:21:17 +00002854@example
blueswir134a3d232008-10-04 20:43:39 +00002855usage: qemu-i386 [-h] [-d] [-L path] [-s size] [-cpu model] [-g port] program [arguments...]
bellard1f673132004-04-04 15:21:17 +00002856@end example
bellard386405f2003-03-23 21:28:45 +00002857
bellard1f673132004-04-04 15:21:17 +00002858@table @option
2859@item -h
2860Print the help
ths3b46e622007-09-17 08:09:54 +00002861@item -L path
bellard1f673132004-04-04 15:21:17 +00002862Set the x86 elf interpreter prefix (default=/usr/local/qemu-i386)
2863@item -s size
2864Set the x86 stack size in bytes (default=524288)
blueswir134a3d232008-10-04 20:43:39 +00002865@item -cpu model
2866Select CPU model (-cpu ? for list and additional feature selection)
bellard386405f2003-03-23 21:28:45 +00002867@end table
2868
bellard1f673132004-04-04 15:21:17 +00002869Debug options:
bellard386405f2003-03-23 21:28:45 +00002870
bellard1f673132004-04-04 15:21:17 +00002871@table @option
2872@item -d
2873Activate log (logfile=/tmp/qemu.log)
2874@item -p pagesize
2875Act as if the host page size was 'pagesize' bytes
blueswir134a3d232008-10-04 20:43:39 +00002876@item -g port
2877Wait gdb connection to port
bellard1f673132004-04-04 15:21:17 +00002878@end table
bellard386405f2003-03-23 21:28:45 +00002879
balrogb01bcae2007-12-16 13:05:59 +00002880Environment variables:
2881
2882@table @env
2883@item QEMU_STRACE
2884Print system calls and arguments similar to the 'strace' program
2885(NOTE: the actual 'strace' program will not work because the user
2886space emulator hasn't implemented ptrace). At the moment this is
2887incomplete. All system calls that don't have a specific argument
2888format are printed with information for six arguments. Many
2889flag-style arguments don't have decoders and will show up as numbers.
ths5cfdf932007-12-17 03:38:26 +00002890@end table
balrogb01bcae2007-12-16 13:05:59 +00002891
pbrook79737e42006-06-11 16:28:41 +00002892@node Other binaries
bellard83195232007-02-05 19:42:07 +00002893@subsection Other binaries
pbrook79737e42006-06-11 16:28:41 +00002894
2895@command{qemu-arm} is also capable of running ARM "Angel" semihosted ELF
2896binaries (as implemented by the arm-elf and arm-eabi Newlib/GDB
2897configurations), and arm-uclinux bFLT format binaries.
2898
pbrooke6e59062006-10-22 00:18:54 +00002899@command{qemu-m68k} is capable of running semihosted binaries using the BDM
2900(m5xxx-ram-hosted.ld) or m68k-sim (sim.ld) syscall interfaces, and
2901coldfire uClinux bFLT format binaries.
2902
pbrook79737e42006-06-11 16:28:41 +00002903The binary format is detected automatically.
2904
blueswir134a3d232008-10-04 20:43:39 +00002905@command{qemu-sparc} can execute Sparc32 binaries (Sparc32 CPU, 32 bit ABI).
2906
blueswir1a785e422007-10-20 08:09:05 +00002907@command{qemu-sparc32plus} can execute Sparc32 and SPARC32PLUS binaries
2908(Sparc64 CPU, 32 bit ABI).
2909
2910@command{qemu-sparc64} can execute some Sparc64 (Sparc64 CPU, 64 bit ABI) and
2911SPARC32PLUS binaries (Sparc64 CPU, 32 bit ABI).
2912
bellard83195232007-02-05 19:42:07 +00002913@node Mac OS X/Darwin User space emulator
2914@section Mac OS X/Darwin User space emulator
2915
2916@menu
2917* Mac OS X/Darwin Status::
2918* Mac OS X/Darwin Quick Start::
2919* Mac OS X/Darwin Command line options::
2920@end menu
2921
2922@node Mac OS X/Darwin Status
2923@subsection Mac OS X/Darwin Status
2924
2925@itemize @minus
2926@item
2927target x86 on x86: Most apps (Cocoa and Carbon too) works. [1]
2928@item
2929target PowerPC on x86: Not working as the ppc commpage can't be mapped (yet!)
2930@item
thsdbcf5e82007-02-10 22:14:55 +00002931target PowerPC on PowerPC: Most apps (Cocoa and Carbon too) works. [1]
bellard83195232007-02-05 19:42:07 +00002932@item
2933target x86 on PowerPC: most utilities work. Cocoa and Carbon apps are not yet supported.
2934@end itemize
2935
2936[1] If you're host commpage can be executed by qemu.
2937
2938@node Mac OS X/Darwin Quick Start
2939@subsection Quick Start
2940
2941In order to launch a Mac OS X/Darwin process, QEMU needs the process executable
2942itself and all the target dynamic libraries used by it. If you don't have the FAT
2943libraries (you're running Mac OS X/ppc) you'll need to obtain it from a Mac OS X
2944CD or compile them by hand.
2945
2946@itemize
2947
2948@item On x86, you can just try to launch any process by using the native
2949libraries:
2950
ths5fafdf22007-09-16 21:08:06 +00002951@example
thsdbcf5e82007-02-10 22:14:55 +00002952qemu-i386 /bin/ls
bellard83195232007-02-05 19:42:07 +00002953@end example
2954
2955or to run the ppc version of the executable:
2956
ths5fafdf22007-09-16 21:08:06 +00002957@example
thsdbcf5e82007-02-10 22:14:55 +00002958qemu-ppc /bin/ls
bellard83195232007-02-05 19:42:07 +00002959@end example
2960
2961@item On ppc, you'll have to tell qemu where your x86 libraries (and dynamic linker)
2962are installed:
2963
ths5fafdf22007-09-16 21:08:06 +00002964@example
thsdbcf5e82007-02-10 22:14:55 +00002965qemu-i386 -L /opt/x86_root/ /bin/ls
bellard83195232007-02-05 19:42:07 +00002966@end example
2967
2968@code{-L /opt/x86_root/} tells that the dynamic linker (dyld) path is in
2969@file{/opt/x86_root/usr/bin/dyld}.
2970
2971@end itemize
2972
2973@node Mac OS X/Darwin Command line options
2974@subsection Command line options
2975
2976@example
thsdbcf5e82007-02-10 22:14:55 +00002977usage: qemu-i386 [-h] [-d] [-L path] [-s size] program [arguments...]
bellard83195232007-02-05 19:42:07 +00002978@end example
2979
2980@table @option
2981@item -h
2982Print the help
ths3b46e622007-09-17 08:09:54 +00002983@item -L path
bellard83195232007-02-05 19:42:07 +00002984Set the library root path (default=/)
2985@item -s size
2986Set the stack size in bytes (default=524288)
2987@end table
2988
2989Debug options:
2990
2991@table @option
2992@item -d
2993Activate log (logfile=/tmp/qemu.log)
2994@item -p pagesize
2995Act as if the host page size was 'pagesize' bytes
2996@end table
2997
bellard15a34c62004-07-08 21:26:26 +00002998@node compilation
2999@chapter Compilation from the sources
3000
bellarddebc7062006-04-30 21:58:41 +00003001@menu
3002* Linux/Unix::
3003* Windows::
3004* Cross compilation for Windows with Linux::
3005* Mac OS X::
3006@end menu
3007
3008@node Linux/Unix
bellard7c3fc842005-02-10 21:46:47 +00003009@section Linux/Unix
bellard15a34c62004-07-08 21:26:26 +00003010
bellard7c3fc842005-02-10 21:46:47 +00003011@subsection Compilation
3012
3013First you must decompress the sources:
3014@example
3015cd /tmp
3016tar zxvf qemu-x.y.z.tar.gz
3017cd qemu-x.y.z
3018@end example
3019
3020Then you configure QEMU and build it (usually no options are needed):
3021@example
3022./configure
3023make
3024@end example
3025
3026Then type as root user:
3027@example
3028make install
3029@end example
3030to install QEMU in @file{/usr/local}.
3031
bellard4fe8b872007-02-05 19:38:35 +00003032@subsection GCC version
bellard7c3fc842005-02-10 21:46:47 +00003033
ths366dfc52006-12-11 18:35:08 +00003034In order to compile QEMU successfully, it is very important that you
bellard4fe8b872007-02-05 19:38:35 +00003035have the right tools. The most important one is gcc. On most hosts and
3036in particular on x86 ones, @emph{gcc 4.x is not supported}. If your
3037Linux distribution includes a gcc 4.x compiler, you can usually
3038install an older version (it is invoked by @code{gcc32} or
3039@code{gcc34}). The QEMU configure script automatically probes for
ths4be456f2007-06-03 13:41:28 +00003040these older versions so that usually you don't have to do anything.
bellard15a34c62004-07-08 21:26:26 +00003041
bellarddebc7062006-04-30 21:58:41 +00003042@node Windows
bellard15a34c62004-07-08 21:26:26 +00003043@section Windows
3044
3045@itemize
3046@item Install the current versions of MSYS and MinGW from
3047@url{http://www.mingw.org/}. You can find detailed installation
3048instructions in the download section and the FAQ.
3049
ths5fafdf22007-09-16 21:08:06 +00003050@item Download
bellard15a34c62004-07-08 21:26:26 +00003051the MinGW development library of SDL 1.2.x
bellarddebc7062006-04-30 21:58:41 +00003052(@file{SDL-devel-1.2.x-@/mingw32.tar.gz}) from
bellard15a34c62004-07-08 21:26:26 +00003053@url{http://www.libsdl.org}. Unpack it in a temporary place, and
3054unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool
3055directory. Edit the @file{sdl-config} script so that it gives the
3056correct SDL directory when invoked.
3057
3058@item Extract the current version of QEMU.
ths5fafdf22007-09-16 21:08:06 +00003059
bellard15a34c62004-07-08 21:26:26 +00003060@item Start the MSYS shell (file @file{msys.bat}).
3061
ths5fafdf22007-09-16 21:08:06 +00003062@item Change to the QEMU directory. Launch @file{./configure} and
bellard15a34c62004-07-08 21:26:26 +00003063@file{make}. If you have problems using SDL, verify that
3064@file{sdl-config} can be launched from the MSYS command line.
3065
ths5fafdf22007-09-16 21:08:06 +00003066@item You can install QEMU in @file{Program Files/Qemu} by typing
bellard15a34c62004-07-08 21:26:26 +00003067@file{make install}. Don't forget to copy @file{SDL.dll} in
3068@file{Program Files/Qemu}.
3069
3070@end itemize
3071
bellarddebc7062006-04-30 21:58:41 +00003072@node Cross compilation for Windows with Linux
bellard15a34c62004-07-08 21:26:26 +00003073@section Cross compilation for Windows with Linux
3074
3075@itemize
3076@item
3077Install the MinGW cross compilation tools available at
3078@url{http://www.mingw.org/}.
3079
ths5fafdf22007-09-16 21:08:06 +00003080@item
bellard15a34c62004-07-08 21:26:26 +00003081Install the Win32 version of SDL (@url{http://www.libsdl.org}) by
3082unpacking @file{i386-mingw32msvc.tar.gz}. Set up the PATH environment
3083variable so that @file{i386-mingw32msvc-sdl-config} can be launched by
3084the QEMU configuration script.
3085
ths5fafdf22007-09-16 21:08:06 +00003086@item
bellard15a34c62004-07-08 21:26:26 +00003087Configure QEMU for Windows cross compilation:
3088@example
3089./configure --enable-mingw32
3090@end example
3091If necessary, you can change the cross-prefix according to the prefix
ths4be456f2007-06-03 13:41:28 +00003092chosen for the MinGW tools with --cross-prefix. You can also use
bellard15a34c62004-07-08 21:26:26 +00003093--prefix to set the Win32 install path.
3094
ths5fafdf22007-09-16 21:08:06 +00003095@item You can install QEMU in the installation directory by typing
bellard15a34c62004-07-08 21:26:26 +00003096@file{make install}. Don't forget to copy @file{SDL.dll} in the
ths5fafdf22007-09-16 21:08:06 +00003097installation directory.
bellard15a34c62004-07-08 21:26:26 +00003098
3099@end itemize
3100
3101Note: Currently, Wine does not seem able to launch
3102QEMU for Win32.
3103
bellarddebc7062006-04-30 21:58:41 +00003104@node Mac OS X
bellard15a34c62004-07-08 21:26:26 +00003105@section Mac OS X
3106
3107The Mac OS X patches are not fully merged in QEMU, so you should look
3108at the QEMU mailing list archive to have all the necessary
3109information.
3110
bellarddebc7062006-04-30 21:58:41 +00003111@node Index
3112@chapter Index
3113@printindex cp
3114
3115@bye